mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 06:44:00 -04:00
jbd2: Account descriptor blocks into t_outstanding_credits
Currently, journal descriptor blocks were not accounted in transaction->t_outstanding_credits and we were just leaving some slack space in the journal for them (in jbd2_log_space_left() and jbd2_space_needed()). This is making proper accounting (and reservation we want to add) of descriptor blocks difficult so switch to accounting descriptor blocks in transaction->t_outstanding_credits and just reserve the same amount of credits in t_outstanding credits for journal descriptor blocks when creating transaction. Signed-off-by: Jan Kara <jack@suse.cz> Link: https://lore.kernel.org/r/20191105164437.32602-18-jack@suse.cz Signed-off-by: Theodore Ts'o <tytso@mit.edu>
This commit is contained in:
@@ -560,8 +560,7 @@ void jbd2_journal_commit_transaction(journal_t *journal)
|
||||
stats.run.rs_logging = jiffies;
|
||||
stats.run.rs_flushing = jbd2_time_diff(stats.run.rs_flushing,
|
||||
stats.run.rs_logging);
|
||||
stats.run.rs_blocks =
|
||||
atomic_read(&commit_transaction->t_outstanding_credits);
|
||||
stats.run.rs_blocks = commit_transaction->t_nr_buffers;
|
||||
stats.run.rs_blocks_logged = 0;
|
||||
|
||||
J_ASSERT(commit_transaction->t_nr_buffers <=
|
||||
@@ -889,6 +888,9 @@ start_journal_io:
|
||||
if (err)
|
||||
jbd2_journal_abort(journal, err);
|
||||
|
||||
WARN_ON_ONCE(
|
||||
atomic_read(&commit_transaction->t_outstanding_credits) < 0);
|
||||
|
||||
/*
|
||||
* Now disk caches for filesystem device are flushed so we are safe to
|
||||
* erase checkpointed transactions from the log by updating journal
|
||||
|
||||
Reference in New Issue
Block a user