]> Git Repo - J-linux.git/blobdiff - include/linux/pipe_fs_i.h
fs: rename pipe_buf ->steal to ->try_steal
[J-linux.git] / include / linux / pipe_fs_i.h
index ae58fad7f1e0d8a96274cd71c77b727259a20971..0c31b94612623d33098eb93b63230195b4914462 100644 (file)
@@ -8,6 +8,7 @@
 #define PIPE_BUF_FLAG_ATOMIC   0x02    /* was atomically mapped */
 #define PIPE_BUF_FLAG_GIFT     0x04    /* page is a gift */
 #define PIPE_BUF_FLAG_PACKET   0x08    /* read() as a packet */
+#define PIPE_BUF_FLAG_CAN_MERGE        0x10    /* can merge buffers */
 
 /**
  *     struct pipe_buffer - a linux kernel pipe buffer
@@ -69,11 +70,11 @@ struct pipe_inode_info {
  * Note on the nesting of these functions:
  *
  * ->confirm()
- *     ->steal()
+ *     ->try_steal()
  *
- * That is, ->steal() must be called on a confirmed buffer.
- * See below for the meaning of each operation. Also see kerneldoc
- * in fs/pipe.c for the pipe and generic variants of these hooks.
+ * That is, ->try_steal() must be called on a confirmed buffer.  See below for
+ * the meaning of each operation.  Also see the kerneldoc in fs/pipe.c for the
+ * pipe and generic variants of these hooks.
  */
 struct pipe_buf_operations {
        /*
@@ -81,7 +82,7 @@ struct pipe_buf_operations {
         * and that the contents are good. If the pages in the pipe belong
         * to a file system, we may need to wait for IO completion in this
         * hook. Returns 0 for good, or a negative error value in case of
-        * error.
+        * error.  If not present all pages are considered good.
         */
        int (*confirm)(struct pipe_inode_info *, struct pipe_buffer *);
 
@@ -93,13 +94,13 @@ struct pipe_buf_operations {
 
        /*
         * Attempt to take ownership of the pipe buffer and its contents.
-        * ->steal() returns 0 for success, in which case the contents
-        * of the pipe (the buf->page) is locked and now completely owned
-        * by the caller. The page may then be transferred to a different
-        * mapping, the most often used case is insertion into different
-        * file address space cache.
+        * ->try_steal() returns %true for success, in which case the contents
+        * of the pipe (the buf->page) is locked and now completely owned by the
+        * caller. The page may then be transferred to a different mapping, the
+        * most often used case is insertion into different file address space
+        * cache.
         */
-       int (*steal)(struct pipe_inode_info *, struct pipe_buffer *);
+       bool (*try_steal)(struct pipe_inode_info *, struct pipe_buffer *);
 
        /*
         * Get a reference to the pipe buffer.
@@ -194,18 +195,22 @@ static inline void pipe_buf_release(struct pipe_inode_info *pipe,
 static inline int pipe_buf_confirm(struct pipe_inode_info *pipe,
                                   struct pipe_buffer *buf)
 {
+       if (!buf->ops->confirm)
+               return 0;
        return buf->ops->confirm(pipe, buf);
 }
 
 /**
- * pipe_buf_steal - attempt to take ownership of a pipe_buffer
+ * pipe_buf_try_steal - attempt to take ownership of a pipe_buffer
  * @pipe:      the pipe that the buffer belongs to
  * @buf:       the buffer to attempt to steal
  */
-static inline int pipe_buf_steal(struct pipe_inode_info *pipe,
-                                struct pipe_buffer *buf)
+static inline bool pipe_buf_try_steal(struct pipe_inode_info *pipe,
+               struct pipe_buffer *buf)
 {
-       return buf->ops->steal(pipe, buf);
+       if (!buf->ops->try_steal)
+               return false;
+       return buf->ops->try_steal(pipe, buf);
 }
 
 /* Differs from PIPE_BUF in that PIPE_SIZE is the length of the actual
@@ -229,11 +234,8 @@ void free_pipe_info(struct pipe_inode_info *);
 
 /* Generic pipe buffer ops functions */
 bool generic_pipe_buf_get(struct pipe_inode_info *, struct pipe_buffer *);
-int generic_pipe_buf_confirm(struct pipe_inode_info *, struct pipe_buffer *);
-int generic_pipe_buf_steal(struct pipe_inode_info *, struct pipe_buffer *);
-int generic_pipe_buf_nosteal(struct pipe_inode_info *, struct pipe_buffer *);
+bool generic_pipe_buf_try_steal(struct pipe_inode_info *, struct pipe_buffer *);
 void generic_pipe_buf_release(struct pipe_inode_info *, struct pipe_buffer *);
-void pipe_buf_mark_unmergeable(struct pipe_buffer *buf);
 
 extern const struct pipe_buf_operations nosteal_pipe_buf_ops;
 
This page took 0.039082 seconds and 4 git commands to generate.