@@ -545,13 +545,25 @@ struct fsync_inode_entry {
545545#define nats_in_cursum (jnl ) (le16_to_cpu((jnl)->n_nats))
546546#define sits_in_cursum (jnl ) (le16_to_cpu((jnl)->n_sits))
547547
548- #define nat_in_journal (jnl , i ) ((jnl)->nat_j.entries[i].ne)
549- #define nid_in_journal (jnl , i ) ((jnl)->nat_j.entries[i].nid)
550- #define sit_in_journal (jnl , i ) ((jnl)->sit_j.entries[i].se)
551- #define segno_in_journal (jnl , i ) ((jnl)->sit_j.entries[i].segno)
552-
553- #define MAX_NAT_JENTRIES (jnl ) (NAT_JOURNAL_ENTRIES - nats_in_cursum(jnl))
554- #define MAX_SIT_JENTRIES (jnl ) (SIT_JOURNAL_ENTRIES - sits_in_cursum(jnl))
548+ #define nat_in_journal (jnl , i ) \
549+ (((struct nat_journal_entry *)(jnl)->nat_j.entries)[i].ne)
550+ #define nid_in_journal (jnl , i ) \
551+ (((struct nat_journal_entry *)(jnl)->nat_j.entries)[i].nid)
552+ #define sit_in_journal (jnl , i ) \
553+ (((struct sit_journal_entry *)(jnl)->sit_j.entries)[i].se)
554+ #define segno_in_journal (jnl , i ) \
555+ (((struct sit_journal_entry *)(jnl)->sit_j.entries)[i].segno)
556+
557+ #define sum_entries (sum ) ((struct f2fs_summary *)(sum))
558+ #define sum_journal (sbi , sum ) \
559+ ((struct f2fs_journal *)((char *)(sum) + \
560+ ((sbi)->entries_in_sum * sizeof(struct f2fs_summary))))
561+ #define sum_footer (sbi , sum ) \
562+ ((struct summary_footer *)((char *)(sum) + (sbi)->sum_blocksize - \
563+ sizeof(struct summary_footer)))
564+
565+ #define MAX_NAT_JENTRIES (sbi , jnl ) ((sbi)->nat_journal_entries - nats_in_cursum(jnl))
566+ #define MAX_SIT_JENTRIES (sbi , jnl ) ((sbi)->sit_journal_entries - sits_in_cursum(jnl))
555567
556568static inline int update_nats_in_cursum (struct f2fs_journal * journal , int i )
557569{
@@ -569,14 +581,6 @@ static inline int update_sits_in_cursum(struct f2fs_journal *journal, int i)
569581 return before ;
570582}
571583
572- static inline bool __has_cursum_space (struct f2fs_journal * journal ,
573- int size , int type )
574- {
575- if (type == NAT_JOURNAL )
576- return size <= MAX_NAT_JENTRIES (journal );
577- return size <= MAX_SIT_JENTRIES (journal );
578- }
579-
580584/* for inline stuff */
581585#define DEF_INLINE_RESERVED_SIZE 1
582586static inline int get_extra_isize (struct inode * inode );
@@ -1809,6 +1813,15 @@ struct f2fs_sb_info {
18091813 bool readdir_ra ; /* readahead inode in readdir */
18101814 unsigned int max_io_bytes ; /* max io bytes to merge IOs */
18111815
1816+ /* variable summary block units */
1817+ unsigned int sum_blocksize ; /* sum block size */
1818+ unsigned int sums_per_block ; /* sum block count per block */
1819+ unsigned int entries_in_sum ; /* entry count in sum block */
1820+ unsigned int sum_entry_size ; /* total entry size in sum block */
1821+ unsigned int sum_journal_size ; /* journal size in sum block */
1822+ unsigned int nat_journal_entries ; /* nat journal entry count in the journal */
1823+ unsigned int sit_journal_entries ; /* sit journal entry count in the journal */
1824+
18121825 block_t user_block_count ; /* # of user blocks */
18131826 block_t total_valid_block_count ; /* # of valid blocks */
18141827 block_t discard_blks ; /* discard command candidats */
@@ -2850,6 +2863,14 @@ static inline block_t __start_sum_addr(struct f2fs_sb_info *sbi)
28502863 return le32_to_cpu (F2FS_CKPT (sbi )-> cp_pack_start_sum );
28512864}
28522865
2866+ static inline bool __has_cursum_space (struct f2fs_sb_info * sbi ,
2867+ struct f2fs_journal * journal , int size , int type )
2868+ {
2869+ if (type == NAT_JOURNAL )
2870+ return size <= MAX_NAT_JENTRIES (sbi , journal );
2871+ return size <= MAX_SIT_JENTRIES (sbi , journal );
2872+ }
2873+
28532874extern void f2fs_mark_inode_dirty_sync (struct inode * inode , bool sync );
28542875static inline int inc_valid_node_count (struct f2fs_sb_info * sbi ,
28552876 struct inode * inode , bool is_inode )
@@ -3993,7 +4014,8 @@ void f2fs_wait_on_block_writeback_range(struct inode *inode, block_t blkaddr,
39934014 block_t len );
39944015void f2fs_write_data_summaries (struct f2fs_sb_info * sbi , block_t start_blk );
39954016void f2fs_write_node_summaries (struct f2fs_sb_info * sbi , block_t start_blk );
3996- int f2fs_lookup_journal_in_cursum (struct f2fs_journal * journal , int type ,
4017+ int f2fs_lookup_journal_in_cursum (struct f2fs_sb_info * sbi ,
4018+ struct f2fs_journal * journal , int type ,
39974019 unsigned int val , int alloc );
39984020void f2fs_flush_sit_entries (struct f2fs_sb_info * sbi , struct cp_control * cpc );
39994021int f2fs_check_and_fix_write_pointer (struct f2fs_sb_info * sbi );
0 commit comments