Lines Matching refs:buf
48 struct pipe_buffer *buf) in page_cache_pipe_buf_steal() argument
50 struct page *page = buf->page; in page_cache_pipe_buf_steal()
78 buf->flags |= PIPE_BUF_FLAG_LRU; in page_cache_pipe_buf_steal()
93 struct pipe_buffer *buf) in page_cache_pipe_buf_release() argument
95 put_page(buf->page); in page_cache_pipe_buf_release()
96 buf->flags &= ~PIPE_BUF_FLAG_LRU; in page_cache_pipe_buf_release()
104 struct pipe_buffer *buf) in page_cache_pipe_buf_confirm() argument
106 struct page *page = buf->page; in page_cache_pipe_buf_confirm()
149 struct pipe_buffer *buf) in user_page_pipe_buf_steal() argument
151 if (!(buf->flags & PIPE_BUF_FLAG_GIFT)) in user_page_pipe_buf_steal()
154 buf->flags |= PIPE_BUF_FLAG_LRU; in user_page_pipe_buf_steal()
155 return generic_pipe_buf_steal(pipe, buf); in user_page_pipe_buf_steal()
201 struct pipe_buffer *buf = pipe->bufs + newbuf; in splice_to_pipe() local
203 buf->page = spd->pages[page_nr]; in splice_to_pipe()
204 buf->offset = spd->partial[page_nr].offset; in splice_to_pipe()
205 buf->len = spd->partial[page_nr].len; in splice_to_pipe()
206 buf->private = spd->partial[page_nr].private; in splice_to_pipe()
207 buf->ops = spd->ops; in splice_to_pipe()
208 buf->flags = 0; in splice_to_pipe()
212 ret += buf->len; in splice_to_pipe()
229 ssize_t add_to_pipe(struct pipe_inode_info *pipe, struct pipe_buffer *buf) in add_to_pipe() argument
240 pipe->bufs[newbuf] = *buf; in add_to_pipe()
242 return buf->len; in add_to_pipe()
244 pipe_buf_release(pipe, buf); in add_to_pipe()
335 struct pipe_buffer *buf) in generic_pipe_buf_nosteal() argument
435 struct pipe_buffer *buf, struct splice_desc *sd) in pipe_to_sendpage() argument
449 return file->f_op->sendpage(file, buf->page, buf->offset, in pipe_to_sendpage()
487 struct pipe_buffer *buf = pipe->bufs + pipe->curbuf; in splice_from_pipe_feed() local
489 sd->len = buf->len; in splice_from_pipe_feed()
493 ret = pipe_buf_confirm(pipe, buf); in splice_from_pipe_feed()
500 ret = actor(pipe, buf, sd); in splice_from_pipe_feed()
504 buf->offset += ret; in splice_from_pipe_feed()
505 buf->len -= ret; in splice_from_pipe_feed()
512 if (!buf->len) { in splice_from_pipe_feed()
513 pipe_buf_release(pipe, buf); in splice_from_pipe_feed()
723 struct pipe_buffer *buf = pipe->bufs + idx; in iter_file_splice_write() local
724 size_t this_len = buf->len; in iter_file_splice_write()
732 ret = pipe_buf_confirm(pipe, buf); in iter_file_splice_write()
739 array[n].bv_page = buf->page; in iter_file_splice_write()
741 array[n].bv_offset = buf->offset; in iter_file_splice_write()
756 struct pipe_buffer *buf = pipe->bufs + pipe->curbuf; in iter_file_splice_write() local
757 if (ret >= buf->len) { in iter_file_splice_write()
758 ret -= buf->len; in iter_file_splice_write()
759 buf->len = 0; in iter_file_splice_write()
760 pipe_buf_release(pipe, buf); in iter_file_splice_write()
766 buf->offset += ret; in iter_file_splice_write()
767 buf->len -= ret; in iter_file_splice_write()
786 static int write_pipe_buf(struct pipe_inode_info *pipe, struct pipe_buffer *buf, in write_pipe_buf() argument
793 data = kmap(buf->page); in write_pipe_buf()
794 ret = __kernel_write(sd->u.file, data + buf->offset, sd->len, &tmp); in write_pipe_buf()
795 kunmap(buf->page); in write_pipe_buf()
1003 struct pipe_buffer *buf = pipe->bufs + i; in splice_direct_to_actor() local
1005 if (buf->ops) in splice_direct_to_actor()
1006 pipe_buf_release(pipe, buf); in splice_direct_to_actor()
1211 struct pipe_buffer buf = { in iter_to_pipe() local
1234 buf.page = pages[n]; in iter_to_pipe()
1235 buf.offset = start; in iter_to_pipe()
1236 buf.len = size; in iter_to_pipe()
1237 ret = add_to_pipe(pipe, &buf); in iter_to_pipe()
1253 static int pipe_to_user(struct pipe_inode_info *pipe, struct pipe_buffer *buf, in pipe_to_user() argument
1256 int n = copy_page_to_iter(buf->page, buf->offset, sd->len, sd->u.data); in pipe_to_user()