mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 06:40:54 +07:00
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: Jens Axboe <jens.axboe@oracle.com>
This commit is contained in:
parent
d96e6e7164
commit
cac36bb06e
@ -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,
|
|||||||
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,
|
|||||||
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,
|
|||||||
* 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)
|
|||||||
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 = {
|
|||||||
.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,
|
|||||||
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,
|
|||||||
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;
|
||||||
|
|
||||||
|
12
fs/splice.c
12
fs/splice.c
@ -85,7 +85,7 @@ 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;
|
||||||
@ -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 = {
|
|||||||
.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,
|
|||||||
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,
|
|||||||
/*
|
/*
|
||||||
* 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,
|
|||||||
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 {
|
|||||||
/*
|
/*
|
||||||
* 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 *);
|
|||||||
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 = {
|
|||||||
.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,
|
||||||
|
Loading…
Reference in New Issue
Block a user