Commit 4152cdfa authored by Andrew Morton's avatar Andrew Morton Committed by Linus Torvalds

[PATCH] JBD: transaction buffer accounting fix

From: Alex Tomas <bzzz@tmi.comex.ru>

start_this_handle() takes into account t_outstanding_credits when calculating
log free space, but journal_next_log_block() accounts for blocks being logged
also.  Hence, blocks are accounting twice.  This effectively reduces the
amount of log space available to transactions and forces more commits.

Fix it by decrementing t_outstanding_credits each time we allocate a new
journal block.
parent a2df663d
...@@ -401,6 +401,13 @@ void journal_commit_transaction(journal_t *journal) ...@@ -401,6 +401,13 @@ void journal_commit_transaction(journal_t *journal)
continue; continue;
} }
/*
* start_this_handle() uses t_outstanding_credits to determine
* the free space in the log, but this counter is changed
* by journal_next_log_block() also.
*/
commit_transaction->t_outstanding_credits--;
/* Bump b_count to prevent truncate from stumbling over /* Bump b_count to prevent truncate from stumbling over
the shadowed buffer! @@@ This can go if we ever get the shadowed buffer! @@@ This can go if we ever get
rid of the BJ_IO/BJ_Shadow pairing of buffers. */ rid of the BJ_IO/BJ_Shadow pairing of buffers. */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment