summaryrefslogtreecommitdiffstats
path: root/sys/fs/nandfs/nandfs_segment.c
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2013-01-03 19:01:56 +0000
committerkib <kib@FreeBSD.org>2013-01-03 19:01:56 +0000
commitdefbe57abedd3e1b5d0e14347fb254fae22f3242 (patch)
treeb056f40c8605df0b1cc0c332c397220e901d2b24 /sys/fs/nandfs/nandfs_segment.c
parent6ca88cdb6c4fcea3235e0ca8ca2e98441d38d4e1 (diff)
downloadFreeBSD-src-defbe57abedd3e1b5d0e14347fb254fae22f3242.zip
FreeBSD-src-defbe57abedd3e1b5d0e14347fb254fae22f3242.tar.gz
Remove the last use of the deprecated MNT_VNODE_FOREACH interface in
the tree. With the help from: mjg Tested by: Ronald Klop <ronald-freebsd8@klop.yi.org> MFC after: 2 weeks
Diffstat (limited to 'sys/fs/nandfs/nandfs_segment.c')
-rw-r--r--sys/fs/nandfs/nandfs_segment.c32
1 files changed, 4 insertions, 28 deletions
diff --git a/sys/fs/nandfs/nandfs_segment.c b/sys/fs/nandfs/nandfs_segment.c
index 836bead..7433e77 100644
--- a/sys/fs/nandfs/nandfs_segment.c
+++ b/sys/fs/nandfs/nandfs_segment.c
@@ -478,39 +478,19 @@ nandfs_iterate_dirty_vnodes(struct mount *mp, struct nandfs_seginfo *seginfo)
struct nandfs_node *nandfs_node;
struct vnode *vp, *mvp;
struct thread *td;
- int error, lockreq, update;
+ int error, update;
td = curthread;
- lockreq = LK_EXCLUSIVE | LK_INTERLOCK | LK_RETRY;
- MNT_ILOCK(mp);
-
- MNT_VNODE_FOREACH(vp, mp, mvp) {
+ MNT_VNODE_FOREACH_ACTIVE(vp, mp, mvp) {
update = 0;
- if (mp->mnt_syncer == vp)
- continue;
- if (VOP_ISLOCKED(vp))
- continue;
-
- VI_LOCK(vp);
- MNT_IUNLOCK(mp);
- if (vp->v_iflag & VI_DOOMED) {
+ if (mp->mnt_syncer == vp || VOP_ISLOCKED(vp)) {
VI_UNLOCK(vp);
- MNT_ILOCK(mp);
- continue;
- }
-
- if ((error = vget(vp, lockreq, td)) != 0) {
- MNT_ILOCK(mp);
continue;
}
-
- if (vp->v_iflag & VI_DOOMED) {
- vput(vp);
- MNT_ILOCK(mp);
+ if (vget(vp, LK_EXCLUSIVE | LK_INTERLOCK | LK_NOWAIT, td) != 0)
continue;
- }
nandfs_node = VTON(vp);
if (nandfs_node->nn_flags & IN_MODIFIED) {
@@ -532,12 +512,8 @@ nandfs_iterate_dirty_vnodes(struct mount *mp, struct nandfs_seginfo *seginfo)
if (update)
nandfs_node_update(nandfs_node);
-
- MNT_ILOCK(mp);
}
- MNT_IUNLOCK(mp);
-
return (0);
}
OpenPOWER on IntegriCloud