Changeset View
Changeset View
Standalone View
Standalone View
sys/fs/nullfs/null_vnops.c
Show First 20 Lines • Show All 885 Lines • ▼ Show 20 Lines | null_vptocnp(struct vop_vptocnp_args *ap) | ||||
error = vn_vptocnp(&ldvp, cred, ap->a_buf, ap->a_buflen); | error = vn_vptocnp(&ldvp, cred, ap->a_buf, ap->a_buflen); | ||||
vdrop(lvp); | vdrop(lvp); | ||||
if (error != 0) { | if (error != 0) { | ||||
vn_lock(vp, locked | LK_RETRY); | vn_lock(vp, locked | LK_RETRY); | ||||
vfs_rel(mp); | vfs_rel(mp); | ||||
return (ENOENT); | return (ENOENT); | ||||
} | } | ||||
/* | error = vn_lock(ldvp, LK_SHARED); | ||||
* Exclusive lock is required by insmntque1 call in | |||||
* null_nodeget() | |||||
*/ | |||||
error = vn_lock(ldvp, LK_EXCLUSIVE); | |||||
if (error != 0) { | if (error != 0) { | ||||
vrele(ldvp); | vrele(ldvp); | ||||
vn_lock(vp, locked | LK_RETRY); | vn_lock(vp, locked | LK_RETRY); | ||||
vfs_rel(mp); | vfs_rel(mp); | ||||
return (ENOENT); | return (ENOENT); | ||||
} | } | ||||
error = null_nodeget(mp, ldvp, dvp); | error = null_nodeget(mp, ldvp, dvp); | ||||
if (error == 0) { | if (error == 0) { | ||||
Show All 38 Lines |