diff options
| author | ngkaho1234 <ngkaho1234@gmail.com> | 2015-12-24 05:19:10 +0000 |
|---|---|---|
| committer | ngkaho1234 <ngkaho1234@gmail.com> | 2015-12-24 05:19:10 +0000 |
| commit | 02cad7eee3a935c99dfd5163accb214af503a32a (patch) | |
| tree | 6a8a39c4a922a941438d3318863268fb5c0c750a | |
| parent | e353c4e1812bff98f28c464f6b999a9b47dc8f7a (diff) | |
ext4_journal: add trans parameter to jbd_trans_get_access routine.
| -rw-r--r-- | lwext4/ext4.c | 2 | ||||
| -rw-r--r-- | lwext4/ext4_journal.c | 5 | ||||
| -rw-r--r-- | lwext4/ext4_journal.h | 1 |
3 files changed, 6 insertions, 2 deletions
diff --git a/lwext4/ext4.c b/lwext4/ext4.c index b63f65b..c7fc2f8 100644 --- a/lwext4/ext4.c +++ b/lwext4/ext4.c @@ -2562,7 +2562,7 @@ int ext4_test_journal(const char *mount_point) switch (rand() % 2) { case 0: - r = jbd_trans_get_access(journal, &block); + r = jbd_trans_get_access(journal, t, &block); if (r != EOK) { jbd_journal_free_trans(journal, t, true); diff --git a/lwext4/ext4_journal.c b/lwext4/ext4_journal.c index e5dab1e..ada92ff 100644 --- a/lwext4/ext4_journal.c +++ b/lwext4/ext4_journal.c @@ -1094,9 +1094,11 @@ static void jbd_trans_end_write(struct ext4_bcache *bc __unused, /**@brief gain access to it before making any modications. * @param journal current journal session + * @param trans transaction * @param block descriptor * @return standard error code.*/ int jbd_trans_get_access(struct jbd_journal *journal, + struct jbd_trans *trans, struct ext4_block *block) { int r = EOK; @@ -1105,7 +1107,8 @@ int jbd_trans_get_access(struct jbd_journal *journal, /* If the buffer has already been modified, we should * flush dirty data in this buffer to disk.*/ if (ext4_bcache_test_flag(block->buf, BC_DIRTY) && - block->buf->end_write == jbd_trans_end_write) { + block->buf->end_write == jbd_trans_end_write && + block->buf->end_write_arg != trans) { r = ext4_block_flush_buf(fs->bdev, block->buf); } return r; diff --git a/lwext4/ext4_journal.h b/lwext4/ext4_journal.h index d68c708..232b7ab 100644 --- a/lwext4/ext4_journal.h +++ b/lwext4/ext4_journal.h @@ -56,6 +56,7 @@ int jbd_journal_start(struct jbd_fs *jbd_fs, int jbd_journal_stop(struct jbd_journal *journal); struct jbd_trans *jbd_journal_new_trans(struct jbd_journal *journal); int jbd_trans_get_access(struct jbd_journal *journal, + struct jbd_trans *trans, struct ext4_block *block); int jbd_trans_set_block_dirty(struct jbd_trans *trans, struct ext4_block *block); |
