From ca430f2e92d073fc5c05df06b6b72cfb2842ee4b Mon Sep 17 00:00:00 2001 From: Alexander Kabaev Date: Wed, 5 Nov 2003 04:30:08 +0000 Subject: Remove mntvnode_mtx and replace it with per-mountpoint mutex. Introduce two new macros MNT_ILOCK(mp)/MNT_IUNLOCK(mp) to operate on this mutex transparently. Eventually new mutex will be protecting more fields in struct mount, not only vnode list. Discussed with: jeff --- sys/gnu/ext2fs/ext2_vfsops.c | 22 +++++++++++----------- sys/gnu/fs/ext2fs/ext2_vfsops.c | 22 +++++++++++----------- 2 files changed, 22 insertions(+), 22 deletions(-) (limited to 'sys/gnu') diff --git a/sys/gnu/ext2fs/ext2_vfsops.c b/sys/gnu/ext2fs/ext2_vfsops.c index 86559b845473..39a4dede1f6c 100644 --- a/sys/gnu/ext2fs/ext2_vfsops.c +++ b/sys/gnu/ext2fs/ext2_vfsops.c @@ -569,10 +569,10 @@ ext2_reload(mountp, cred, td) brelse(bp); loop: - mtx_lock(&mntvnode_mtx); + MNT_ILOCK(mp); for (vp = TAILQ_FIRST(&mountp->mnt_nvnodelist); vp != NULL; vp = nvp) { if (vp->v_mount != mountp) { - mtx_unlock(&mntvnode_mtx); + MNT_IUNLOCK(mp); goto loop; } nvp = TAILQ_NEXT(vp, v_nmntvnodes); @@ -581,7 +581,7 @@ loop: VI_UNLOCK(vp); continue; } - mtx_unlock(&mntvnode_mtx); + MNT_IUNLOCK(mp); /* * Step 4: invalidate all inactive vnodes. */ @@ -614,9 +614,9 @@ loop: brelse(bp); VOP_UNLOCK(vp, 0, td); vrele(vp); - mtx_lock(&mntvnode_mtx); + MNT_ILOCK(mp); } - mtx_unlock(&mntvnode_mtx); + MNT_IUNLOCK(mp); return (0); } @@ -901,7 +901,7 @@ ext2_sync(mp, waitfor, cred, td) /* * Write back each (modified) inode. */ - mtx_lock(&mntvnode_mtx); + MNT_ILOCK(mp); loop: for (vp = TAILQ_FIRST(&mp->mnt_nvnodelist); vp != NULL; vp = nvp) { /* @@ -916,19 +916,19 @@ loop: VI_UNLOCK(vp); continue; } - mtx_unlock(&mntvnode_mtx); + MNT_IUNLOCK(mp); ip = VTOI(vp); if (vp->v_type == VNON || ((ip->i_flag & (IN_ACCESS | IN_CHANGE | IN_MODIFIED | IN_UPDATE)) == 0 && (TAILQ_EMPTY(&vp->v_dirtyblkhd) || waitfor == MNT_LAZY))) { VI_UNLOCK(vp); - mtx_lock(&mntvnode_mtx); + MNT_ILOCK(mp); continue; } error = vget(vp, LK_EXCLUSIVE | LK_NOWAIT | LK_INTERLOCK, td); if (error) { - mtx_lock(&mntvnode_mtx); + MNT_ILOCK(mp); if (error == ENOENT) goto loop; continue; @@ -937,9 +937,9 @@ loop: allerror = error; VOP_UNLOCK(vp, 0, td); vrele(vp); - mtx_lock(&mntvnode_mtx); + MNT_ILOCK(mp); } - mtx_unlock(&mntvnode_mtx); + MNT_IUNLOCK(mp); /* * Force stale file system control information to be flushed. */ diff --git a/sys/gnu/fs/ext2fs/ext2_vfsops.c b/sys/gnu/fs/ext2fs/ext2_vfsops.c index 86559b845473..39a4dede1f6c 100644 --- a/sys/gnu/fs/ext2fs/ext2_vfsops.c +++ b/sys/gnu/fs/ext2fs/ext2_vfsops.c @@ -569,10 +569,10 @@ ext2_reload(mountp, cred, td) brelse(bp); loop: - mtx_lock(&mntvnode_mtx); + MNT_ILOCK(mp); for (vp = TAILQ_FIRST(&mountp->mnt_nvnodelist); vp != NULL; vp = nvp) { if (vp->v_mount != mountp) { - mtx_unlock(&mntvnode_mtx); + MNT_IUNLOCK(mp); goto loop; } nvp = TAILQ_NEXT(vp, v_nmntvnodes); @@ -581,7 +581,7 @@ loop: VI_UNLOCK(vp); continue; } - mtx_unlock(&mntvnode_mtx); + MNT_IUNLOCK(mp); /* * Step 4: invalidate all inactive vnodes. */ @@ -614,9 +614,9 @@ loop: brelse(bp); VOP_UNLOCK(vp, 0, td); vrele(vp); - mtx_lock(&mntvnode_mtx); + MNT_ILOCK(mp); } - mtx_unlock(&mntvnode_mtx); + MNT_IUNLOCK(mp); return (0); } @@ -901,7 +901,7 @@ ext2_sync(mp, waitfor, cred, td) /* * Write back each (modified) inode. */ - mtx_lock(&mntvnode_mtx); + MNT_ILOCK(mp); loop: for (vp = TAILQ_FIRST(&mp->mnt_nvnodelist); vp != NULL; vp = nvp) { /* @@ -916,19 +916,19 @@ loop: VI_UNLOCK(vp); continue; } - mtx_unlock(&mntvnode_mtx); + MNT_IUNLOCK(mp); ip = VTOI(vp); if (vp->v_type == VNON || ((ip->i_flag & (IN_ACCESS | IN_CHANGE | IN_MODIFIED | IN_UPDATE)) == 0 && (TAILQ_EMPTY(&vp->v_dirtyblkhd) || waitfor == MNT_LAZY))) { VI_UNLOCK(vp); - mtx_lock(&mntvnode_mtx); + MNT_ILOCK(mp); continue; } error = vget(vp, LK_EXCLUSIVE | LK_NOWAIT | LK_INTERLOCK, td); if (error) { - mtx_lock(&mntvnode_mtx); + MNT_ILOCK(mp); if (error == ENOENT) goto loop; continue; @@ -937,9 +937,9 @@ loop: allerror = error; VOP_UNLOCK(vp, 0, td); vrele(vp); - mtx_lock(&mntvnode_mtx); + MNT_ILOCK(mp); } - mtx_unlock(&mntvnode_mtx); + MNT_IUNLOCK(mp); /* * Force stale file system control information to be flushed. */ -- cgit v1.3