* "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:
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user