Commit c928f642 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Al Viro

fs: rename pipe_buf ->steal to ->try_steal

And replace the arcane return value convention with a simple bool
where true means success and false means failure.

[AV: braino fix folded in]
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent b8d9e7f2
...@@ -871,7 +871,7 @@ static int pipe_to_sg(struct pipe_inode_info *pipe, struct pipe_buffer *buf, ...@@ -871,7 +871,7 @@ static int pipe_to_sg(struct pipe_inode_info *pipe, struct pipe_buffer *buf,
return 0; return 0;
/* Try lock this page */ /* Try lock this page */
if (pipe_buf_steal(pipe, buf) == 0) { if (pipe_buf_try_steal(pipe, buf)) {
/* Get reference and unlock page for moving */ /* Get reference and unlock page for moving */
get_page(buf->page); get_page(buf->page);
unlock_page(buf->page); unlock_page(buf->page);
......
...@@ -805,7 +805,7 @@ static int fuse_try_move_page(struct fuse_copy_state *cs, struct page **pagep) ...@@ -805,7 +805,7 @@ static int fuse_try_move_page(struct fuse_copy_state *cs, struct page **pagep)
if (cs->len != PAGE_SIZE) if (cs->len != PAGE_SIZE)
goto out_fallback; goto out_fallback;
if (pipe_buf_steal(cs->pipe, buf) != 0) if (!pipe_buf_try_steal(cs->pipe, buf))
goto out_fallback; goto out_fallback;
newpage = buf->page; newpage = buf->page;
......
...@@ -140,21 +140,20 @@ static void anon_pipe_buf_release(struct pipe_inode_info *pipe, ...@@ -140,21 +140,20 @@ static void anon_pipe_buf_release(struct pipe_inode_info *pipe,
put_page(page); put_page(page);
} }
static int anon_pipe_buf_steal(struct pipe_inode_info *pipe, static bool anon_pipe_buf_try_steal(struct pipe_inode_info *pipe,
struct pipe_buffer *buf) struct pipe_buffer *buf)
{ {
struct page *page = buf->page; struct page *page = buf->page;
if (page_count(page) == 1) { if (page_count(page) != 1)
return false;
memcg_kmem_uncharge_page(page, 0); memcg_kmem_uncharge_page(page, 0);
__SetPageLocked(page); __SetPageLocked(page);
return 0; return true;
}
return 1;
} }
/** /**
* generic_pipe_buf_steal - attempt to take ownership of a &pipe_buffer * generic_pipe_buf_try_steal - attempt to take ownership of a &pipe_buffer
* @pipe: the pipe that the buffer belongs to * @pipe: the pipe that the buffer belongs to
* @buf: the buffer to attempt to steal * @buf: the buffer to attempt to steal
* *
...@@ -165,7 +164,7 @@ static int anon_pipe_buf_steal(struct pipe_inode_info *pipe, ...@@ -165,7 +164,7 @@ static int anon_pipe_buf_steal(struct pipe_inode_info *pipe,
* he wishes; the typical use is insertion into a different file * he wishes; the typical use is insertion into a different file
* page cache. * page cache.
*/ */
int generic_pipe_buf_steal(struct pipe_inode_info *pipe, bool generic_pipe_buf_try_steal(struct pipe_inode_info *pipe,
struct pipe_buffer *buf) struct pipe_buffer *buf)
{ {
struct page *page = buf->page; struct page *page = buf->page;
...@@ -177,12 +176,11 @@ int generic_pipe_buf_steal(struct pipe_inode_info *pipe, ...@@ -177,12 +176,11 @@ int generic_pipe_buf_steal(struct pipe_inode_info *pipe,
*/ */
if (page_count(page) == 1) { if (page_count(page) == 1) {
lock_page(page); lock_page(page);
return 0; return true;
} }
return false;
return 1;
} }
EXPORT_SYMBOL(generic_pipe_buf_steal); EXPORT_SYMBOL(generic_pipe_buf_try_steal);
/** /**
* generic_pipe_buf_get - get a reference to a &struct pipe_buffer * generic_pipe_buf_get - get a reference to a &struct pipe_buffer
...@@ -217,7 +215,7 @@ EXPORT_SYMBOL(generic_pipe_buf_release); ...@@ -217,7 +215,7 @@ EXPORT_SYMBOL(generic_pipe_buf_release);
static const struct pipe_buf_operations anon_pipe_buf_ops = { static const struct pipe_buf_operations anon_pipe_buf_ops = {
.release = anon_pipe_buf_release, .release = anon_pipe_buf_release,
.steal = anon_pipe_buf_steal, .try_steal = anon_pipe_buf_try_steal,
.get = generic_pipe_buf_get, .get = generic_pipe_buf_get,
}; };
......
...@@ -44,7 +44,7 @@ ...@@ -44,7 +44,7 @@
* addition of remove_mapping(). If success is returned, the caller may * addition of remove_mapping(). If success is returned, the caller may
* attempt to reuse this page for another destination. * attempt to reuse this page for another destination.
*/ */
static int page_cache_pipe_buf_steal(struct pipe_inode_info *pipe, static bool page_cache_pipe_buf_try_steal(struct pipe_inode_info *pipe,
struct pipe_buffer *buf) struct pipe_buffer *buf)
{ {
struct page *page = buf->page; struct page *page = buf->page;
...@@ -76,7 +76,7 @@ static int page_cache_pipe_buf_steal(struct pipe_inode_info *pipe, ...@@ -76,7 +76,7 @@ static int page_cache_pipe_buf_steal(struct pipe_inode_info *pipe,
*/ */
if (remove_mapping(mapping, page)) { if (remove_mapping(mapping, page)) {
buf->flags |= PIPE_BUF_FLAG_LRU; buf->flags |= PIPE_BUF_FLAG_LRU;
return 0; return true;
} }
} }
...@@ -86,7 +86,7 @@ static int page_cache_pipe_buf_steal(struct pipe_inode_info *pipe, ...@@ -86,7 +86,7 @@ static int page_cache_pipe_buf_steal(struct pipe_inode_info *pipe,
*/ */
out_unlock: out_unlock:
unlock_page(page); unlock_page(page);
return 1; return false;
} }
static void page_cache_pipe_buf_release(struct pipe_inode_info *pipe, static void page_cache_pipe_buf_release(struct pipe_inode_info *pipe,
...@@ -141,23 +141,23 @@ static int page_cache_pipe_buf_confirm(struct pipe_inode_info *pipe, ...@@ -141,23 +141,23 @@ static int page_cache_pipe_buf_confirm(struct pipe_inode_info *pipe,
const struct pipe_buf_operations page_cache_pipe_buf_ops = { const struct pipe_buf_operations page_cache_pipe_buf_ops = {
.confirm = page_cache_pipe_buf_confirm, .confirm = page_cache_pipe_buf_confirm,
.release = page_cache_pipe_buf_release, .release = page_cache_pipe_buf_release,
.steal = page_cache_pipe_buf_steal, .try_steal = page_cache_pipe_buf_try_steal,
.get = generic_pipe_buf_get, .get = generic_pipe_buf_get,
}; };
static int user_page_pipe_buf_steal(struct pipe_inode_info *pipe, static bool user_page_pipe_buf_try_steal(struct pipe_inode_info *pipe,
struct pipe_buffer *buf) struct pipe_buffer *buf)
{ {
if (!(buf->flags & PIPE_BUF_FLAG_GIFT)) if (!(buf->flags & PIPE_BUF_FLAG_GIFT))
return 1; return false;
buf->flags |= PIPE_BUF_FLAG_LRU; buf->flags |= PIPE_BUF_FLAG_LRU;
return generic_pipe_buf_steal(pipe, buf); return generic_pipe_buf_try_steal(pipe, buf);
} }
static const struct pipe_buf_operations user_page_pipe_buf_ops = { static const struct pipe_buf_operations user_page_pipe_buf_ops = {
.release = page_cache_pipe_buf_release, .release = page_cache_pipe_buf_release,
.steal = user_page_pipe_buf_steal, .try_steal = user_page_pipe_buf_try_steal,
.get = generic_pipe_buf_get, .get = generic_pipe_buf_get,
}; };
...@@ -331,7 +331,7 @@ EXPORT_SYMBOL(generic_file_splice_read); ...@@ -331,7 +331,7 @@ EXPORT_SYMBOL(generic_file_splice_read);
const struct pipe_buf_operations default_pipe_buf_ops = { const struct pipe_buf_operations default_pipe_buf_ops = {
.release = generic_pipe_buf_release, .release = generic_pipe_buf_release,
.steal = generic_pipe_buf_steal, .try_steal = generic_pipe_buf_try_steal,
.get = generic_pipe_buf_get, .get = generic_pipe_buf_get,
}; };
......
...@@ -70,11 +70,11 @@ struct pipe_inode_info { ...@@ -70,11 +70,11 @@ struct pipe_inode_info {
* Note on the nesting of these functions: * Note on the nesting of these functions:
* *
* ->confirm() * ->confirm()
* ->steal() * ->try_steal()
* *
* That is, ->steal() must be called on a confirmed buffer. * That is, ->try_steal() must be called on a confirmed buffer. See below for
* See below for the meaning of each operation. Also see kerneldoc * the meaning of each operation. Also see the kerneldoc in fs/pipe.c for the
* in fs/pipe.c for the pipe and generic variants of these hooks. * pipe and generic variants of these hooks.
*/ */
struct pipe_buf_operations { struct pipe_buf_operations {
/* /*
...@@ -94,13 +94,13 @@ struct pipe_buf_operations { ...@@ -94,13 +94,13 @@ struct pipe_buf_operations {
/* /*
* Attempt to take ownership of the pipe buffer and its contents. * Attempt to take ownership of the pipe buffer and its contents.
* ->steal() returns 0 for success, in which case the contents * ->try_steal() returns %true for success, in which case the contents
* of the pipe (the buf->page) is locked and now completely owned * of the pipe (the buf->page) is locked and now completely owned by the
* by the caller. The page may then be transferred to a different * caller. The page may then be transferred to a different mapping, the
* mapping, the most often used case is insertion into different * most often used case is insertion into different file address space
* file address space cache. * 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. * Get a reference to the pipe buffer.
...@@ -201,16 +201,16 @@ static inline int pipe_buf_confirm(struct pipe_inode_info *pipe, ...@@ -201,16 +201,16 @@ static inline int pipe_buf_confirm(struct pipe_inode_info *pipe,
} }
/** /**
* 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 * @pipe: the pipe that the buffer belongs to
* @buf: the buffer to attempt to steal * @buf: the buffer to attempt to steal
*/ */
static inline int pipe_buf_steal(struct pipe_inode_info *pipe, static inline bool pipe_buf_try_steal(struct pipe_inode_info *pipe,
struct pipe_buffer *buf) struct pipe_buffer *buf)
{ {
if (!buf->ops->steal) if (!buf->ops->try_steal)
return 1; return false;
return buf->ops->steal(pipe, buf); return buf->ops->try_steal(pipe, buf);
} }
/* Differs from PIPE_BUF in that PIPE_SIZE is the length of the actual /* Differs from PIPE_BUF in that PIPE_SIZE is the length of the actual
...@@ -234,7 +234,7 @@ void free_pipe_info(struct pipe_inode_info *); ...@@ -234,7 +234,7 @@ void free_pipe_info(struct pipe_inode_info *);
/* Generic pipe buffer ops functions */ /* Generic pipe buffer ops functions */
bool generic_pipe_buf_get(struct pipe_inode_info *, struct pipe_buffer *); bool generic_pipe_buf_get(struct pipe_inode_info *, struct pipe_buffer *);
int generic_pipe_buf_steal(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 generic_pipe_buf_release(struct pipe_inode_info *, struct pipe_buffer *);
extern const struct pipe_buf_operations nosteal_pipe_buf_ops; extern const struct pipe_buf_operations nosteal_pipe_buf_ops;
......
...@@ -1178,7 +1178,7 @@ static void relay_pipe_buf_release(struct pipe_inode_info *pipe, ...@@ -1178,7 +1178,7 @@ static void relay_pipe_buf_release(struct pipe_inode_info *pipe,
static const struct pipe_buf_operations relay_pipe_buf_ops = { static const struct pipe_buf_operations relay_pipe_buf_ops = {
.release = relay_pipe_buf_release, .release = relay_pipe_buf_release,
.steal = generic_pipe_buf_steal, .try_steal = generic_pipe_buf_try_steal,
.get = generic_pipe_buf_get, .get = generic_pipe_buf_get,
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment