Changeset View
Changeset View
Standalone View
Standalone View
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
Show First 20 Lines • Show All 4,854 Lines • ▼ Show 20 Lines | struct vop_access_args /* { | ||||
struct thread *a_td; | struct thread *a_td; | ||||
} */ *ap; | } */ *ap; | ||||
{ | { | ||||
vnode_t *vp = ap->a_vp; | vnode_t *vp = ap->a_vp; | ||||
znode_t *zp = VTOZ(vp); | znode_t *zp = VTOZ(vp); | ||||
accmode_t accmode; | accmode_t accmode; | ||||
int error = 0; | int error = 0; | ||||
if (ap->a_accmode == VEXEC) { | |||||
if (zfs_freebsd_fastaccesschk_execute(ap->a_vp, ap->a_cred) == 0) | |||||
return (0); | |||||
} | |||||
/* | /* | ||||
* ZFS itself only knowns about VREAD, VWRITE, VEXEC and VAPPEND, | * ZFS itself only knowns about VREAD, VWRITE, VEXEC and VAPPEND, | ||||
*/ | */ | ||||
accmode = ap->a_accmode & (VREAD|VWRITE|VEXEC|VAPPEND); | accmode = ap->a_accmode & (VREAD|VWRITE|VEXEC|VAPPEND); | ||||
if (accmode != 0) | if (accmode != 0) | ||||
error = zfs_access(ap->a_vp, accmode, 0, ap->a_cred, NULL); | error = zfs_access(ap->a_vp, accmode, 0, ap->a_cred, NULL); | ||||
/* | /* | ||||
▲ Show 20 Lines • Show All 1,151 Lines • Show Last 20 Lines |