|
| #define | EXIT_ERR_CODE (-1) |
| |
| #define | ver_after(a, b) |
| |
| #define | container_of(ptr, type, member) |
| |
| #define | LIST_HEAD_INIT(name) { &(name), &(name) } |
| |
| #define | list_entry(ptr, type, member) container_of(ptr, type, member) |
| |
| #define | list_first_entry(ptr, type, member) list_entry((ptr)->next, type, member) |
| |
| #define | list_next_entry(pos, member) list_entry((pos)->member.next, typeof(*(pos)), member) |
| |
| #define | list_for_each_entry(pos, head, member) |
| |
| #define | list_for_each_entry_safe(pos, n, head, member) |
| |
| #define | MAX_RA_BLOCKS 64 |
| |
| #define | BLKS_PER_SEC(sbi) ((sbi)->segs_per_sec * (sbi)->blocks_per_seg) |
| |
| #define | GET_ZONENO_FROM_SEGNO(sbi, segno) ((segno / sbi->segs_per_sec) / sbi->secs_per_zone) |
| |
| #define | IS_DATASEG(t) |
| |
| #define | IS_NODESEG(t) |
| |
| #define | MAIN_BLKADDR(sbi) |
| |
| #define | SEG0_BLKADDR(sbi) |
| |
| #define | GET_SUM_BLKADDR(sbi, segno) ((sbi->sm_info->ssa_blkaddr) + segno) |
| |
| #define | GET_SEGOFF_FROM_SEG0(sbi, blk_addr) ((blk_addr) - SM_I(sbi)->seg0_blkaddr) |
| |
| #define | GET_SEGNO_FROM_SEG0(sbi, blk_addr) (GET_SEGOFF_FROM_SEG0(sbi, blk_addr) >> sbi->log_blocks_per_seg) |
| |
| #define | GET_BLKOFF_FROM_SEG0(sbi, blk_addr) (GET_SEGOFF_FROM_SEG0(sbi, blk_addr) & (sbi->blocks_per_seg - 1)) |
| |
| #define | GET_SEC_FROM_SEG(sbi, segno) ((segno) / (sbi)->segs_per_sec) |
| |
| #define | GET_SEG_FROM_SEC(sbi, secno) ((secno) * (sbi)->segs_per_sec) |
| |
| #define | FREE_I_START_SEGNO(sbi) GET_SEGNO_FROM_SEG0(sbi, SM_I(sbi)->main_blkaddr) |
| |
| #define | GET_R2L_SEGNO(sbi, segno) (segno + FREE_I_START_SEGNO(sbi)) |
| |
| #define | MAIN_SEGS(sbi) (SM_I(sbi)->main_segments) |
| |
| #define | TOTAL_SEGS(sbi) (SM_I(sbi)->segment_count) |
| |
| #define | TOTAL_BLKS(sbi) (TOTAL_SEGS(sbi) << (sbi)->log_blocks_per_seg) |
| |
| #define | MAX_BLKADDR(sbi) (SEG0_BLKADDR(sbi) + TOTAL_BLKS(sbi)) |
| |
| #define | START_BLOCK(sbi, segno) |
| |
| #define | NEXT_FREE_BLKADDR(sbi, curseg) (START_BLOCK(sbi, (curseg)->segno) + (curseg)->next_blkoff) |
| |
| #define | SIT_BLK_CNT(sbi) ((MAIN_SEGS(sbi) + SIT_ENTRY_PER_BLOCK - 1) / SIT_ENTRY_PER_BLOCK) |
| |
| #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(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 | SIT_ENTRY_OFFSET(sit_i, segno) ((segno) % sit_i->sents_per_block) |
| |
| #define | SIT_BLOCK_OFFSET(sit_i, segno) ((segno) / SIT_ENTRY_PER_BLOCK) |
| |
| #define | S_SHIFT 12 |
| |
| #define | IS_SUM_NODE_SEG(sum) (F2FS_SUMMARY_BLOCK_FOOTER(sum)->entry_type == SUM_TYPE_NODE) |
| |
| #define | IS_SUM_DATA_SEG(sum) (F2FS_SUMMARY_BLOCK_FOOTER(sum)->entry_type == SUM_TYPE_DATA) |
| |
|
| static void | __list_add (struct list_head *new, struct list_head *prev, struct list_head *next) |
| |
| static void | __list_del (struct list_head *prev, struct list_head *next) |
| |
| static void | list_del (struct list_head *entry) |
| |
| static void | list_add_tail (struct list_head *new, struct list_head *head) |
| |
| static struct f2fs_super_block * | F2FS_RAW_SUPER (struct f2fs_sb_info *sbi) |
| |
| static struct f2fs_checkpoint * | F2FS_CKPT (struct f2fs_sb_info *sbi) |
| |
| static struct f2fs_fsck * | F2FS_FSCK (struct f2fs_sb_info *sbi) |
| |
| static struct f2fs_nm_info * | NM_I (struct f2fs_sb_info *sbi) |
| |
| static struct f2fs_sm_info * | SM_I (struct f2fs_sb_info *sbi) |
| |
| static struct sit_info * | SIT_I (struct f2fs_sb_info *sbi) |
| |
| static void * | inline_data_addr (struct f2fs_node *node_blk) |
| |
| static unsigned int | ofs_of_node (struct f2fs_node *node_blk) |
| |
| static unsigned long long | cur_cp_version (struct f2fs_checkpoint *cp) |
| |
| static __u64 | cur_cp_crc (struct f2fs_checkpoint *cp) |
| |
| static bool | is_set_ckpt_flags (struct f2fs_checkpoint *cp, unsigned int f) |
| |
| static unsigned long | __bitmap_size (struct f2fs_sb_info *sbi, int flag) |
| |
| static block_t | __cp_payload (struct f2fs_sb_info *sbi) |
| |
| static void * | __bitmap_ptr (struct f2fs_sb_info *sbi, int flag) |
| |
| static block_t | __start_cp_addr (struct f2fs_sb_info *sbi) |
| |
| static block_t | __start_sum_addr (struct f2fs_sb_info *sbi) |
| |
| static block_t | __end_block_addr (struct f2fs_sb_info *sbi) |
| |
| static struct curseg_info * | CURSEG_I (struct f2fs_sb_info *sbi, int type) |
| |
| static block_t | start_sum_block (struct f2fs_sb_info *sbi) |
| |
| static block_t | sum_blk_addr (struct f2fs_sb_info *sbi, int base, int type) |
| |
| static bool | IS_VALID_NID (struct f2fs_sb_info *sbi, u32 nid) |
| |
| static bool | is_valid_data_blkaddr (block_t blkaddr) |
| |
| static int | IS_CUR_SEGNO (struct f2fs_sb_info *sbi, u32 segno) |
| |
| static u64 | BLKOFF_FROM_MAIN (struct f2fs_sb_info *sbi, u64 blk_addr) |
| |
| static u32 | GET_SEGNO (struct f2fs_sb_info *sbi, u64 blk_addr) |
| |
| static u32 | OFFSET_IN_SEG (struct f2fs_sb_info *sbi, u64 blk_addr) |
| |
| static void | node_info_from_raw_nat (struct node_info *ni, struct f2fs_nat_entry *raw_nat) |
| |
| static void | set_summary (struct f2fs_summary *sum, nid_t nid, unsigned int ofs_in_node, unsigned char version) |
| |
| static int | map_de_type (umode_t mode) |
| |
| static void * | inline_xattr_addr (struct f2fs_inode *inode) |
| |
| static int | inline_xattr_size (struct f2fs_inode *inode) |
| |
| int | lookup_nat_in_journal (struct f2fs_sb_info *sbi, u32 nid, struct f2fs_nat_entry *ne) |
| |
| static unsigned int | dir_buckets (unsigned int level, int dir_level) |
| |
| static unsigned int | bucket_blocks (unsigned int level) |
| |
| static unsigned long | dir_block_index (unsigned int level, int dir_level, unsigned int idx) |
| |
| static int | is_dot_dotdot (const unsigned char *name, const int len) |
| |
| static int | get_encoding (struct f2fs_sb_info *sbi) |
| |