summaryrefslogtreecommitdiff
path: root/sys/ufs
diff options
context:
space:
mode:
authorJohn Dyson <dyson@FreeBSD.org>1995-04-25 03:32:37 +0000
committerJohn Dyson <dyson@FreeBSD.org>1995-04-25 03:32:37 +0000
commita4256da5ad5989586403c8b0fe01d6293e9c2c10 (patch)
tree2a3d12cc90bc89db3116906107c22ad5de79768c /sys/ufs
parent28f1950b10135b2f92c03c04dea3b6d725b44ae6 (diff)
Notes
Diffstat (limited to 'sys/ufs')
-rw-r--r--sys/ufs/ufs/ufs_vnops.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/sys/ufs/ufs/ufs_vnops.c b/sys/ufs/ufs/ufs_vnops.c
index 379e2671569a..ae28273499ff 100644
--- a/sys/ufs/ufs/ufs_vnops.c
+++ b/sys/ufs/ufs/ufs_vnops.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)ufs_vnops.c 8.10 (Berkeley) 4/1/94
- * $Id: ufs_vnops.c,v 1.20 1995/04/09 06:03:45 davidg Exp $
+ * $Id: ufs_vnops.c,v 1.21 1995/04/24 05:13:17 dyson Exp $
*/
#include <sys/param.h>
@@ -1540,9 +1540,7 @@ start:
ip = VTOI(vp);
if (ip->i_flag & IN_LOCKED) {
if (p->p_pid == ip->i_lockholder) {
- if( ip->i_flag & IN_RECURSE)
- ++ip->i_lockcount;
- else
+ if( (ip->i_flag & IN_RECURSE) == 0)
panic("ufs_lock: recursive lock not expected, pid: %d\n",
ip->i_lockholder);
} else {
@@ -1559,11 +1557,17 @@ start:
}
#ifdef DIAGNOSTIC
ip->i_lockwaiter = 0;
- if (ip->i_lockholder != 0)
+ if (((ip->i_flag & IN_RECURSE) == 0) && (ip->i_lockholder != 0))
panic("lockholder (%d) != 0", ip->i_lockholder);
if (p && p->p_pid == 0)
printf("locking by process 0\n");
#endif
+
+ if ((ip->i_flag & IN_RECURSE) == 0)
+ ip->i_lockcount = 1;
+ else
+ ++ip->i_lockcount;
+
if (p)
ip->i_lockholder = p->p_pid;
else