jbd2: add todo for a fast commit performance optimization

Fast commit performance can be optimized if commit thread doesn't wait
for ongoing fast commits to complete until the transaction enters
T_FLUSH state. Document this optimization.

Suggested-by: Jan Kara <jack@suse.cz>
Signed-off-by: Harshad Shirwadkar <harshadshirwadkar@gmail.com>
Link: https://lore.kernel.org/r/20201106035911.1942128-11-harshadshirwadkar@gmail.com
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
This commit is contained in:
Harshad Shirwadkar 2020-11-05 19:58:59 -08:00 committed by Theodore Ts'o
parent 0bce577bf9
commit cc80586a57

View File

@ -450,6 +450,15 @@ void jbd2_journal_commit_transaction(journal_t *journal)
schedule(); schedule();
write_lock(&journal->j_state_lock); write_lock(&journal->j_state_lock);
finish_wait(&journal->j_fc_wait, &wait); finish_wait(&journal->j_fc_wait, &wait);
/*
* TODO: by blocking fast commits here, we are increasing
* fsync() latency slightly. Strictly speaking, we don't need
* to block fast commits until the transaction enters T_FLUSH
* state. So an optimization is possible where we block new fast
* commits here and wait for existing ones to complete
* just before we enter T_FLUSH. That way, the existing fast
* commits and this full commit can proceed parallely.
*/
} }
write_unlock(&journal->j_state_lock); write_unlock(&journal->j_state_lock);