diff options
| author | ngkaho1234 <ngkaho1234@gmail.com> | 2016-01-31 22:31:05 +0800 |
|---|---|---|
| committer | ngkaho1234 <ngkaho1234@gmail.com> | 2016-01-31 15:57:43 +0000 |
| commit | 252c506239ab570c0f671513a3b17d3a44f86b5c (patch) | |
| tree | 205681753f461e59880c2447588efd710b182746 /include/ext4_journal.h | |
| parent | 3e42ad4c558d5f3e12cdf22f4d6610836c7df129 (diff) | |
Refactor header files dependencies.
Diffstat (limited to 'include/ext4_journal.h')
| -rw-r--r-- | include/ext4_journal.h | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/include/ext4_journal.h b/include/ext4_journal.h index 8e193cc..6961e15 100644 --- a/include/ext4_journal.h +++ b/include/ext4_journal.h @@ -43,6 +43,74 @@ extern "C" { #include "ext4_config.h" #include "ext4_types.h" +#include "misc/queue.h" +#include "misc/tree.h" + +struct jbd_fs { + /* If journal block device is used, bdev will be non-null */ + struct ext4_blockdev *bdev; + struct ext4_inode_ref inode_ref; + struct jbd_sb sb; + + bool dirty; +}; + +struct jbd_buf { + uint64_t jbd_lba; + struct ext4_block block; + struct jbd_trans *trans; + struct jbd_block_rec *block_rec; + TAILQ_ENTRY(jbd_buf) buf_node; + TAILQ_ENTRY(jbd_buf) dirty_buf_node; +}; + +struct jbd_revoke_rec { + ext4_fsblk_t lba; + LIST_ENTRY(jbd_revoke_rec) revoke_node; +}; + +struct jbd_block_rec { + ext4_fsblk_t lba; + struct ext4_buf *buf; + struct jbd_trans *trans; + RB_ENTRY(jbd_block_rec) block_rec_node; + LIST_ENTRY(jbd_block_rec) tbrec_node; + TAILQ_HEAD(jbd_buf_dirty, jbd_buf) dirty_buf_queue; +}; + +struct jbd_trans { + uint32_t trans_id; + + uint32_t start_iblock; + int alloc_blocks; + int data_cnt; + uint32_t data_csum; + int written_cnt; + int error; + + struct jbd_journal *journal; + + TAILQ_HEAD(jbd_trans_buf, jbd_buf) buf_queue; + LIST_HEAD(jbd_revoke_list, jbd_revoke_rec) revoke_list; + LIST_HEAD(jbd_trans_block_rec, jbd_block_rec) tbrec_list; + TAILQ_ENTRY(jbd_trans) trans_node; +}; + +struct jbd_journal { + uint32_t first; + uint32_t start; + uint32_t last; + uint32_t trans_id; + uint32_t alloc_trans_id; + + uint32_t block_size; + + TAILQ_HEAD(jbd_trans_queue, jbd_trans) trans_queue; + TAILQ_HEAD(jbd_cp_queue, jbd_trans) cp_queue; + RB_HEAD(jbd_block, jbd_block_rec) block_rec_root; + + struct jbd_fs *jbd_fs; +}; int jbd_get_fs(struct ext4_fs *fs, struct jbd_fs *jbd_fs); |
