Lines Matching +full:min +full:- +full:len

1 // SPDX-License-Identifier: GPL-2.0-or-later
17 * netfs_extract_user_iter - Extract the pages from a user iterator into a bvec
27 * @extraction_flags can have ITER_ALLOW_P2PDMA set to request peer-to-peer DMA be
47 size_t count = orig_len, offset, len; in netfs_extract_user_iter() local
51 return -EIO; in netfs_extract_user_iter()
57 return -ENOMEM; in netfs_extract_user_iter()
61 * 0->last, we should be fine. in netfs_extract_user_iter()
64 pages = (void *)bv + bv_size - pg_size; in netfs_extract_user_iter()
68 max_pages - npages, extraction_flags, in netfs_extract_user_iter()
80 count -= ret; in netfs_extract_user_iter()
91 len = ret > PAGE_SIZE ? PAGE_SIZE : ret; in netfs_extract_user_iter()
92 bvec_set_page(bv + npages + i, *pages++, len - offset, offset); in netfs_extract_user_iter()
93 ret -= len; in netfs_extract_user_iter()
100 iov_iter_bvec(new, orig->data_source, bv, npages, orig_len - count); in netfs_extract_user_iter()
112 const struct bio_vec *bvecs = iter->bvec; in netfs_limit_bvec()
113 unsigned int nbv = iter->nr_segs, ix = 0, nsegs = 0; in netfs_limit_bvec()
114 size_t len, span = 0, n = iter->count; in netfs_limit_bvec() local
115 size_t skip = iter->iov_offset + start_offset; in netfs_limit_bvec()
123 len = bvecs[ix].bv_len; in netfs_limit_bvec()
124 if (skip < len) in netfs_limit_bvec()
126 skip -= len; in netfs_limit_bvec()
127 n -= len; in netfs_limit_bvec()
132 len = min3(n, bvecs[ix].bv_len - skip, max_size); in netfs_limit_bvec()
133 span += len; in netfs_limit_bvec()
139 n -= len; in netfs_limit_bvec()
142 return min(span, max_size); in netfs_limit_bvec()
156 loff_t pos = iter->xarray_start + iter->iov_offset; in netfs_limit_xarray()
158 size_t span = 0, n = iter->count; in netfs_limit_xarray()
160 XA_STATE(xas, iter->xarray, index); in netfs_limit_xarray()
166 max_size = min(max_size, n - start_offset); in netfs_limit_xarray()
170 size_t offset, flen, len; in netfs_limit_xarray() local
180 len = min(max_size, flen - offset); in netfs_limit_xarray()
181 span += len; in netfs_limit_xarray()
188 return min(span, max_size); in netfs_limit_xarray()
199 const struct folio_queue *folioq = iter->folioq; in netfs_limit_folioq()
201 unsigned int slot = iter->folioq_slot; in netfs_limit_folioq()
202 size_t span = 0, n = iter->count; in netfs_limit_folioq()
208 max_size = umin(max_size, n - start_offset); in netfs_limit_folioq()
211 folioq = folioq->next; in netfs_limit_folioq()
215 start_offset += iter->iov_offset; in netfs_limit_folioq()
220 span += flen - start_offset; in netfs_limit_folioq()
224 start_offset -= flen; in netfs_limit_folioq()
231 folioq = folioq->next; in netfs_limit_folioq()