* "checkfs" would run into a panic (transaction still open) when trying to

write back the bitmap.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28478 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler
2008-11-03 13:39:33 +00:00
parent 624d93479a
commit 44e4ddfdc1
+16 -14
View File
@@ -933,21 +933,22 @@ Journal::Lock(Transaction* owner, bool separateSubTransactions)
// For that, it would be nice to have some call-back interface in the // For that, it would be nice to have some call-back interface in the
// cache transaction API... // cache transaction API...
if (fUnwrittenTransactions > 0) { if (fOwner != NULL) {
// start a sub transaction if (fUnwrittenTransactions > 0) {
cache_start_sub_transaction(fVolume->BlockCache(), fTransactionID); // start a sub transaction
fHasSubtransaction = true; cache_start_sub_transaction(fVolume->BlockCache(), fTransactionID);
} else fHasSubtransaction = true;
fTransactionID = cache_start_transaction(fVolume->BlockCache()); } else
fTransactionID = cache_start_transaction(fVolume->BlockCache());
if (fTransactionID < B_OK) { if (fTransactionID < B_OK) {
recursive_lock_unlock(&fLock); recursive_lock_unlock(&fLock);
return fTransactionID; return fTransactionID;
}
cache_add_transaction_listener(fVolume->BlockCache(), fTransactionID,
TRANSACTION_IDLE, _TransactionIdle, this);
} }
cache_add_transaction_listener(fVolume->BlockCache(), fTransactionID,
TRANSACTION_IDLE, _TransactionIdle, this);
return B_OK; return B_OK;
} }
@@ -959,7 +960,8 @@ Journal::Unlock(Transaction* owner, bool success)
// we only end the transaction if we would really unlock it // we only end the transaction if we would really unlock it
// TODO: what about failing transactions that do not unlock? // TODO: what about failing transactions that do not unlock?
// (they must make the parent fail, too) // (they must make the parent fail, too)
_TransactionDone(success); if (fOwner != NULL)
_TransactionDone(success);
fTimestamp = system_time(); fTimestamp = system_time();
fOwner = NULL; fOwner = NULL;