f2fs: introduce f2fs_journal struct to wrap journal info
PATCH 1/7 f2fs: introduce f2fs_journal struct to wrap journal info
Introduce a new structure f2fs_journal to wrap journal info in struct f2fs_summary_block for readability.
struct f2fs_journal {
union {
__le16 n_nats;
__le16 n_sits;
};
union {
struct nat_journal nat_j;
struct sit_journal sit_j;
struct f2fs_extra_info info;
};
} __packed;struct f2fs_summary_block {
struct f2fs_summary entries[ENTRIES_IN_SUM];
struct f2fs_journal journal;
struct summary_footer footer;
} __packed;Signed-off-by Chao Yu <[email protected]>
--- fs/f2fs/checkpoint.c | 2 +- fs/f2fs/f2fs.h | 39 +++++++++++++++++------------------ fs/f2fs/node.c | 42 ++++++++++++++++++++------------------ fs/f2fs/segment.c | 54 ++++++++++++++++++++++++------------------------- fs/f2fs/super.c | 2 +- include/linux/f2fs_fs.h | 10 ++++++--- 6 files changed, 77 insertions(+), 72 deletions(-)
fs/f2fs/checkpoint.c +1 -1
@@ -1051,7 +1051,7 @@ static int do_checkpoint(struct f2fs_sb_info *sbi, struct cp_control *cpc)if (sb->s_bdev->bd_part) kbytes_written +=BD_PART_WRITTEN (sbi); - seg_i->sum_blk->info.kbytes_written =cpu_to_le64 (kbytes_written); + seg_i->sum_blk->journal.info.kbytes_written =cpu_to_le64 (kbytes_written);if (__remain_node_summaries (cpc->reason)) {write_node_summaries (sbi, start_blk);
fs/f2fs/f2fs.h +19 -20
@@ -183,37 +183,37 @@ struct fsync_inode_entry {block_t last_inode;/* block address locating the last inode */ }; -#define nats_in_cursum (sum) (le16_to_cpu(sum->n_nats)) -#define sits_in_cursum (sum) (le16_to_cpu(sum->n_sits)) +#define nats_in_cursum (jnl) (le16_to_cpu(jnl->n_nats)) +#define sits_in_cursum (jnl) (le16_to_cpu(jnl->n_sits)) -#define nat_in_journal (sum, i) (sum->nat_j.entries[i].ne) -#define nid_in_journal (sum, i) (sum->nat_j.entries[i].nid) -#define sit_in_journal (sum, i) (sum->sit_j.entries[i].se) -#define segno_in_journal (sum, i) (sum->sit_j.entries[i].segno) +#define nat_in_journal (jnl, i) (jnl->nat_j.entries[i].ne) +#define nid_in_journal (jnl, i) (jnl->nat_j.entries[i].nid) +#define sit_in_journal (jnl, i) (jnl->sit_j.entries[i].se) +#define segno_in_journal (jnl, i) (jnl->sit_j.entries[i].segno) -#define MAX_NAT_JENTRIES (sum) (NAT_JOURNAL_ENTRIES - nats_in_cursum(sum)) -#define MAX_SIT_JENTRIES (sum) (SIT_JOURNAL_ENTRIES - sits_in_cursum(sum)) +#define MAX_NAT_JENTRIES (jnl) (NAT_JOURNAL_ENTRIES - nats_in_cursum(jnl)) +#define MAX_SIT_JENTRIES (jnl) (SIT_JOURNAL_ENTRIES - sits_in_cursum(jnl)) -static inline int update_nats_in_cursum (struct f2fs_summary_block *rs,int i) +static inline int update_nats_in_cursum (struct f2fs_journal *journal,int i) { -int before =nats_in_cursum (rs); - rs->n_nats =cpu_to_le16 (before + i); +int before =nats_in_cursum (journal); + journal->n_nats =cpu_to_le16 (before + i);return before; } -static inline int update_sits_in_cursum (struct f2fs_summary_block *rs,int i) +static inline int update_sits_in_cursum (struct f2fs_journal *journal,int i) { -int before =sits_in_cursum (rs); - rs->n_sits =cpu_to_le16 (before + i); +int before =sits_in_cursum (journal); + journal->n_sits =cpu_to_le16 (before + i);return before; } -static inline bool __has_cursum_space (struct f2fs_summary_block *sum,int size, -int type) +static inline bool __has_cursum_space (struct f2fs_journal *journal, +int size,int type) {if (type ==NAT_JOURNAL ) -return size <=MAX_NAT_JENTRIES (sum); -return size <=MAX_SIT_JENTRIES (sum); +return size <=MAX_NAT_JENTRIES (journal); +return size <=MAX_SIT_JENTRIES (journal); }/*
@@ -1862,8 +1862,7 @@ void f2fs_wait_on_page_writeback(struct page *, enum page_type, bool);void f2fs_wait_on_encrypted_page_writeback (struct f2fs_sb_info *,block_t );void write_data_summaries (struct f2fs_sb_info *,block_t );void write_node_summaries (struct f2fs_sb_info *,block_t ); -int lookup_journal_in_cursum (struct f2fs_summary_block *, -int ,unsigned int ,int ); +int lookup_journal_in_cursum (struct f2fs_journal *,int ,unsigned int ,int );void flush_sit_entries (struct f2fs_sb_info *,struct cp_control *);int build_segment_manager (struct f2fs_sb_info *);void destroy_segment_manager (struct f2fs_sb_info *);
fs/f2fs/node.c +22 -20
123 lines not on this page · raw message
fs/f2fs/segment.c +27 -27
145 lines not on this page · raw message
fs/f2fs/super.c +1 -1
@@ -1414,7 +1414,7 @@ try_onemore: seg_i =CURSEG_I (sbi,CURSEG_HOT_NODE );if (__exist_node_summaries (sbi)) sbi->kbytes_written = -le64_to_cpu (seg_i->sum_blk->info.kbytes_written); +le64_to_cpu (seg_i->sum_blk->journal.info.kbytes_written);build_gc_manager (sbi);
include/linux/f2fs_fs.h +7 -3
@@ -398,9 +398,7 @@ struct f2fs_extra_info {__u8 reserved[EXTRA_INFO_RESERVED ]; } __packed; -/* 4KB-sized summary block structure */ -struct f2fs_summary_block { -struct f2fs_summary entries[ENTRIES_IN_SUM ]; +struct f2fs_journal {union {__le16 n_nats;__le16 n_sits;
@@ -411,6 +409,12 @@ struct f2fs_summary_block {struct sit_journal sit_j;struct f2fs_extra_info info; }; +} __packed; + +/* 4KB-sized summary block structure */ +struct f2fs_summary_block { +struct f2fs_summary entries[ENTRIES_IN_SUM ]; +struct f2fs_journal journal;struct summary_footer footer; } __packed;
Signature · 1 line
2.7.0.2.g1b0b6dd