Lines Matching defs:uio

86 static int	ext2fs_post_write_update(struct vnode *, struct uio *, int,
98 struct uio *a_uio;
104 struct uio *uio;
113 uio = ap->a_uio;
116 KASSERT(uio->uio_rw == UIO_READ);
121 return ext2fs_bufrd(vp, uio, ap->a_ioflag, ap->a_cred);
123 if ((uint64_t)uio->uio_offset > ump->um_maxfilesize)
125 if (uio->uio_resid == 0)
127 if (uio->uio_offset >= ext2fs_size(ip))
132 while (uio->uio_resid > 0) {
133 bytelen = MIN(ext2fs_size(ip) - uio->uio_offset,
134 uio->uio_resid);
138 error = ubc_uiomove(&vp->v_uobj, uio, bytelen, advice,
153 ext2fs_bufrd(struct vnode *vp, struct uio *uio, int ioflag, kauth_cred_t cred)
164 KASSERT(uio->uio_rw == UIO_READ);
178 if (uio->uio_offset > ump->um_maxfilesize)
180 if (uio->uio_resid == 0)
182 if (uio->uio_offset >= ext2fs_size(ip))
185 for (error = 0, bp = NULL; uio->uio_resid > 0; bp = NULL) {
186 bytesinfile = ext2fs_size(ip) - uio->uio_offset;
189 lbn = ext2_lblkno(fs, uio->uio_offset);
192 blkoffset = ext2_blkoff(fs, uio->uio_offset);
194 if (uio->uio_resid < xfersize)
195 xfersize = uio->uio_resid;
222 error = uiomove((char *)bp->b_data + blkoffset, xfersize, uio);
261 struct uio *a_uio;
266 struct uio *uio;
280 uio = ap->a_uio;
286 KASSERT(uio->uio_rw == UIO_WRITE);
290 uio->uio_offset = ext2fs_size(ip);
292 uio->uio_offset != ext2fs_size(ip))
296 if (uio->uio_offset < 0 ||
297 (uint64_t)uio->uio_offset + uio->uio_resid > ump->um_maxfilesize)
299 if (uio->uio_resid == 0)
303 resid = uio->uio_resid;
307 while (uio->uio_resid > 0) {
308 oldoff = uio->uio_offset;
309 blkoffset = ext2_blkoff(fs, uio->uio_offset);
310 bytelen = MIN(fs->e2fs_bsize - blkoffset, uio->uio_resid);
315 error = ufs_balloc_range(vp, uio->uio_offset, bytelen,
319 error = ubc_uiomove(&vp->v_uobj, uio, bytelen, advice,
329 if (vp->v_size < uio->uio_offset) {
330 uvm_vnp_setsize(vp, uio->uio_offset);
338 if (!async && oldoff >> fshift != uio->uio_offset >> fshift) {
341 (uio->uio_offset >> fshift) << fshift,
348 round_page(ext2_blkroundup(fs, uio->uio_offset)),
352 error = ext2fs_post_write_update(vp, uio, ioflag, ap->a_cred, osize,
361 ext2fs_bufwr(struct vnode *vp, struct uio *uio, int ioflag, kauth_cred_t cred)
376 KASSERT(uio->uio_rw == UIO_WRITE);
383 if (uio->uio_offset < 0 ||
384 uio->uio_resid > ump->um_maxfilesize ||
385 uio->uio_offset > (ump->um_maxfilesize - uio->uio_resid))
387 if (uio->uio_resid == 0)
391 resid = uio->uio_resid;
394 for (error = 0; uio->uio_resid > 0;) {
395 lbn = ext2_lblkno(fs, uio->uio_offset);
396 blkoffset = ext2_blkoff(fs, uio->uio_offset);
397 xfersize = MIN(fs->e2fs_bsize - blkoffset, uio->uio_resid);
406 if (ext2fs_size(ip) < uio->uio_offset + xfersize) {
407 error = ext2fs_setsize(ip, uio->uio_offset + xfersize);
411 error = uiomove((char *)bp->b_data + blkoffset, xfersize, uio);
418 if (vp->v_size < uio->uio_offset) {
419 uvm_vnp_setsize(vp, uio->uio_offset);
432 error = ext2fs_post_write_update(vp, uio, ioflag, cred, osize, resid,
438 ext2fs_post_write_update(struct vnode *vp, struct uio *uio, int ioflag,
454 if (resid > uio->uio_resid && cred) {
474 uio->uio_offset -= resid - uio->uio_resid;
475 uio->uio_resid = resid;
476 } else if (resid > uio->uio_resid && (ioflag & IO_SYNC) == IO_SYNC)