summaryrefslogtreecommitdiffstats
path: root/sys/fs/ntfs/ntfs_subr.c
diff options
context:
space:
mode:
authorjasone <jasone@FreeBSD.org>2000-10-04 01:29:17 +0000
committerjasone <jasone@FreeBSD.org>2000-10-04 01:29:17 +0000
commit4e290e67b7310d906f113850fddfdf1017a9d15b (patch)
treebae3e99c848c6e38aee34a7cf61ffa9ca55b0095 /sys/fs/ntfs/ntfs_subr.c
parentbea51a4aa1bf67a183bd1d4a6227fa891345af60 (diff)
downloadFreeBSD-src-4e290e67b7310d906f113850fddfdf1017a9d15b.zip
FreeBSD-src-4e290e67b7310d906f113850fddfdf1017a9d15b.tar.gz
Convert lockmgr locks from using simple locks to using mutexes.
Add lockdestroy() and appropriate invocations, which corresponds to lockinit() and must be called to clean up after a lockmgr lock is no longer needed.
Diffstat (limited to 'sys/fs/ntfs/ntfs_subr.c')
-rw-r--r--sys/fs/ntfs/ntfs_subr.c28
1 files changed, 21 insertions, 7 deletions
diff --git a/sys/fs/ntfs/ntfs_subr.c b/sys/fs/ntfs/ntfs_subr.c
index e8f5588..f060e5b 100644
--- a/sys/fs/ntfs/ntfs_subr.c
+++ b/sys/fs/ntfs/ntfs_subr.c
@@ -361,7 +361,7 @@ ntfs_ntget(ip)
dprintf(("ntfs_ntget: get ntnode %d: %p, usecount: %d\n",
ip->i_number, ip, ip->i_usecount));
- simple_lock(&ip->i_interlock);
+ mtx_enter(&ip->i_interlock, MTX_DEF);
ip->i_usecount++;
LOCKMGR(&ip->i_lock, LK_EXCLUSIVE | LK_INTERLOCK, &ip->i_interlock);
@@ -410,7 +410,7 @@ ntfs_ntlookup(
/* init lock and lock the newborn ntnode */
lockinit(&ip->i_lock, PINOD, "ntnode", 0, LK_EXCLUSIVE);
- simple_lock_init(&ip->i_interlock);
+ mtx_init(&ip->i_interlock, "ntnode interlock", MTX_DEF);
ntfs_ntget(ip);
ntfs_nthashins(ip);
@@ -440,7 +440,7 @@ ntfs_ntput(ip)
dprintf(("ntfs_ntput: rele ntnode %d: %p, usecount: %d\n",
ip->i_number, ip, ip->i_usecount));
- simple_lock(&ip->i_interlock);
+ mtx_enter(&ip->i_interlock, MTX_DEF);
ip->i_usecount--;
#ifdef DIAGNOSTIC
@@ -464,6 +464,10 @@ ntfs_ntput(ip)
LIST_REMOVE(vap,va_list);
ntfs_freentvattr(vap);
}
+ mtx_exit(&ip->i_interlock, MTX_DEF);
+ mtx_destroy(&ip->i_interlock);
+ lockdestroy(&ip->i_lock);
+
FREE(ip, M_NTFSNTNODE);
} else {
LOCKMGR(&ip->i_lock, LK_RELEASE|LK_INTERLOCK, &ip->i_interlock);
@@ -477,9 +481,9 @@ void
ntfs_ntref(ip)
struct ntnode *ip;
{
- simple_lock(&ip->i_interlock);
+ mtx_enter(&ip->i_interlock, MTX_DEF);
ip->i_usecount++;
- simple_unlock(&ip->i_interlock);
+ mtx_exit(&ip->i_interlock, MTX_DEF);
dprintf(("ntfs_ntref: ino %d, usecount: %d\n",
ip->i_number, ip->i_usecount));
@@ -496,13 +500,13 @@ ntfs_ntrele(ip)
dprintf(("ntfs_ntrele: rele ntnode %d: %p, usecount: %d\n",
ip->i_number, ip, ip->i_usecount));
- simple_lock(&ip->i_interlock);
+ mtx_enter(&ip->i_interlock, MTX_DEF);
ip->i_usecount--;
if (ip->i_usecount < 0)
panic("ntfs_ntrele: ino: %d usecount: %d \n",
ip->i_number,ip->i_usecount);
- simple_unlock(&ip->i_interlock);
+ mtx_exit(&ip->i_interlock, MTX_DEF);
}
/*
@@ -771,6 +775,9 @@ ntfs_frele(
FREE(fp->f_attrname, M_TEMP);
if (fp->f_dirblbuf)
FREE(fp->f_dirblbuf, M_NTFSDIR);
+#ifdef __FreeBSD__
+ lockdestroy(&fp->f_lock);
+#endif
FREE(fp, M_NTFSFNODE);
ntfs_ntrele(ip);
}
@@ -1915,6 +1922,13 @@ ntfs_toupper_init()
ntfs_toupper_usecount = 0;
}
+void
+ntfs_toupper_destroy(void)
+{
+
+ lockdestroy(&ntfs_toupper_lock);
+}
+
/*
* if the ntfs_toupper_tab[] is filled already, just raise use count;
* otherwise read the data from the filesystem we are currently mounting
OpenPOWER on IntegriCloud