Lines Matching refs:spd
174 * @spd: data to fill
177 * @spd contains a map of pages and len/offset tuples, along with
183 struct splice_pipe_desc *spd)
185 unsigned int spd_pages = spd->nr_pages;
203 buf->page = spd->pages[page_nr];
204 buf->offset = spd->partial[page_nr].offset;
205 buf->len = spd->partial[page_nr].len;
206 buf->private = spd->partial[page_nr].private;
207 buf->ops = spd->ops;
215 if (!--spd->nr_pages)
224 spd->spd_release(spd, page_nr++);
256 int splice_grow_spd(const struct pipe_inode_info *pipe, struct splice_pipe_desc *spd)
260 spd->nr_pages_max = max_usage;
264 spd->pages = kmalloc_array(max_usage, sizeof(struct page *), GFP_KERNEL);
265 spd->partial = kmalloc_array(max_usage, sizeof(struct partial_page),
268 if (spd->pages && spd->partial)
271 kfree(spd->pages);
272 kfree(spd->partial);
276 void splice_shrink_spd(struct splice_pipe_desc *spd)
278 if (spd->nr_pages_max <= PIPE_DEF_BUFFERS)
281 kfree(spd->pages);
282 kfree(spd->partial);