diff options
| -rw-r--r-- | lwext4/ext4_journal.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/lwext4/ext4_journal.c b/lwext4/ext4_journal.c index 4bbaeb0..7e148e8 100644 --- a/lwext4/ext4_journal.c +++ b/lwext4/ext4_journal.c @@ -838,9 +838,14 @@ int jbd_journal_stop(struct jbd_journal *journal) static uint32_t jbd_journal_alloc_block(struct jbd_journal *journal, struct jbd_trans *trans) { - uint32_t start_block = journal->last++; + uint32_t start_block; + + start_block = journal->last++; trans->alloc_blocks++; wrap(&journal->jbd_fs->sb, journal->last); + if (journal->last == journal->start) + ext4_block_cache_flush(journal->jbd_fs->inode_ref.fs->bdev); + return start_block; } @@ -1190,6 +1195,7 @@ void jbd_journal_commit_one(struct jbd_journal *journal) int rc = EOK; uint32_t last = journal->last; struct jbd_trans *trans; + if ((trans = TAILQ_FIRST(&journal->trans_queue))) { TAILQ_REMOVE(&journal->trans_queue, trans, trans_node); |
