version 1.29, 2008/05/16 09:21:59 |
version 1.30, 2008/11/26 20:17:33 |
|
|
error = 0; |
error = 0; |
|
|
while (uio->uio_resid > 0) { |
while (uio->uio_resid > 0) { |
void *win; |
|
int flags; |
|
vsize_t bytelen = MIN(ap->fsize - uio->uio_offset, |
vsize_t bytelen = MIN(ap->fsize - uio->uio_offset, |
uio->uio_resid); |
uio->uio_resid); |
|
|
if (bytelen == 0) { |
if (bytelen == 0) { |
break; |
break; |
} |
} |
win = ubc_alloc(&vp->v_uobj, uio->uio_offset, |
error = ubc_uiomove(&vp->v_uobj, uio, bytelen, advice, |
&bytelen, advice, UBC_READ); |
UBC_READ | UBC_PARTIALOK | UBC_UNMAP_FLAG(vp)); |
error = uiomove(win, bytelen, uio); |
|
flags = UBC_WANT_UNMAP(vp) ? UBC_UNMAP : 0; |
|
ubc_release(win, flags); |
|
if (error) { |
if (error) { |
break; |
break; |
} |
} |