Lines Matching refs:buf
123 struct pipe_buffer *buf) in anon_pipe_buf_release() argument
125 struct page *page = buf->page; in anon_pipe_buf_release()
139 struct pipe_buffer *buf) in anon_pipe_buf_steal() argument
141 struct page *page = buf->page; in anon_pipe_buf_steal()
164 struct pipe_buffer *buf) in generic_pipe_buf_steal() argument
166 struct page *page = buf->page; in generic_pipe_buf_steal()
192 bool generic_pipe_buf_get(struct pipe_inode_info *pipe, struct pipe_buffer *buf) in generic_pipe_buf_get() argument
194 return try_get_page(buf->page); in generic_pipe_buf_get()
208 struct pipe_buffer *buf) in generic_pipe_buf_confirm() argument
223 struct pipe_buffer *buf) in generic_pipe_buf_release() argument
225 put_page(buf->page); in generic_pipe_buf_release()
260 void pipe_buf_mark_unmergeable(struct pipe_buffer *buf) in pipe_buf_mark_unmergeable() argument
262 if (buf->ops == &anon_pipe_buf_ops) in pipe_buf_mark_unmergeable()
263 buf->ops = &anon_pipe_buf_nomerge_ops; in pipe_buf_mark_unmergeable()
266 static bool pipe_buf_can_merge(struct pipe_buffer *buf) in pipe_buf_can_merge() argument
268 return buf->ops == &anon_pipe_buf_ops; in pipe_buf_can_merge()
291 struct pipe_buffer *buf = pipe->bufs + curbuf; in pipe_read() local
292 size_t chars = buf->len; in pipe_read()
299 error = pipe_buf_confirm(pipe, buf); in pipe_read()
306 written = copy_page_to_iter(buf->page, buf->offset, chars, to); in pipe_read()
313 buf->offset += chars; in pipe_read()
314 buf->len -= chars; in pipe_read()
317 if (buf->flags & PIPE_BUF_FLAG_PACKET) { in pipe_read()
319 buf->len = 0; in pipe_read()
322 if (!buf->len) { in pipe_read()
323 pipe_buf_release(pipe, buf); in pipe_read()
405 struct pipe_buffer *buf = pipe->bufs + lastbuf; in pipe_write() local
406 int offset = buf->offset + buf->len; in pipe_write()
408 if (pipe_buf_can_merge(buf) && offset + chars <= PAGE_SIZE) { in pipe_write()
409 ret = pipe_buf_confirm(pipe, buf); in pipe_write()
413 ret = copy_page_from_iter(buf->page, offset, chars, from); in pipe_write()
419 buf->len += ret; in pipe_write()
437 struct pipe_buffer *buf = pipe->bufs + newbuf; in pipe_write() local
464 buf->page = page; in pipe_write()
465 buf->ops = &anon_pipe_buf_ops; in pipe_write()
466 buf->offset = 0; in pipe_write()
467 buf->len = copied; in pipe_write()
468 buf->flags = 0; in pipe_write()
470 buf->ops = &packet_pipe_buf_ops; in pipe_write()
471 buf->flags = PIPE_BUF_FLAG_PACKET; in pipe_write()
518 int count, buf, nrbufs; in pipe_ioctl() local
524 buf = pipe->curbuf; in pipe_ioctl()
527 count += pipe->bufs[buf].len; in pipe_ioctl()
528 buf = (buf+1) & (pipe->buffers - 1); in pipe_ioctl()
703 struct pipe_buffer *buf = pipe->bufs + i; in free_pipe_info() local
704 if (buf->ops) in free_pipe_info()
705 pipe_buf_release(pipe, buf); in free_pipe_info()