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 1,407 Lines • ▼ Show 20 Lines | if (ltype != VOP_ISLOCKED(dvp)) { | ||||
vn_lock(dvp, LK_UPGRADE | LK_RETRY); | vn_lock(dvp, LK_UPGRADE | LK_RETRY); | ||||
else /* if (ltype == LK_SHARED) */ | else /* if (ltype == LK_SHARED) */ | ||||
vn_lock(dvp, LK_DOWNGRADE | LK_RETRY); | vn_lock(dvp, LK_DOWNGRADE | LK_RETRY); | ||||
/* | /* | ||||
* Relock for the "." case could leave us with | * Relock for the "." case could leave us with | ||||
* reclaimed vnode. | * reclaimed vnode. | ||||
*/ | */ | ||||
if (dvp->v_iflag & VI_DOOMED) { | if (VN_IS_DOOMED(dvp)) { | ||||
vrele(dvp); | vrele(dvp); | ||||
return (SET_ERROR(ENOENT)); | return (SET_ERROR(ENOENT)); | ||||
} | } | ||||
} | } | ||||
return (0); | return (0); | ||||
} else if (name[0] == '.' && name[1] == '.' && name[2] == 0) { | } else if (name[0] == '.' && name[1] == '.' && name[2] == 0) { | ||||
/* | /* | ||||
* Note that in this case, dvp is the child vnode, and we | * Note that in this case, dvp is the child vnode, and we | ||||
▲ Show 20 Lines • Show All 4,598 Lines • Show Last 20 Lines |