summaryrefslogtreecommitdiffstats
path: root/sys/gnu/ext2fs
diff options
context:
space:
mode:
authorjasone <jasone@FreeBSD.org>2001-01-24 12:35:55 +0000
committerjasone <jasone@FreeBSD.org>2001-01-24 12:35:55 +0000
commit8d2ec1ebc4a9454e2936c6fcbe29a5f1fd83504f (patch)
tree23bd3f0014237e1b861fed6a7c3b587948d149d5 /sys/gnu/ext2fs
parentc5cc2f8e2621f1d090434a5474a18fae384e1db6 (diff)
downloadFreeBSD-src-8d2ec1ebc4a9454e2936c6fcbe29a5f1fd83504f.zip
FreeBSD-src-8d2ec1ebc4a9454e2936c6fcbe29a5f1fd83504f.tar.gz
Convert all simplelocks to mutexes and remove the simplelock implementations.
Diffstat (limited to 'sys/gnu/ext2fs')
-rw-r--r--sys/gnu/ext2fs/ext2_ihash.c27
-rw-r--r--sys/gnu/ext2fs/ext2_vfsops.c25
2 files changed, 24 insertions, 28 deletions
diff --git a/sys/gnu/ext2fs/ext2_ihash.c b/sys/gnu/ext2fs/ext2_ihash.c
index 89b931d..e1c35a2 100644
--- a/sys/gnu/ext2fs/ext2_ihash.c
+++ b/sys/gnu/ext2fs/ext2_ihash.c
@@ -40,8 +40,7 @@
#include <sys/lock.h>
#include <sys/vnode.h>
#include <sys/malloc.h>
-
-#include <machine/mutex.h>
+#include <sys/mutex.h>
#include <ufs/ufs/quota.h>
#include <ufs/ufs/inode.h>
@@ -54,9 +53,7 @@ static MALLOC_DEFINE(M_UFSIHASH, "UFS ihash", "UFS Inode hash tables");
static LIST_HEAD(ihashhead, inode) *ihashtbl;
static u_long ihash; /* size of hash table - 1 */
#define INOHASH(device, inum) (&ihashtbl[(minor(device) + (inum)) & ihash])
-#ifndef NULL_SIMPLELOCKS
-static struct simplelock ufs_ihash_slock;
-#endif
+static struct mtx ufs_ihash_mtx;
/*
* Initialize inode hash table.
@@ -66,7 +63,7 @@ ufs_ihashinit()
{
ihashtbl = hashinit(desiredvnodes, M_UFSIHASH, &ihash);
- simple_lock_init(&ufs_ihash_slock);
+ mtx_init(&ufs_ihash_mtx, "ufs ihash", MTX_DEF);
}
/*
@@ -80,11 +77,11 @@ ufs_ihashlookup(dev, inum)
{
struct inode *ip;
- simple_lock(&ufs_ihash_slock);
+ mtx_enter(&ufs_ihash_mtx, MTX_DEF);
for (ip = INOHASH(dev, inum)->lh_first; ip; ip = ip->i_hash.le_next)
if (inum == ip->i_number && dev == ip->i_dev)
break;
- simple_unlock(&ufs_ihash_slock);
+ mtx_exit(&ufs_ihash_mtx, MTX_DEF);
if (ip)
return (ITOV(ip));
@@ -105,18 +102,18 @@ ufs_ihashget(dev, inum)
struct vnode *vp;
loop:
- simple_lock(&ufs_ihash_slock);
+ mtx_enter(&ufs_ihash_mtx, MTX_DEF);
for (ip = INOHASH(dev, inum)->lh_first; ip; ip = ip->i_hash.le_next) {
if (inum == ip->i_number && dev == ip->i_dev) {
vp = ITOV(ip);
mtx_enter(&vp->v_interlock, MTX_DEF);
- simple_unlock(&ufs_ihash_slock);
+ mtx_exit(&ufs_ihash_mtx, MTX_DEF);
if (vget(vp, LK_EXCLUSIVE | LK_INTERLOCK, p))
goto loop;
return (vp);
}
}
- simple_unlock(&ufs_ihash_slock);
+ mtx_exit(&ufs_ihash_mtx, MTX_DEF);
return (NULL);
}
@@ -133,11 +130,11 @@ ufs_ihashins(ip)
/* lock the inode, then put it on the appropriate hash list */
lockmgr(&ip->i_vnode->v_lock, LK_EXCLUSIVE, (struct mtx *)0, p);
- simple_lock(&ufs_ihash_slock);
+ mtx_enter(&ufs_ihash_mtx, MTX_DEF);
ipp = INOHASH(ip->i_dev, ip->i_number);
LIST_INSERT_HEAD(ipp, ip, i_hash);
ip->i_flag |= IN_HASHED;
- simple_unlock(&ufs_ihash_slock);
+ mtx_exit(&ufs_ihash_mtx, MTX_DEF);
}
/*
@@ -147,7 +144,7 @@ void
ufs_ihashrem(ip)
struct inode *ip;
{
- simple_lock(&ufs_ihash_slock);
+ mtx_enter(&ufs_ihash_mtx, MTX_DEF);
if (ip->i_flag & IN_HASHED) {
ip->i_flag &= ~IN_HASHED;
LIST_REMOVE(ip, i_hash);
@@ -156,5 +153,5 @@ ufs_ihashrem(ip)
ip->i_hash.le_prev = NULL;
#endif
}
- simple_unlock(&ufs_ihash_slock);
+ mtx_exit(&ufs_ihash_mtx, MTX_DEF);
}
diff --git a/sys/gnu/ext2fs/ext2_vfsops.c b/sys/gnu/ext2fs/ext2_vfsops.c
index 12682e4..e7dfbf2 100644
--- a/sys/gnu/ext2fs/ext2_vfsops.c
+++ b/sys/gnu/ext2fs/ext2_vfsops.c
@@ -56,8 +56,7 @@
#include <sys/disklabel.h>
#include <sys/malloc.h>
#include <sys/stat.h>
-
-#include <machine/mutex.h>
+#include <sys/mutex.h>
#include <ufs/ufs/extattr.h>
#include <ufs/ufs/quota.h>
@@ -575,23 +574,23 @@ ext2_reload(mountp, cred, p)
brelse(bp);
loop:
- simple_lock(&mntvnode_slock);
+ mtx_enter(&mntvnode_mtx, MTX_DEF);
for (vp = mountp->mnt_vnodelist.lh_first; vp != NULL; vp = nvp) {
if (vp->v_mount != mountp) {
- simple_unlock(&mntvnode_slock);
+ mtx_exit(&mntvnode_mtx, MTX_DEF);
goto loop;
}
nvp = vp->v_mntvnodes.le_next;
/*
* Step 4: invalidate all inactive vnodes.
*/
- if (vrecycle(vp, &mntvnode_slock, p))
+ if (vrecycle(vp, &mntvnode_mtx, p))
goto loop;
/*
* Step 5: invalidate all cached file data.
*/
mtx_enter(&vp->v_interlock, MTX_DEF);
- simple_unlock(&mntvnode_slock);
+ mtx_exit(&mntvnode_mtx, MTX_DEF);
if (vget(vp, LK_EXCLUSIVE | LK_INTERLOCK, p)) {
goto loop;
}
@@ -613,9 +612,9 @@ loop:
&ip->i_din);
brelse(bp);
vput(vp);
- simple_lock(&mntvnode_slock);
+ mtx_enter(&mntvnode_mtx, MTX_DEF);
}
- simple_unlock(&mntvnode_slock);
+ mtx_exit(&mntvnode_mtx, MTX_DEF);
return (0);
}
@@ -940,7 +939,7 @@ ext2_sync(mp, waitfor, cred, p)
/*
* Write back each (modified) inode.
*/
- simple_lock(&mntvnode_slock);
+ mtx_enter(&mntvnode_mtx, MTX_DEF);
loop:
for (vp = mp->mnt_vnodelist.lh_first; vp != NULL; vp = nvp) {
/*
@@ -959,10 +958,10 @@ loop:
mtx_exit(&vp->v_interlock, MTX_DEF);
continue;
}
- simple_unlock(&mntvnode_slock);
+ mtx_exit(&mntvnode_mtx, MTX_DEF);
error = vget(vp, LK_EXCLUSIVE | LK_NOWAIT | LK_INTERLOCK, p);
if (error) {
- simple_lock(&mntvnode_slock);
+ mtx_enter(&mntvnode_mtx, MTX_DEF);
if (error == ENOENT)
goto loop;
continue;
@@ -971,9 +970,9 @@ loop:
allerror = error;
VOP_UNLOCK(vp, 0, p);
vrele(vp);
- simple_lock(&mntvnode_slock);
+ mtx_enter(&mntvnode_mtx, MTX_DEF);
}
- simple_unlock(&mntvnode_slock);
+ mtx_exit(&mntvnode_mtx, MTX_DEF);
/*
* Force stale file system control information to be flushed.
*/
OpenPOWER on IntegriCloud