diff options
| author | John Dyson <dyson@FreeBSD.org> | 1995-04-25 03:32:37 +0000 |
|---|---|---|
| committer | John Dyson <dyson@FreeBSD.org> | 1995-04-25 03:32:37 +0000 |
| commit | a4256da5ad5989586403c8b0fe01d6293e9c2c10 (patch) | |
| tree | 2a3d12cc90bc89db3116906107c22ad5de79768c /sys/ufs | |
| parent | 28f1950b10135b2f92c03c04dea3b6d725b44ae6 (diff) | |
Notes
Diffstat (limited to 'sys/ufs')
| -rw-r--r-- | sys/ufs/ufs/ufs_vnops.c | 14 |
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 |
