shithub: lwext4

Download patch

ref: ca673ab65bf77f2c71283583286992ffcddc52e6
parent: c1185991fa175c25b4ba47160784e64bc5deb4ce
author: gkostka <[email protected]>
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;
 }