ref: ca673ab65bf77f2c71283583286992ffcddc52e6
parent: c1185991fa175c25b4ba47160784e64bc5deb4ce
author: gkostka <kostka.grzegorz@gmail.com>
date: Wed Jan 18 20:04:49 EST 2017
ext4_journal: improve jbd_journal_alloc_block performance Purge only one journal transaction if we are run out of journal device space.
--- a/src/ext4_journal.c
+++ b/src/ext4_journal.c
@@ -1459,10 +1459,12 @@
trans->alloc_blocks++;
wrap(&journal->jbd_fs->sb, journal->last);
- /* If there is no space left, flush all journalled
- * blocks to disk first.*/
- if (journal->last == journal->start)
- jbd_journal_purge_cp_trans(journal, true, false);
+ /* If there is no space left, flush just one journalled
+ * transaction.*/
+ if (journal->last == journal->start) {
+ jbd_journal_purge_cp_trans(journal, true, true);
+ ext4_assert(journal->last != journal->start);
+ }
return start_block;
}