Changeset View
Changeset View
Standalone View
Standalone View
sys/kern/vfs_vnops.c
Show First 20 Lines • Show All 578 Lines • ▼ Show 20 Lines | vn_rdwr(enum uio_rw rw, struct vnode *vp, void *base, int len, off_t offset, | ||||
auio.uio_td = td; | auio.uio_td = td; | ||||
error = 0; | error = 0; | ||||
if ((ioflg & IO_NODELOCKED) == 0) { | if ((ioflg & IO_NODELOCKED) == 0) { | ||||
if ((ioflg & IO_RANGELOCKED) == 0) { | if ((ioflg & IO_RANGELOCKED) == 0) { | ||||
if (rw == UIO_READ) { | if (rw == UIO_READ) { | ||||
rl_cookie = vn_rangelock_rlock(vp, offset, | rl_cookie = vn_rangelock_rlock(vp, offset, | ||||
offset + len); | offset + len); | ||||
} else if ((ioflg & IO_APPEND) != 0) { | |||||
rl_cookie = vn_rangelock_wlock(vp, 0, OFF_MAX); | |||||
} else { | } else { | ||||
rl_cookie = vn_rangelock_wlock(vp, offset, | rl_cookie = vn_rangelock_wlock(vp, offset, | ||||
offset + len); | offset + len); | ||||
} | } | ||||
} else | } else | ||||
rl_cookie = NULL; | rl_cookie = NULL; | ||||
mp = NULL; | mp = NULL; | ||||
if (rw == UIO_WRITE) { | if (rw == UIO_WRITE) { | ||||
▲ Show 20 Lines • Show All 2,827 Lines • Show Last 20 Lines |