Changeset View
Changeset View
Standalone View
Standalone View
sys/fs/nullfs/null_vnops.c
Show First 20 Lines • Show All 452 Lines • ▼ Show 20 Lines | null_open(struct vop_open_args *ap) | ||||
int retval; | int retval; | ||||
struct vnode *vp, *ldvp; | struct vnode *vp, *ldvp; | ||||
vp = ap->a_vp; | vp = ap->a_vp; | ||||
ldvp = NULLVPTOLOWERVP(vp); | ldvp = NULLVPTOLOWERVP(vp); | ||||
retval = null_bypass(&ap->a_gen); | retval = null_bypass(&ap->a_gen); | ||||
if (retval == 0) { | if (retval == 0) { | ||||
vp->v_object = ldvp->v_object; | vp->v_object = ldvp->v_object; | ||||
if ((ldvp->v_irflag & VIRF_PGREAD) != 0) { | if ((vn_irflag_read(ldvp) & VIRF_PGREAD) != 0) { | ||||
MPASS(vp->v_object != NULL); | MPASS(vp->v_object != NULL); | ||||
if ((vp->v_irflag & VIRF_PGREAD) == 0) { | if ((vn_irflag_read(vp) & VIRF_PGREAD) == 0) { | ||||
VI_LOCK(vp); | VI_LOCK(vp); | ||||
vp->v_irflag |= VIRF_PGREAD; | vn_irflag_set(vp, VIRF_PGREAD); | ||||
VI_UNLOCK(vp); | VI_UNLOCK(vp); | ||||
} | } | ||||
} | } | ||||
} | } | ||||
return (retval); | return (retval); | ||||
} | } | ||||
/* | /* | ||||
▲ Show 20 Lines • Show All 530 Lines • Show Last 20 Lines |