Commit cac36bb0 authored by Jens Axboe's avatar Jens Axboe

pipe: change the ->pin() operation to ->confirm()

The name 'pin' was badly chosen, it doesn't pin a pipe buffer
in the most commonly used sense in the kernel. So change the
name to 'confirm', after debating this issue with Hugh
Dickins a bit.

A good return from ->confirm() means that the buffer is really
there, and that the contents are good.
Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
parent d96e6e71
...@@ -412,7 +412,7 @@ lo_splice_actor(struct pipe_inode_info *pipe, struct pipe_buffer *buf, ...@@ -412,7 +412,7 @@ lo_splice_actor(struct pipe_inode_info *pipe, struct pipe_buffer *buf,
size_t size; size_t size;
int ret; int ret;
ret = buf->ops->pin(pipe, buf); ret = buf->ops->confirm(pipe, buf);
if (unlikely(ret)) if (unlikely(ret))
return ret; return ret;
......
...@@ -815,7 +815,7 @@ nfsd_splice_actor(struct pipe_inode_info *pipe, struct pipe_buffer *buf, ...@@ -815,7 +815,7 @@ nfsd_splice_actor(struct pipe_inode_info *pipe, struct pipe_buffer *buf,
size_t size; size_t size;
int ret; int ret;
ret = buf->ops->pin(pipe, buf); ret = buf->ops->confirm(pipe, buf);
if (unlikely(ret)) if (unlikely(ret))
return ret; return ret;
......
...@@ -1583,7 +1583,7 @@ static int ocfs2_splice_write_actor(struct pipe_inode_info *pipe, ...@@ -1583,7 +1583,7 @@ static int ocfs2_splice_write_actor(struct pipe_inode_info *pipe,
ssize_t copied = 0; ssize_t copied = 0;
struct ocfs2_splice_write_priv sp; struct ocfs2_splice_write_priv sp;
ret = buf->ops->pin(pipe, buf); ret = buf->ops->confirm(pipe, buf);
if (ret) if (ret)
goto out; goto out;
...@@ -1604,7 +1604,7 @@ static int ocfs2_splice_write_actor(struct pipe_inode_info *pipe, ...@@ -1604,7 +1604,7 @@ static int ocfs2_splice_write_actor(struct pipe_inode_info *pipe,
* might enter ocfs2_buffered_write_cluster() more * might enter ocfs2_buffered_write_cluster() more
* than once, so keep track of our progress here. * than once, so keep track of our progress here.
*/ */
copied = ocfs2_buffered_write_cluster(sd->file, copied = ocfs2_buffered_write_cluster(sd->u.file,
(loff_t)sd->pos + total, (loff_t)sd->pos + total,
count, count,
ocfs2_map_and_write_splice_data, ocfs2_map_and_write_splice_data,
......
...@@ -203,7 +203,8 @@ void generic_pipe_buf_get(struct pipe_inode_info *info, struct pipe_buffer *buf) ...@@ -203,7 +203,8 @@ void generic_pipe_buf_get(struct pipe_inode_info *info, struct pipe_buffer *buf)
page_cache_get(buf->page); page_cache_get(buf->page);
} }
int generic_pipe_buf_pin(struct pipe_inode_info *info, struct pipe_buffer *buf) int generic_pipe_buf_confirm(struct pipe_inode_info *info,
struct pipe_buffer *buf)
{ {
return 0; return 0;
} }
...@@ -212,7 +213,7 @@ static const struct pipe_buf_operations anon_pipe_buf_ops = { ...@@ -212,7 +213,7 @@ static const struct pipe_buf_operations anon_pipe_buf_ops = {
.can_merge = 1, .can_merge = 1,
.map = generic_pipe_buf_map, .map = generic_pipe_buf_map,
.unmap = generic_pipe_buf_unmap, .unmap = generic_pipe_buf_unmap,
.pin = generic_pipe_buf_pin, .confirm = generic_pipe_buf_confirm,
.release = anon_pipe_buf_release, .release = anon_pipe_buf_release,
.steal = generic_pipe_buf_steal, .steal = generic_pipe_buf_steal,
.get = generic_pipe_buf_get, .get = generic_pipe_buf_get,
...@@ -252,7 +253,7 @@ pipe_read(struct kiocb *iocb, const struct iovec *_iov, ...@@ -252,7 +253,7 @@ pipe_read(struct kiocb *iocb, const struct iovec *_iov,
if (chars > total_len) if (chars > total_len)
chars = total_len; chars = total_len;
error = ops->pin(pipe, buf); error = ops->confirm(pipe, buf);
if (error) { if (error) {
if (!ret) if (!ret)
error = ret; error = ret;
...@@ -373,7 +374,7 @@ pipe_write(struct kiocb *iocb, const struct iovec *_iov, ...@@ -373,7 +374,7 @@ pipe_write(struct kiocb *iocb, const struct iovec *_iov,
int error, atomic = 1; int error, atomic = 1;
void *addr; void *addr;
error = ops->pin(pipe, buf); error = ops->confirm(pipe, buf);
if (error) if (error)
goto out; goto out;
......
...@@ -85,8 +85,8 @@ static void page_cache_pipe_buf_release(struct pipe_inode_info *pipe, ...@@ -85,8 +85,8 @@ static void page_cache_pipe_buf_release(struct pipe_inode_info *pipe,
buf->flags &= ~PIPE_BUF_FLAG_LRU; buf->flags &= ~PIPE_BUF_FLAG_LRU;
} }
static int page_cache_pipe_buf_pin(struct pipe_inode_info *pipe, static int page_cache_pipe_buf_confirm(struct pipe_inode_info *pipe,
struct pipe_buffer *buf) struct pipe_buffer *buf)
{ {
struct page *page = buf->page; struct page *page = buf->page;
int err; int err;
...@@ -127,7 +127,7 @@ static const struct pipe_buf_operations page_cache_pipe_buf_ops = { ...@@ -127,7 +127,7 @@ static const struct pipe_buf_operations page_cache_pipe_buf_ops = {
.can_merge = 0, .can_merge = 0,
.map = generic_pipe_buf_map, .map = generic_pipe_buf_map,
.unmap = generic_pipe_buf_unmap, .unmap = generic_pipe_buf_unmap,
.pin = page_cache_pipe_buf_pin, .confirm = page_cache_pipe_buf_confirm,
.release = page_cache_pipe_buf_release, .release = page_cache_pipe_buf_release,
.steal = page_cache_pipe_buf_steal, .steal = page_cache_pipe_buf_steal,
.get = generic_pipe_buf_get, .get = generic_pipe_buf_get,
...@@ -147,7 +147,7 @@ static const struct pipe_buf_operations user_page_pipe_buf_ops = { ...@@ -147,7 +147,7 @@ static const struct pipe_buf_operations user_page_pipe_buf_ops = {
.can_merge = 0, .can_merge = 0,
.map = generic_pipe_buf_map, .map = generic_pipe_buf_map,
.unmap = generic_pipe_buf_unmap, .unmap = generic_pipe_buf_unmap,
.pin = generic_pipe_buf_pin, .confirm = generic_pipe_buf_confirm,
.release = page_cache_pipe_buf_release, .release = page_cache_pipe_buf_release,
.steal = user_page_pipe_buf_steal, .steal = user_page_pipe_buf_steal,
.get = generic_pipe_buf_get, .get = generic_pipe_buf_get,
...@@ -525,7 +525,7 @@ static int pipe_to_sendpage(struct pipe_inode_info *pipe, ...@@ -525,7 +525,7 @@ static int pipe_to_sendpage(struct pipe_inode_info *pipe,
loff_t pos = sd->pos; loff_t pos = sd->pos;
int ret, more; int ret, more;
ret = buf->ops->pin(pipe, buf); ret = buf->ops->confirm(pipe, buf);
if (!ret) { if (!ret) {
more = (sd->flags & SPLICE_F_MORE) || sd->len < sd->total_len; more = (sd->flags & SPLICE_F_MORE) || sd->len < sd->total_len;
...@@ -569,7 +569,7 @@ static int pipe_to_file(struct pipe_inode_info *pipe, struct pipe_buffer *buf, ...@@ -569,7 +569,7 @@ static int pipe_to_file(struct pipe_inode_info *pipe, struct pipe_buffer *buf,
/* /*
* make sure the data in this buffer is uptodate * make sure the data in this buffer is uptodate
*/ */
ret = buf->ops->pin(pipe, buf); ret = buf->ops->confirm(pipe, buf);
if (unlikely(ret)) if (unlikely(ret))
return ret; return ret;
...@@ -1341,7 +1341,7 @@ static int pipe_to_user(struct pipe_inode_info *pipe, struct pipe_buffer *buf, ...@@ -1341,7 +1341,7 @@ static int pipe_to_user(struct pipe_inode_info *pipe, struct pipe_buffer *buf,
char *src; char *src;
int ret; int ret;
ret = buf->ops->pin(pipe, buf); ret = buf->ops->confirm(pipe, buf);
if (unlikely(ret)) if (unlikely(ret))
return ret; return ret;
......
...@@ -35,20 +35,21 @@ struct pipe_inode_info { ...@@ -35,20 +35,21 @@ struct pipe_inode_info {
/* /*
* Note on the nesting of these functions: * Note on the nesting of these functions:
* *
* ->pin() * ->confirm()
* ->steal() * ->steal()
* ... * ...
* ->map() * ->map()
* ... * ...
* ->unmap() * ->unmap()
* *
* That is, ->map() must be called on a pinned buffer, same goes for ->steal(). * That is, ->map() must be called on a confirmed buffer,
* same goes for ->steal().
*/ */
struct pipe_buf_operations { struct pipe_buf_operations {
int can_merge; int can_merge;
void * (*map)(struct pipe_inode_info *, struct pipe_buffer *, int); void * (*map)(struct pipe_inode_info *, struct pipe_buffer *, int);
void (*unmap)(struct pipe_inode_info *, struct pipe_buffer *, void *); void (*unmap)(struct pipe_inode_info *, struct pipe_buffer *, void *);
int (*pin)(struct pipe_inode_info *, struct pipe_buffer *); int (*confirm)(struct pipe_inode_info *, struct pipe_buffer *);
void (*release)(struct pipe_inode_info *, struct pipe_buffer *); void (*release)(struct pipe_inode_info *, struct pipe_buffer *);
int (*steal)(struct pipe_inode_info *, struct pipe_buffer *); int (*steal)(struct pipe_inode_info *, struct pipe_buffer *);
void (*get)(struct pipe_inode_info *, struct pipe_buffer *); void (*get)(struct pipe_inode_info *, struct pipe_buffer *);
...@@ -69,7 +70,7 @@ void __free_pipe_info(struct pipe_inode_info *); ...@@ -69,7 +70,7 @@ void __free_pipe_info(struct pipe_inode_info *);
void *generic_pipe_buf_map(struct pipe_inode_info *, struct pipe_buffer *, int); void *generic_pipe_buf_map(struct pipe_inode_info *, struct pipe_buffer *, int);
void generic_pipe_buf_unmap(struct pipe_inode_info *, struct pipe_buffer *, void *); void generic_pipe_buf_unmap(struct pipe_inode_info *, struct pipe_buffer *, void *);
void generic_pipe_buf_get(struct pipe_inode_info *, struct pipe_buffer *); void generic_pipe_buf_get(struct pipe_inode_info *, struct pipe_buffer *);
int generic_pipe_buf_pin(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_steal(struct pipe_inode_info *, struct pipe_buffer *);
#endif #endif
...@@ -1055,7 +1055,7 @@ static struct pipe_buf_operations relay_pipe_buf_ops = { ...@@ -1055,7 +1055,7 @@ static struct pipe_buf_operations relay_pipe_buf_ops = {
.can_merge = 0, .can_merge = 0,
.map = generic_pipe_buf_map, .map = generic_pipe_buf_map,
.unmap = generic_pipe_buf_unmap, .unmap = generic_pipe_buf_unmap,
.pin = generic_pipe_buf_pin, .confirm = generic_pipe_buf_confirm,
.release = relay_pipe_buf_release, .release = relay_pipe_buf_release,
.steal = generic_pipe_buf_steal, .steal = generic_pipe_buf_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