From ca673ab65bf77f2c71283583286992ffcddc52e6 Mon Sep 17 00:00:00 2001 From: gkostka Date: Thu, 19 Jan 2017 01:04:49 +0100 Subject: ext4_journal: improve jbd_journal_alloc_block performance Purge only one journal transaction if we are run out of journal device space. --- src/ext4_journal.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/ext4_journal.c b/src/ext4_journal.c index 98e3573..e683e10 100644 --- a/src/ext4_journal.c +++ b/src/ext4_journal.c @@ -1459,10 +1459,12 @@ static uint32_t jbd_journal_alloc_block(struct jbd_journal *journal, 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; } -- cgit v1.2.3