Lines Matching refs:subbuf
1579 int xdr_buf_subsegment(const struct xdr_buf *buf, struct xdr_buf *subbuf, in xdr_buf_subsegment() argument
1582 subbuf->buflen = subbuf->len = len; in xdr_buf_subsegment()
1584 subbuf->head[0].iov_base = buf->head[0].iov_base + base; in xdr_buf_subsegment()
1585 subbuf->head[0].iov_len = min_t(unsigned int, len, in xdr_buf_subsegment()
1587 len -= subbuf->head[0].iov_len; in xdr_buf_subsegment()
1591 subbuf->head[0].iov_base = buf->head[0].iov_base; in xdr_buf_subsegment()
1592 subbuf->head[0].iov_len = 0; in xdr_buf_subsegment()
1596 subbuf->page_len = min(buf->page_len - base, len); in xdr_buf_subsegment()
1598 subbuf->page_base = base & ~PAGE_MASK; in xdr_buf_subsegment()
1599 subbuf->pages = &buf->pages[base >> PAGE_SHIFT]; in xdr_buf_subsegment()
1600 len -= subbuf->page_len; in xdr_buf_subsegment()
1604 subbuf->pages = buf->pages; in xdr_buf_subsegment()
1605 subbuf->page_base = 0; in xdr_buf_subsegment()
1606 subbuf->page_len = 0; in xdr_buf_subsegment()
1610 subbuf->tail[0].iov_base = buf->tail[0].iov_base + base; in xdr_buf_subsegment()
1611 subbuf->tail[0].iov_len = min_t(unsigned int, len, in xdr_buf_subsegment()
1613 len -= subbuf->tail[0].iov_len; in xdr_buf_subsegment()
1617 subbuf->tail[0].iov_base = buf->tail[0].iov_base; in xdr_buf_subsegment()
1618 subbuf->tail[0].iov_len = 0; in xdr_buf_subsegment()
1642 bool xdr_stream_subsegment(struct xdr_stream *xdr, struct xdr_buf *subbuf, in xdr_stream_subsegment() argument
1647 if (xdr_buf_subsegment(xdr->buf, subbuf, xdr_stream_pos(xdr), nbytes)) in xdr_stream_subsegment()
1650 if (subbuf->head[0].iov_len) in xdr_stream_subsegment()
1651 if (!__xdr_inline_decode(xdr, subbuf->head[0].iov_len)) in xdr_stream_subsegment()
1654 remaining = subbuf->page_len; in xdr_stream_subsegment()
1655 offset = subbuf->page_base; in xdr_stream_subsegment()
1713 static void __read_bytes_from_xdr_buf(const struct xdr_buf *subbuf, in __read_bytes_from_xdr_buf() argument
1718 this_len = min_t(unsigned int, len, subbuf->head[0].iov_len); in __read_bytes_from_xdr_buf()
1719 memcpy(obj, subbuf->head[0].iov_base, this_len); in __read_bytes_from_xdr_buf()
1722 this_len = min_t(unsigned int, len, subbuf->page_len); in __read_bytes_from_xdr_buf()
1723 _copy_from_pages(obj, subbuf->pages, subbuf->page_base, this_len); in __read_bytes_from_xdr_buf()
1726 this_len = min_t(unsigned int, len, subbuf->tail[0].iov_len); in __read_bytes_from_xdr_buf()
1727 memcpy(obj, subbuf->tail[0].iov_base, this_len); in __read_bytes_from_xdr_buf()
1734 struct xdr_buf subbuf; in read_bytes_from_xdr_buf() local
1737 status = xdr_buf_subsegment(buf, &subbuf, base, len); in read_bytes_from_xdr_buf()
1740 __read_bytes_from_xdr_buf(&subbuf, obj, len); in read_bytes_from_xdr_buf()
1745 static void __write_bytes_to_xdr_buf(const struct xdr_buf *subbuf, in __write_bytes_to_xdr_buf() argument
1750 this_len = min_t(unsigned int, len, subbuf->head[0].iov_len); in __write_bytes_to_xdr_buf()
1751 memcpy(subbuf->head[0].iov_base, obj, this_len); in __write_bytes_to_xdr_buf()
1754 this_len = min_t(unsigned int, len, subbuf->page_len); in __write_bytes_to_xdr_buf()
1755 _copy_to_pages(subbuf->pages, subbuf->page_base, obj, this_len); in __write_bytes_to_xdr_buf()
1758 this_len = min_t(unsigned int, len, subbuf->tail[0].iov_len); in __write_bytes_to_xdr_buf()
1759 memcpy(subbuf->tail[0].iov_base, obj, this_len); in __write_bytes_to_xdr_buf()
1766 struct xdr_buf subbuf; in write_bytes_to_xdr_buf() local
1769 status = xdr_buf_subsegment(buf, &subbuf, base, len); in write_bytes_to_xdr_buf()
1772 __write_bytes_to_xdr_buf(&subbuf, obj, len); in write_bytes_to_xdr_buf()