summaryrefslogtreecommitdiffstats
path: root/sys/msdosfs/msdosfs_denode.c
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/msdosfs/msdosfs_denode.c
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/msdosfs/msdosfs_denode.c')
-rw-r--r--sys/msdosfs/msdosfs_denode.c26
1 files changed, 12 insertions, 14 deletions
diff --git a/sys/msdosfs/msdosfs_denode.c b/sys/msdosfs/msdosfs_denode.c
index 6aea47a..6c1a3c7 100644
--- a/sys/msdosfs/msdosfs_denode.c
+++ b/sys/msdosfs/msdosfs_denode.c
@@ -56,12 +56,11 @@
#include <sys/bio.h>
#include <sys/buf.h>
#include <sys/vnode.h>
+#include <sys/mutex.h>
#include <vm/vm.h>
#include <vm/vm_extern.h>
-#include <machine/mutex.h>
-
#include <msdosfs/bpb.h>
#include <msdosfs/msdosfsmount.h>
#include <msdosfs/direntry.h>
@@ -74,9 +73,7 @@ static struct denode **dehashtbl;
static u_long dehash; /* size of hash table - 1 */
#define DEHASH(dev, dcl, doff) (dehashtbl[(minor(dev) + (dcl) + (doff) / \
sizeof(struct direntry)) & dehash])
-#ifndef NULL_SIMPLELOCKS
-static struct simplelock dehash_slock;
-#endif
+static struct mtx dehash_mtx;
union _qcvt {
quad_t qcvt;
@@ -107,7 +104,7 @@ msdosfs_init(vfsp)
struct vfsconf *vfsp;
{
dehashtbl = hashinit(desiredvnodes/2, M_MSDOSFSMNT, &dehash);
- simple_lock_init(&dehash_slock);
+ mtx_init(&dehash_mtx, "msdosfs dehash", MTX_DEF);
return (0);
}
@@ -118,6 +115,7 @@ msdosfs_uninit(vfsp)
if (dehashtbl)
free(dehashtbl, M_MSDOSFSMNT);
+ mtx_destroy(&dehash_mtx);
return (0);
}
@@ -132,7 +130,7 @@ msdosfs_hashget(dev, dirclust, diroff)
struct vnode *vp;
loop:
- simple_lock(&dehash_slock);
+ mtx_enter(&dehash_mtx, MTX_DEF);
for (dep = DEHASH(dev, dirclust, diroff); dep; dep = dep->de_next) {
if (dirclust == dep->de_dirclust
&& diroff == dep->de_diroffset
@@ -140,13 +138,13 @@ loop:
&& dep->de_refcnt != 0) {
vp = DETOV(dep);
mtx_enter(&vp->v_interlock, MTX_DEF);
- simple_unlock(&dehash_slock);
+ mtx_exit(&dehash_mtx, MTX_DEF);
if (vget(vp, LK_EXCLUSIVE | LK_INTERLOCK, p))
goto loop;
return (dep);
}
}
- simple_unlock(&dehash_slock);
+ mtx_exit(&dehash_mtx, MTX_DEF);
return (NULL);
}
@@ -156,7 +154,7 @@ msdosfs_hashins(dep)
{
struct denode **depp, *deq;
- simple_lock(&dehash_slock);
+ mtx_enter(&dehash_mtx, MTX_DEF);
depp = &DEHASH(dep->de_dev, dep->de_dirclust, dep->de_diroffset);
deq = *depp;
if (deq)
@@ -164,7 +162,7 @@ msdosfs_hashins(dep)
dep->de_next = deq;
dep->de_prev = depp;
*depp = dep;
- simple_unlock(&dehash_slock);
+ mtx_exit(&dehash_mtx, MTX_DEF);
}
static void
@@ -173,7 +171,7 @@ msdosfs_hashrem(dep)
{
struct denode *deq;
- simple_lock(&dehash_slock);
+ mtx_enter(&dehash_mtx, MTX_DEF);
deq = dep->de_next;
if (deq)
deq->de_prev = dep->de_prev;
@@ -182,7 +180,7 @@ msdosfs_hashrem(dep)
dep->de_next = NULL;
dep->de_prev = NULL;
#endif
- simple_unlock(&dehash_slock);
+ mtx_exit(&dehash_mtx, MTX_DEF);
}
/*
@@ -721,6 +719,6 @@ out:
dep->de_Name[0]);
#endif
if (dep->de_Name[0] == SLOT_DELETED)
- vrecycle(vp, (struct simplelock *)0, p);
+ vrecycle(vp, NULL, p);
return (error);
}
OpenPOWER on IntegriCloud