Lines Matching refs:uio

58 zfs_uiomove_iov(void *p, size_t n, zfs_uio_rw_t rw, zfs_uio_t *uio)  in zfs_uiomove_iov()  argument
60 const struct iovec *iov = uio->uio_iov; in zfs_uiomove_iov()
61 size_t skip = uio->uio_skip; in zfs_uiomove_iov()
64 while (n && uio->uio_resid) { in zfs_uiomove_iov()
66 switch (uio->uio_segflg) { in zfs_uiomove_iov()
77 if (uio->uio_fault_disable) { in zfs_uiomove_iov()
95 uio->uio_skip += c_bytes; in zfs_uiomove_iov()
96 ASSERT3U(uio->uio_skip, <, in zfs_uiomove_iov()
98 uio->uio_resid -= c_bytes; in zfs_uiomove_iov()
99 uio->uio_loffset += c_bytes; in zfs_uiomove_iov()
116 uio->uio_iov = (++iov); in zfs_uiomove_iov()
117 uio->uio_iovcnt--; in zfs_uiomove_iov()
119 uio->uio_skip = skip; in zfs_uiomove_iov()
120 uio->uio_resid -= cnt; in zfs_uiomove_iov()
121 uio->uio_loffset += cnt; in zfs_uiomove_iov()
129 zfs_uiomove_bvec_impl(void *p, size_t n, zfs_uio_rw_t rw, zfs_uio_t *uio) in zfs_uiomove_bvec_impl() argument
131 const struct bio_vec *bv = uio->uio_bvec; in zfs_uiomove_bvec_impl()
132 size_t skip = uio->uio_skip; in zfs_uiomove_bvec_impl()
135 while (n && uio->uio_resid) { in zfs_uiomove_bvec_impl()
152 uio->uio_bvec = (++bv); in zfs_uiomove_bvec_impl()
153 uio->uio_iovcnt--; in zfs_uiomove_bvec_impl()
155 uio->uio_skip = skip; in zfs_uiomove_bvec_impl()
156 uio->uio_resid -= cnt; in zfs_uiomove_bvec_impl()
157 uio->uio_loffset += cnt; in zfs_uiomove_bvec_impl()
187 zfs_uiomove_bvec_rq(void *p, size_t n, zfs_uio_rw_t rw, zfs_uio_t *uio) in zfs_uiomove_bvec_rq() argument
189 struct request *rq = uio->rq; in zfs_uiomove_bvec_rq()
217 if (uio->uio_loffset >= this_seg_start && in zfs_uiomove_bvec_rq()
218 uio->uio_loffset <= this_seg_end) { in zfs_uiomove_bvec_rq()
229 skip_in_seg = uio->uio_loffset - this_seg_start; in zfs_uiomove_bvec_rq()
242 uio->uio_resid -= copy_from_seg; in zfs_uiomove_bvec_rq()
243 uio->uio_loffset += copy_from_seg; in zfs_uiomove_bvec_rq()
252 uio->uio_resid = 0; in zfs_uiomove_bvec_rq()
259 zfs_uiomove_bvec(void *p, size_t n, zfs_uio_rw_t rw, zfs_uio_t *uio) in zfs_uiomove_bvec() argument
262 if (uio->rq != NULL) in zfs_uiomove_bvec()
263 return (zfs_uiomove_bvec_rq(p, n, rw, uio)); in zfs_uiomove_bvec()
265 ASSERT3P(uio->rq, ==, NULL); in zfs_uiomove_bvec()
267 return (zfs_uiomove_bvec_impl(p, n, rw, uio)); in zfs_uiomove_bvec()
272 zfs_uiomove_iter(void *p, size_t n, zfs_uio_rw_t rw, zfs_uio_t *uio, in zfs_uiomove_iter() argument
275 size_t cnt = MIN(n, uio->uio_resid); in zfs_uiomove_iter()
277 if (uio->uio_skip) in zfs_uiomove_iter()
278 iov_iter_advance(uio->uio_iter, uio->uio_skip); in zfs_uiomove_iter()
281 cnt = copy_to_iter(p, cnt, uio->uio_iter); in zfs_uiomove_iter()
283 cnt = copy_from_iter(p, cnt, uio->uio_iter); in zfs_uiomove_iter()
298 iov_iter_revert(uio->uio_iter, cnt); in zfs_uiomove_iter()
300 uio->uio_resid -= cnt; in zfs_uiomove_iter()
301 uio->uio_loffset += cnt; in zfs_uiomove_iter()
308 zfs_uiomove(void *p, size_t n, zfs_uio_rw_t rw, zfs_uio_t *uio) in zfs_uiomove() argument
310 if (uio->uio_segflg == UIO_BVEC) in zfs_uiomove()
311 return (zfs_uiomove_bvec(p, n, rw, uio)); in zfs_uiomove()
313 else if (uio->uio_segflg == UIO_ITER) in zfs_uiomove()
314 return (zfs_uiomove_iter(p, n, rw, uio, B_FALSE)); in zfs_uiomove()
317 return (zfs_uiomove_iov(p, n, rw, uio)); in zfs_uiomove()
328 zfs_uio_prefaultpages(ssize_t n, zfs_uio_t *uio) in zfs_uio_prefaultpages() argument
330 if (uio->uio_segflg == UIO_SYSSPACE || uio->uio_segflg == UIO_BVEC) { in zfs_uio_prefaultpages()
334 } else if (uio->uio_segflg == UIO_ITER) { in zfs_uio_prefaultpages()
339 if (iov_iter_fault_in_readable(uio->uio_iter, n)) in zfs_uio_prefaultpages()
344 ASSERT3S(uio->uio_segflg, ==, UIO_USERSPACE); in zfs_uio_prefaultpages()
345 const struct iovec *iov = uio->uio_iov; in zfs_uio_prefaultpages()
346 int iovcnt = uio->uio_iovcnt; in zfs_uio_prefaultpages()
347 size_t skip = uio->uio_skip; in zfs_uio_prefaultpages()
382 zfs_uiocopy(void *p, size_t n, zfs_uio_rw_t rw, zfs_uio_t *uio, size_t *cbytes) in zfs_uiocopy() argument
387 memcpy(&uio_copy, uio, sizeof (zfs_uio_t)); in zfs_uiocopy()
389 if (uio->uio_segflg == UIO_BVEC) in zfs_uiocopy()
392 else if (uio->uio_segflg == UIO_ITER) in zfs_uiocopy()
398 *cbytes = uio->uio_resid - uio_copy.uio_resid; in zfs_uiocopy()
408 zfs_uioskip(zfs_uio_t *uio, size_t n) in zfs_uioskip() argument
410 if (n > uio->uio_resid) in zfs_uioskip()
419 if (uio->uio_segflg == UIO_BVEC && uio->rq == NULL) { in zfs_uioskip()
420 uio->uio_skip += n; in zfs_uioskip()
421 while (uio->uio_iovcnt && in zfs_uioskip()
422 uio->uio_skip >= uio->uio_bvec->bv_len) { in zfs_uioskip()
423 uio->uio_skip -= uio->uio_bvec->bv_len; in zfs_uioskip()
424 uio->uio_bvec++; in zfs_uioskip()
425 uio->uio_iovcnt--; in zfs_uioskip()
428 } else if (uio->uio_segflg == UIO_ITER) { in zfs_uioskip()
429 iov_iter_advance(uio->uio_iter, n); in zfs_uioskip()
432 uio->uio_skip += n; in zfs_uioskip()
433 while (uio->uio_iovcnt && in zfs_uioskip()
434 uio->uio_skip >= uio->uio_iov->iov_len) { in zfs_uioskip()
435 uio->uio_skip -= uio->uio_iov->iov_len; in zfs_uioskip()
436 uio->uio_iov++; in zfs_uioskip()
437 uio->uio_iovcnt--; in zfs_uioskip()
440 uio->uio_loffset += n; in zfs_uioskip()
441 uio->uio_resid -= n; in zfs_uioskip()