summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Kleikamp <jfs.adm@hostme.bitkeeper.com>2002-10-03 15:29:59 -0700
committerDave Kleikamp <jfs.adm@hostme.bitkeeper.com>2002-10-03 15:29:59 -0700
commit854f96ea62977d57b644a35acbb2f66e5f44bda5 (patch)
treeca864f0d0901f5b485ec66090e81b031478311e5
parent706e54557b43681eae8eb0443eab33262f603127 (diff)
parentb0df1a7ad33a27959bbc0a341c2c00b19c32fc2b (diff)
Merge bk://linus.bkbits.net/linux-2.5
into hostme.bitkeeper.com:/ua/repos/j/jfs/linux-2.5
-rw-r--r--fs/jfs/jfs_txnmgr.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/fs/jfs/jfs_txnmgr.c b/fs/jfs/jfs_txnmgr.c
index 7e2ddf0da906..ede71390b984 100644
--- a/fs/jfs/jfs_txnmgr.c
+++ b/fs/jfs/jfs_txnmgr.c
@@ -2746,13 +2746,16 @@ void txLazyCommit(struct tblock * tblk)
if (tblk->flag & tblkGC_READY)
wake_up(&tblk->gcwait); // LOGGC_WAKEUP
- spin_unlock_irq(&log->gclock); // LOGGC_UNLOCK
-
+ /*
+ * Can't release log->gclock until we've tested tblk->flag
+ */
if (tblk->flag & tblkGC_LAZY) {
+ spin_unlock_irq(&log->gclock); // LOGGC_UNLOCK
txUnlock(tblk);
tblk->flag &= ~tblkGC_LAZY;
txEnd(tblk - TxBlock); /* Convert back to tid */
- }
+ } else
+ spin_unlock_irq(&log->gclock); // LOGGC_UNLOCK
jFYI(1, ("txLazyCommit: done: tblk = 0x%p\n", tblk));
}