summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorngkaho1234 <ngkaho1234@gmail.com>2015-12-17 09:44:06 +0000
committerngkaho1234 <ngkaho1234@gmail.com>2015-12-17 09:44:06 +0000
commit740927e660015515a8ab6c3e777e76aeffcd140f (patch)
tree7625bd5ff1a2f52f3a1cc3beda5cb93069b8e788
parent824e15d0a277d9c6b9e357226dce4ae79d748bbc (diff)
ext4_journal: wrap around journal->start if it overflows.
-rw-r--r--lwext4/ext4_journal.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/lwext4/ext4_journal.c b/lwext4/ext4_journal.c
index 5cd70f4..49e44f3 100644
--- a/lwext4/ext4_journal.c
+++ b/lwext4/ext4_journal.c
@@ -1160,6 +1160,7 @@ static void jbd_trans_end_write(struct ext4_bcache *bc __unused,
if (first_in_queue) {
journal->start = trans->start_iblock +
trans->alloc_blocks;
+ wrap(&journal->jbd_fs->sb, journal->start);
journal->trans_id = trans->trans_id + 1;
}
jbd_journal_free_trans(journal, trans, false);
@@ -1172,11 +1173,13 @@ static void jbd_trans_end_write(struct ext4_bcache *bc __unused,
trans_node);
journal->start = trans->start_iblock +
trans->alloc_blocks;
+ wrap(&journal->jbd_fs->sb, journal->start);
journal->trans_id = trans->trans_id + 1;
jbd_journal_free_trans(journal,
trans, false);
} else {
journal->start = trans->start_iblock;
+ wrap(&journal->jbd_fs->sb, journal->start);
journal->trans_id = trans->trans_id;
break;
}
@@ -1213,6 +1216,7 @@ void jbd_journal_commit_one(struct jbd_journal *journal)
if (TAILQ_EMPTY(&journal->cp_queue)) {
if (trans->data_cnt) {
journal->start = trans->start_iblock;
+ wrap(&journal->jbd_fs->sb, journal->start);
journal->trans_id = trans->trans_id;
jbd_journal_write_sb(journal);
jbd_write_sb(journal->jbd_fs);
@@ -1222,6 +1226,7 @@ void jbd_journal_commit_one(struct jbd_journal *journal)
} else {
journal->start = trans->start_iblock +
trans->alloc_blocks;
+ wrap(&journal->jbd_fs->sb, journal->start);
journal->trans_id = trans->trans_id + 1;
jbd_journal_write_sb(journal);
jbd_journal_free_trans(journal, trans, false);