diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/ext4_journal.c | 10 |
1 files changed, 6 insertions, 4 deletions
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; } |
