Changeset View
Changeset View
Standalone View
Standalone View
sys/ufs/ufs/ufs_quota.c
Show First 20 Lines • Show All 1,077 Lines • ▼ Show 20 Lines | if (ump->um_quotas[i] != NULLVP) | ||||
break; | break; | ||||
if (i == MAXQUOTAS) | if (i == MAXQUOTAS) | ||||
return (0); | return (0); | ||||
/* | /* | ||||
* Search vnodes associated with this mount point, | * Search vnodes associated with this mount point, | ||||
* synchronizing any modified dquot structures. | * synchronizing any modified dquot structures. | ||||
*/ | */ | ||||
again: | again: | ||||
MNT_VNODE_FOREACH_ACTIVE(vp, mp, mvp) { | MNT_VNODE_FOREACH_ALL(vp, mp, mvp) { | ||||
if (vp->v_type == VNON) { | if (vp->v_type == VNON) { | ||||
VI_UNLOCK(vp); | VI_UNLOCK(vp); | ||||
continue; | continue; | ||||
} | } | ||||
error = vget(vp, LK_EXCLUSIVE | LK_INTERLOCK, td); | error = vget(vp, LK_EXCLUSIVE | LK_INTERLOCK, td); | ||||
if (error) { | if (error) { | ||||
if (error == ENOENT) { | if (error == ENOENT) { | ||||
MNT_VNODE_FOREACH_ACTIVE_ABORT(mp, mvp); | MNT_VNODE_FOREACH_ALL_ABORT(mp, mvp); | ||||
goto again; | goto again; | ||||
} | } | ||||
continue; | continue; | ||||
} | } | ||||
for (i = 0; i < MAXQUOTAS; i++) { | for (i = 0; i < MAXQUOTAS; i++) { | ||||
dq = VTOI(vp)->i_dquot[i]; | dq = VTOI(vp)->i_dquot[i]; | ||||
if (dq != NODQUOT) | if (dq != NODQUOT) | ||||
dqsync(vp, dq); | dqsync(vp, dq); | ||||
▲ Show 20 Lines • Show All 784 Lines • Show Last 20 Lines |