Changeset View
Changeset View
Standalone View
Standalone View
head/sys/ufs/ufs/ufs_quota.c
Show First 20 Lines • Show All 611 Lines • ▼ Show 20 Lines | quotaon(struct thread *td, struct mount *mp, int type, void *fname) | ||||
* NB: only need to add dquot's for inodes being modified. | * NB: only need to add dquot's for inodes being modified. | ||||
*/ | */ | ||||
again: | again: | ||||
MNT_VNODE_FOREACH_ALL(vp, mp, mvp) { | MNT_VNODE_FOREACH_ALL(vp, mp, mvp) { | ||||
if (vget(vp, LK_EXCLUSIVE | LK_INTERLOCK, td)) { | if (vget(vp, LK_EXCLUSIVE | LK_INTERLOCK, td)) { | ||||
MNT_VNODE_FOREACH_ALL_ABORT(mp, mvp); | MNT_VNODE_FOREACH_ALL_ABORT(mp, mvp); | ||||
goto again; | goto again; | ||||
} | } | ||||
if (vp->v_type == VNON || vp->v_writecount == 0) { | if (vp->v_type == VNON || vp->v_writecount <= 0) { | ||||
VOP_UNLOCK(vp, 0); | VOP_UNLOCK(vp, 0); | ||||
vrele(vp); | vrele(vp); | ||||
continue; | continue; | ||||
} | } | ||||
error = getinoquota(VTOI(vp)); | error = getinoquota(VTOI(vp)); | ||||
VOP_UNLOCK(vp, 0); | VOP_UNLOCK(vp, 0); | ||||
vrele(vp); | vrele(vp); | ||||
if (error) { | if (error) { | ||||
▲ Show 20 Lines • Show All 1,258 Lines • Show Last 20 Lines |