@@ -508,13 +508,25 @@ struct fsync_inode_entry {
508508#define nats_in_cursum (jnl ) (le16_to_cpu((jnl)->n_nats))
509509#define sits_in_cursum (jnl ) (le16_to_cpu((jnl)->n_sits))
510510
511- #define nat_in_journal (jnl , i ) ((jnl)->nat_j.entries[i].ne)
512- #define nid_in_journal (jnl , i ) ((jnl)->nat_j.entries[i].nid)
513- #define sit_in_journal (jnl , i ) ((jnl)->sit_j.entries[i].se)
514- #define segno_in_journal (jnl , i ) ((jnl)->sit_j.entries[i].segno)
515-
516- #define MAX_NAT_JENTRIES (jnl ) (NAT_JOURNAL_ENTRIES - nats_in_cursum(jnl))
517- #define MAX_SIT_JENTRIES (jnl ) (SIT_JOURNAL_ENTRIES - sits_in_cursum(jnl))
511+ #define nat_in_journal (jnl , i ) \
512+ (((struct nat_journal_entry *)(jnl)->nat_j.entries)[i].ne)
513+ #define nid_in_journal (jnl , i ) \
514+ (((struct nat_journal_entry *)(jnl)->nat_j.entries)[i].nid)
515+ #define sit_in_journal (jnl , i ) \
516+ (((struct sit_journal_entry *)(jnl)->sit_j.entries)[i].se)
517+ #define segno_in_journal (jnl , i ) \
518+ (((struct sit_journal_entry *)(jnl)->sit_j.entries)[i].segno)
519+
520+ #define sum_entries (sum ) ((struct f2fs_summary *)(sum))
521+ #define sum_journal (sbi , sum ) \
522+ ((struct f2fs_journal *)((char *)(sum) + \
523+ ((sbi)->entries_in_sum * sizeof(struct f2fs_summary))))
524+ #define sum_footer (sbi , sum ) \
525+ ((struct summary_footer *)((char *)(sum) + (sbi)->sum_blocksize - \
526+ sizeof(struct summary_footer)))
527+
528+ #define MAX_NAT_JENTRIES (sbi , jnl ) ((sbi)->nat_journal_entries - nats_in_cursum(jnl))
529+ #define MAX_SIT_JENTRIES (sbi , jnl ) ((sbi)->sit_journal_entries - sits_in_cursum(jnl))
518530
519531static inline int update_nats_in_cursum (struct f2fs_journal * journal , int i )
520532{
@@ -532,14 +544,6 @@ static inline int update_sits_in_cursum(struct f2fs_journal *journal, int i)
532544 return before ;
533545}
534546
535- static inline bool __has_cursum_space (struct f2fs_journal * journal ,
536- int size , int type )
537- {
538- if (type == NAT_JOURNAL )
539- return size <= MAX_NAT_JENTRIES (journal );
540- return size <= MAX_SIT_JENTRIES (journal );
541- }
542-
543547/* for inline stuff */
544548#define DEF_INLINE_RESERVED_SIZE 1
545549static inline int get_extra_isize (struct inode * inode );
@@ -1750,6 +1754,15 @@ struct f2fs_sb_info {
17501754 bool readdir_ra ; /* readahead inode in readdir */
17511755 u64 max_io_bytes ; /* max io bytes to merge IOs */
17521756
1757+ /* variable summary block units */
1758+ unsigned int sum_blocksize ; /* sum block size */
1759+ unsigned int sums_per_block ; /* sum block count per block */
1760+ unsigned int entries_in_sum ; /* entry count in sum block */
1761+ unsigned int sum_entry_size ; /* total entry size in sum block */
1762+ unsigned int sum_journal_size ; /* journal size in sum block */
1763+ unsigned int nat_journal_entries ; /* nat journal entry count in the journal */
1764+ unsigned int sit_journal_entries ; /* sit journal entry count in the journal */
1765+
17531766 block_t user_block_count ; /* # of user blocks */
17541767 block_t total_valid_block_count ; /* # of valid blocks */
17551768 block_t discard_blks ; /* discard command candidats */
@@ -2799,6 +2812,14 @@ static inline block_t __start_sum_addr(struct f2fs_sb_info *sbi)
27992812 return le32_to_cpu (F2FS_CKPT (sbi )-> cp_pack_start_sum );
28002813}
28012814
2815+ static inline bool __has_cursum_space (struct f2fs_sb_info * sbi ,
2816+ struct f2fs_journal * journal , int size , int type )
2817+ {
2818+ if (type == NAT_JOURNAL )
2819+ return size <= MAX_NAT_JENTRIES (sbi , journal );
2820+ return size <= MAX_SIT_JENTRIES (sbi , journal );
2821+ }
2822+
28022823extern void f2fs_mark_inode_dirty_sync (struct inode * inode , bool sync );
28032824static inline int inc_valid_node_count (struct f2fs_sb_info * sbi ,
28042825 struct inode * inode , bool is_inode )
@@ -3952,7 +3973,8 @@ void f2fs_wait_on_block_writeback_range(struct inode *inode, block_t blkaddr,
39523973 block_t len );
39533974void f2fs_write_data_summaries (struct f2fs_sb_info * sbi , block_t start_blk );
39543975void f2fs_write_node_summaries (struct f2fs_sb_info * sbi , block_t start_blk );
3955- int f2fs_lookup_journal_in_cursum (struct f2fs_journal * journal , int type ,
3976+ int f2fs_lookup_journal_in_cursum (struct f2fs_sb_info * sbi ,
3977+ struct f2fs_journal * journal , int type ,
39563978 unsigned int val , int alloc );
39573979void f2fs_flush_sit_entries (struct f2fs_sb_info * sbi , struct cp_control * cpc );
39583980int f2fs_check_and_fix_write_pointer (struct f2fs_sb_info * sbi );
0 commit comments