Lines Matching defs:spd
3069 * at the end of the spd in case we error'ed out in filling the pipe.
3071 static void sock_spd_release(struct splice_pipe_desc *spd, unsigned int i)
3073 put_page(spd->pages[i]);
3095 static bool spd_can_coalesce(const struct splice_pipe_desc *spd,
3099 return spd->nr_pages &&
3100 spd->pages[spd->nr_pages - 1] == page &&
3101 (spd->partial[spd->nr_pages - 1].offset +
3102 spd->partial[spd->nr_pages - 1].len == offset);
3106 * Fill page/offset/length into spd, if it can hold more pages.
3108 static bool spd_fill_page(struct splice_pipe_desc *spd, struct page *page,
3112 if (unlikely(spd->nr_pages == MAX_SKB_FRAGS))
3120 if (spd_can_coalesce(spd, page, offset)) {
3121 spd->partial[spd->nr_pages - 1].len += *len;
3125 spd->pages[spd->nr_pages] = page;
3126 spd->partial[spd->nr_pages].len = *len;
3127 spd->partial[spd->nr_pages].offset = offset;
3128 spd->nr_pages++;
3136 struct splice_pipe_desc *spd, bool linear,
3156 if (spd_fill_page(spd, page, &flen, poff, linear, sk))
3169 * Map linear and fragment data from the skb to spd. It reports true if the
3174 struct splice_pipe_desc *spd, struct sock *sk)
3187 offset, len, spd,
3206 offset, len, spd, false, sk))
3219 if (__skb_splice_bits(iter, pipe, offset, len, spd, sk))
3236 struct splice_pipe_desc spd = {
3245 __skb_splice_bits(skb, pipe, &offset, &tlen, &spd, sk);
3247 if (spd.nr_pages)
3248 ret = splice_to_pipe(pipe, &spd);