Lines Matching full:spd
189 * @spd: data to fill
192 * @spd contains a map of pages and len/offset tuples, along with
198 struct splice_pipe_desc *spd) in splice_to_pipe() argument
200 unsigned int spd_pages = spd->nr_pages; in splice_to_pipe()
218 buf->page = spd->pages[page_nr]; in splice_to_pipe()
219 buf->offset = spd->partial[page_nr].offset; in splice_to_pipe()
220 buf->len = spd->partial[page_nr].len; in splice_to_pipe()
221 buf->private = spd->partial[page_nr].private; in splice_to_pipe()
222 buf->ops = spd->ops; in splice_to_pipe()
230 if (!--spd->nr_pages) in splice_to_pipe()
239 spd->spd_release(spd, page_nr++); in splice_to_pipe()
270 int splice_grow_spd(const struct pipe_inode_info *pipe, struct splice_pipe_desc *spd) in splice_grow_spd() argument
274 spd->nr_pages_max = max_usage; in splice_grow_spd()
278 spd->pages = kmalloc_objs(struct page *, max_usage); in splice_grow_spd()
279 spd->partial = kmalloc_objs(struct partial_page, max_usage); in splice_grow_spd()
281 if (spd->pages && spd->partial) in splice_grow_spd()
284 kfree(spd->pages); in splice_grow_spd()
285 kfree(spd->partial); in splice_grow_spd()
289 void splice_shrink_spd(struct splice_pipe_desc *spd) in splice_shrink_spd() argument
291 if (spd->nr_pages_max <= PIPE_DEF_BUFFERS) in splice_shrink_spd()
294 kfree(spd->pages); in splice_shrink_spd()
295 kfree(spd->partial); in splice_shrink_spd()