|
Android-cuttlefish cvd tool
|
#include <assert.h>#include <stdio.h>#include <stdlib.h>#include <sys/stat.h>#include <stddef.h>#include <string.h>#include <time.h>#include <stdbool.h>#include <limits.h>#include <inttypes.h>#include <sys/types.h>

Go to the source code of this file.
Classes | |
| struct | compress_data |
| struct | compress_ctx |
| struct | device_info |
| struct | dev_cache_config_t |
| struct | compress_ops |
| struct | filter_ops |
| struct | compress_config_t |
| struct | f2fs_device |
| struct | f2fs_super_block |
| struct | f2fs_checkpoint |
| struct | f2fs_orphan_block |
| struct | orphan_block_footer |
| struct | f2fs_extent |
| struct | node_footer |
| struct | f2fs_compr_blk_cnt |
| struct | f2fs_inode |
| struct | f2fs_inode_nids |
| struct | direct_node |
| struct | indirect_node |
| struct | f2fs_node |
| struct | f2fs_nat_entry |
| struct | f2fs_nat_block |
| struct | f2fs_sit_entry |
| struct | f2fs_sit_block |
| struct | f2fs_summary |
| struct | summary_footer |
| struct | nat_journal_entry |
| struct | nat_journal |
| struct | sit_journal_entry |
| struct | sit_journal |
| struct | f2fs_extra_info |
| struct | f2fs_journal |
| struct | f2fs_summary_block |
| struct | f2fs_dir_entry |
| struct | f2fs_dentry_block |
| struct | f2fs_fault_info |
| struct | f2fs_configuration |
| struct | feature |
| struct | f2fs_nls_table |
| struct | f2fs_nls_ops |
Macros | |
| #define | __SANE_USERSPACE_TYPES__ /* For PPC64, to get LL64 types */ |
| #define | WITH_DUMP |
| #define | WITH_DEFRAG |
| #define | WITH_RESIZE |
| #define | WITH_SLOAD |
| #define | WITH_LABEL |
| #define | WITH_INJECT |
| #define | UNUSED(x) x |
| #define | static_assert _Static_assert |
| #define | fallthrough __attribute__((__fallthrough__)) |
| #define | MIN_COMPRESS_LOG_SIZE 2 |
| #define | MAX_COMPRESS_LOG_SIZE 8 |
| #define | COMPRESS_DATA_RESERVED_SIZE 4 |
| #define | COMPRESS_HEADER_SIZE (sizeof(struct compress_data)) |
| #define | le16_to_cpu(x) ((uint16_t)(x)) |
| #define | le32_to_cpu(x) ((uint32_t)(x)) |
| #define | le64_to_cpu(x) ((uint64_t)(x)) |
| #define | cpu_to_le16(x) ((uint16_t)(x)) |
| #define | cpu_to_le32(x) ((uint32_t)(x)) |
| #define | cpu_to_le64(x) ((uint64_t)(x)) |
| #define | be32_to_cpu(x) __builtin_bswap64(x) |
| #define | typecheck(type, x) |
| #define | NULL_SEGNO ((unsigned int)~0) |
| #define | INFO_MSG(fmt, ...) |
| #define | FIX_MSG(fmt, ...) |
| #define | ASSERT_MSG(fmt, ...) |
| #define | ASSERT(exp) |
| #define | ERR_MSG(fmt, ...) |
| #define | MSG(n, fmt, ...) |
| #define | DBG(n, fmt, ...) |
| #define | DISP(fmt, ptr, member) |
| #define | DISP_raw_str(fmt, member) |
| #define | DISP_str(fmt, ptr, member) |
| #define | DISP_u8(ptr, member) |
| #define | DISP_u16(ptr, member) |
| #define | DISP_u32(ptr, member) |
| #define | DISP_u64(ptr, member) |
| #define | DISP_utf(ptr, member) |
| #define | BUF_DISP_u32(buf, data, len, ptr, member) |
| #define | BUF_DISP_u64(buf, data, len, ptr, member) |
| #define | BUF_DISP_utf(buf, data, len, ptr, member) snprintf(buf, len, #member) |
| #define | BITS_PER_BYTE 8 |
| #define | SECTOR_SHIFT 9 |
| #define | F2FS_SUPER_MAGIC 0xF2F52010 /* F2FS Magic Number */ |
| #define | CP_CHKSUM_OFFSET (F2FS_BLKSIZE - sizeof(__le32)) |
| #define | SB_CHKSUM_OFFSET 3068 |
| #define | MAX_PATH_LEN 64 |
| #define | MAX_DEVICES 8 |
| #define | F2FS_BYTES_TO_BLK(bytes) ((bytes) >> F2FS_BLKSIZE_BITS) |
| #define | F2FS_BLKSIZE_BITS c.blksize_bits |
| #define | F2FS_NUMBER_OF_CHECKPOINT_PACK 2 |
| #define | DEFAULT_SECTOR_SIZE 512 |
| #define | DEFAULT_SECTORS_PER_BLOCK (1 << (F2FS_BLKSIZE_BITS - SECTOR_SHIFT)) |
| #define | DEFAULT_BLOCKS_PER_SEGMENT 512 |
| #define | DEFAULT_SEGMENTS_PER_SECTION 1 |
| #define | DEFAULT_BLKSIZE_BITS 12 /* 4096 */ |
| #define | VERSION_LEN 256 |
| #define | VERSION_TIMESTAMP_LEN 4 |
| #define | VERSION_NAME_LEN (VERSION_LEN - VERSION_TIMESTAMP_LEN) |
| #define | LPF "lost+found" |
| #define | MIN_RSVD_SECS (NR_CURSEG_TYPE + 2U) |
| #define | CONFIG_RSVD_DEFAULT_OP_RATIO 3.0 |
| #define | ALIGN_DOWN(addrs, size) (((addrs) / (size)) * (size)) |
| #define | ALIGN_UP(addrs, size) ALIGN_DOWN(((addrs) + (size) - 1), (size)) |
| #define | BITS_PER_LONG 32 |
| #define | BIT_MASK(nr) (1 << (nr % BITS_PER_LONG)) |
| #define | BIT_WORD(nr) (nr / BITS_PER_LONG) |
| #define | set_sb_le64(member, val) (sb->member = cpu_to_le64(val)) |
| #define | set_sb_le32(member, val) (sb->member = cpu_to_le32(val)) |
| #define | set_sb_le16(member, val) (sb->member = cpu_to_le16(val)) |
| #define | get_sb_le64(member) le64_to_cpu(sb->member) |
| #define | get_sb_le32(member) le32_to_cpu(sb->member) |
| #define | get_sb_le16(member) le16_to_cpu(sb->member) |
| #define | get_newsb_le64(member) le64_to_cpu(new_sb->member) |
| #define | get_newsb_le32(member) le32_to_cpu(new_sb->member) |
| #define | get_newsb_le16(member) le16_to_cpu(new_sb->member) |
| #define | set_sb(member, val) |
| #define | get_sb(member) |
| #define | get_newsb(member) |
| #define | set_cp_le64(member, val) (cp->member = cpu_to_le64(val)) |
| #define | set_cp_le32(member, val) (cp->member = cpu_to_le32(val)) |
| #define | set_cp_le16(member, val) (cp->member = cpu_to_le16(val)) |
| #define | get_cp_le64(member) le64_to_cpu(cp->member) |
| #define | get_cp_le32(member) le32_to_cpu(cp->member) |
| #define | get_cp_le16(member) le16_to_cpu(cp->member) |
| #define | set_cp(member, val) |
| #define | get_cp(member) |
| #define | __round_mask(x, y) ((__typeof__(x))((y)-1)) |
| #define | round_down(x, y) ((x) & ~__round_mask(x, y)) |
| #define | min(x, y) |
| #define | max(x, y) |
| #define | round_up(x, y) (((x) + (y) - 1) / (y)) |
| #define | NR_CURSEG_DATA_TYPE (3) |
| #define | NR_CURSEG_NODE_TYPE (3) |
| #define | NR_CURSEG_TYPE (NR_CURSEG_DATA_TYPE + NR_CURSEG_NODE_TYPE) |
| #define | F2FS_MIN_SEGMENTS 9 /* SB + 2 (CP + SIT + NAT) + SSA + MAIN */ |
| #define | GET_SUM_TYPE(sum) (F2FS_SUMMARY_BLOCK_FOOTER(sum)->entry_type) |
| #define | SET_SUM_TYPE(sum, type) (F2FS_SUMMARY_BLOCK_FOOTER(sum)->entry_type = type) |
| #define | F2FS_SUPER_OFFSET 1024 /* byte-size offset */ |
| #define | F2FS_MIN_LOG_SECTOR_SIZE 9 /* 9 bits for 512 bytes */ |
| #define | F2FS_MAX_LOG_SECTOR_SIZE F2FS_BLKSIZE_BITS /* max sector size is block size */ |
| #define | F2FS_MIN_BLKSIZE 4096 |
| #define | F2FS_MAX_BLKSIZE 16384 |
| #define | F2FS_BLKSIZE c.blksize /* support configurable block size */ |
| #define | F2FS_MAX_EXTENSION 64 /* # of extension entries */ |
| #define | F2FS_EXTENSION_LEN 8 /* max size of extension */ |
| #define | F2FS_BLK_ALIGN(x) (((x) + F2FS_BLKSIZE - 1) / F2FS_BLKSIZE) |
| #define | NULL_ADDR 0x0U |
| #define | NEW_ADDR -1U |
| #define | COMPRESS_ADDR -2U |
| #define | F2FS_ROOT_INO(sbi) (sbi->root_ino_num) |
| #define | F2FS_NODE_INO(sbi) (sbi->node_ino_num) |
| #define | F2FS_META_INO(sbi) (sbi->meta_ino_num) |
| #define | F2FS_MAX_QUOTAS 3 |
| #define | QUOTA_DATA (((1024 * 6 - 1) / F2FS_BLKSIZE) + 1) |
| #define | QUOTA_INO(sb, t) (le32_to_cpu((sb)->qf_ino[t])) |
| #define | F2FS_COMPR_FL 0x00000004 /* Compress file */ |
| #define | F2FS_NODUMP_FL 0x00000040 /* do not dump file */ |
| #define | F2FS_IMMUTABLE_FL 0x00000010 /* Immutable file */ |
| #define | F2FS_NOATIME_FL 0x00000080 /* do not update atime */ |
| #define | F2FS_CASEFOLD_FL 0x40000000 /* Casefolded file */ |
| #define | F2FS_DEVICE_ALIAS_FL 0x80000000 /* File for aliasing a device */ |
| #define | IS_DEVICE_ALIASING(fi) ((fi)->i_flags & cpu_to_le32(F2FS_DEVICE_ALIAS_FL)) |
| #define | F2FS_ENC_UTF8_12_1 1 |
| #define | F2FS_ENC_STRICT_MODE_FL (1 << 0) |
| #define | F2FS_ENC_NO_COMPAT_FALLBACK_FL (1 << 1) |
| #define | GFP_F2FS_ZERO (GFP_NOFS | __GFP_ZERO) |
| #define | MAX_ACTIVE_LOGS 16 |
| #define | MAX_ACTIVE_NODE_LOGS 8 |
| #define | MAX_ACTIVE_DATA_LOGS 8 |
| #define | F2FS_FEATURE_ENCRYPT 0x0001 |
| #define | F2FS_FEATURE_BLKZONED 0x0002 |
| #define | F2FS_FEATURE_ATOMIC_WRITE 0x0004 |
| #define | F2FS_FEATURE_EXTRA_ATTR 0x0008 |
| #define | F2FS_FEATURE_PRJQUOTA 0x0010 |
| #define | F2FS_FEATURE_INODE_CHKSUM 0x0020 |
| #define | F2FS_FEATURE_FLEXIBLE_INLINE_XATTR 0x0040 |
| #define | F2FS_FEATURE_QUOTA_INO 0x0080 |
| #define | F2FS_FEATURE_INODE_CRTIME 0x0100 |
| #define | F2FS_FEATURE_LOST_FOUND 0x0200 |
| #define | F2FS_FEATURE_VERITY 0x0400 /* reserved */ |
| #define | F2FS_FEATURE_SB_CHKSUM 0x0800 |
| #define | F2FS_FEATURE_CASEFOLD 0x1000 |
| #define | F2FS_FEATURE_COMPRESSION 0x2000 |
| #define | F2FS_FEATURE_RO 0x4000 |
| #define | F2FS_FEATURE_DEVICE_ALIAS 0x8000 |
| #define | MAX_NR_FEATURE 32 |
| #define | MAX_VOLUME_NAME 512 |
| #define | MAX_STOP_REASON 32 |
| #define | MAX_F2FS_ERRORS 16 |
| #define | CP_RESIZEFS_FLAG 0x00004000 |
| #define | CP_DISABLED_FLAG 0x00001000 |
| #define | CP_QUOTA_NEED_FSCK_FLAG 0x00000800 |
| #define | CP_LARGE_NAT_BITMAP_FLAG 0x00000400 |
| #define | CP_NOCRC_RECOVERY_FLAG 0x00000200 |
| #define | CP_TRIMMED_FLAG 0x00000100 |
| #define | CP_NAT_BITS_FLAG 0x00000080 |
| #define | CP_CRC_RECOVERY_FLAG 0x00000040 |
| #define | CP_FASTBOOT_FLAG 0x00000020 |
| #define | CP_FSCK_FLAG 0x00000010 |
| #define | CP_ERROR_FLAG 0x00000008 |
| #define | CP_COMPACT_SUM_FLAG 0x00000004 |
| #define | CP_ORPHAN_PRESENT_FLAG 0x00000002 |
| #define | CP_UMOUNT_FLAG 0x00000001 |
| #define | F2FS_CP_PACKS 2 /* # of checkpoint packs */ |
| #define | CP_BITMAP_OFFSET (offsetof(struct f2fs_checkpoint, sit_nat_version_bitmap)) |
| #define | CP_MIN_CHKSUM_OFFSET CP_BITMAP_OFFSET |
| #define | MIN_NAT_BITMAP_SIZE 64 |
| #define | MAX_SIT_BITMAP_SIZE_IN_CKPT (CP_CHKSUM_OFFSET - CP_BITMAP_OFFSET - MIN_NAT_BITMAP_SIZE) |
| #define | MAX_BITMAP_SIZE_IN_CKPT (CP_CHKSUM_OFFSET - CP_BITMAP_OFFSET) |
| #define | F2FS_ORPHANS_PER_BLOCK ((F2FS_BLKSIZE - 4 * sizeof(__le32)) / sizeof(__le32)) |
| #define | F2FS_ORPHAN_BLOCK_FOOTER(blk) ((struct orphan_block_footer *)&(blk)->ino[F2FS_ORPHANS_PER_BLOCK]) |
| #define | F2FS_NAME_LEN 255 |
| #define | F2FS_PRINT_NAMELEN (4 * ((F2FS_NAME_LEN + 2) / 3) + 1) |
| #define | DEFAULT_INLINE_XATTR_ADDRS 50 |
| #define | OFFSET_OF_END_OF_I_EXT 360 |
| #define | SIZE_OF_I_NID 20 |
| #define | DEF_ADDRS_PER_INODE |
| #define | CUR_ADDRS_PER_INODE(inode) |
| #define | ADDRS_PER_INODE(i) addrs_per_page(i, true) |
| #define | DEF_ADDRS_PER_BLOCK ((F2FS_BLKSIZE - sizeof(struct node_footer)) / sizeof(__le32)) |
| #define | ADDRS_PER_BLOCK(i) addrs_per_page(i, false) |
| #define | NIDS_PER_BLOCK ((F2FS_BLKSIZE - sizeof(struct node_footer)) / sizeof(__le32)) |
| #define | NODE_DIR1_BLOCK (DEF_ADDRS_PER_INODE + 1) |
| #define | NODE_DIR2_BLOCK (DEF_ADDRS_PER_INODE + 2) |
| #define | NODE_IND1_BLOCK (DEF_ADDRS_PER_INODE + 3) |
| #define | NODE_IND2_BLOCK (DEF_ADDRS_PER_INODE + 4) |
| #define | NODE_DIND_BLOCK (DEF_ADDRS_PER_INODE + 5) |
| #define | F2FS_INLINE_XATTR 0x01 /* file inline xattr flag */ |
| #define | F2FS_INLINE_DATA 0x02 /* file inline data flag */ |
| #define | F2FS_INLINE_DENTRY 0x04 /* file inline dentry flag */ |
| #define | F2FS_DATA_EXIST 0x08 /* file inline data exist flag */ |
| #define | F2FS_INLINE_DOTS 0x10 /* file having implicit dot dentries */ |
| #define | F2FS_EXTRA_ATTR 0x20 /* file having extra attribute */ |
| #define | F2FS_PIN_FILE 0x40 /* file should not be gced */ |
| #define | F2FS_COMPRESS_RELEASED 0x80 /* file released compressed blocks */ |
| #define | F2FS_EXTRA_ISIZE_OFFSET offsetof(struct f2fs_inode, i_extra_isize) |
| #define | F2FS_TOTAL_EXTRA_ATTR_SIZE (offsetof(struct f2fs_inode, i_extra_end) - F2FS_EXTRA_ISIZE_OFFSET) |
| #define | F2FS_DEF_PROJID 0 /* default project ID */ |
| #define | MAX_INLINE_DATA(node) |
| #define | DEF_MAX_INLINE_DATA |
| #define | INLINE_DATA_OFFSET |
| #define | DEF_DIR_LEVEL 0 |
| #define | FADVISE_COLD_BIT 0x01 |
| #define | FADVISE_LOST_PINO_BIT 0x02 |
| #define | FADVISE_ENCRYPT_BIT 0x04 |
| #define | FADVISE_ENC_NAME_BIT 0x08 |
| #define | FADVISE_KEEP_SIZE_BIT 0x10 |
| #define | FADVISE_HOT_BIT 0x20 |
| #define | FADVISE_VERITY_BIT 0x40 /* reserved */ |
| #define | file_is_encrypt(fi) ((fi)->i_advise & FADVISE_ENCRYPT_BIT) |
| #define | file_enc_name(fi) ((fi)->i_advise & FADVISE_ENC_NAME_BIT) |
| #define | IS_CASEFOLDED(dir) ((dir)->i_flags & cpu_to_le32(F2FS_CASEFOLD_FL)) |
| #define | CHEADER_PGOFS_NONE ((u32)-(1 << MAX_COMPRESS_LOG_SIZE)) |
| #define | F2FS_INODE_NIDS(inode) ((struct f2fs_inode_nids *)(&(inode)->i_addr[DEF_ADDRS_PER_INODE])) |
| #define | F2FS_INODE_I_NID(inode, i) (F2FS_INODE_NIDS((inode))->i_nid[(i)]) |
| #define | XATTR_NODE_OFFSET |
| #define | F2FS_NODE_FOOTER(blk) |
| #define | NAT_ENTRY_PER_BLOCK (F2FS_BLKSIZE / sizeof(struct f2fs_nat_entry)) |
| #define | NAT_BLOCK_OFFSET(start_nid) (start_nid / NAT_ENTRY_PER_BLOCK) |
| #define | DEFAULT_NAT_ENTRY_RATIO 20 |
| #define | SIT_VBLOCK_MAP_SIZE 64 |
| #define | SIT_ENTRY_PER_BLOCK (F2FS_BLKSIZE / sizeof(struct f2fs_sit_entry)) |
| #define | F2FS_MIN_SEGMENT 9 /* SB + 2 (CP + SIT + NAT) + SSA + MAIN */ |
| #define | F2FS_MAX_SEGMENT ((16 * 1024 * 1024) / 2) |
| #define | MAX_SIT_BITMAP_SIZE |
| #define | MAX_CP_PAYLOAD |
| #define | SIT_VBLOCKS_SHIFT 10 |
| #define | SIT_VBLOCKS_MASK ((1 << SIT_VBLOCKS_SHIFT) - 1) |
| #define | GET_SIT_VBLOCKS(raw_sit) (le16_to_cpu((raw_sit)->vblocks) & SIT_VBLOCKS_MASK) |
| #define | GET_SIT_TYPE(raw_sit) |
| #define | ENTRIES_IN_SUM (F2FS_BLKSIZE / 8) |
| #define | SUMMARY_SIZE (7) /* sizeof(struct summary) */ |
| #define | SUM_FOOTER_SIZE (5) /* sizeof(struct summary_footer) */ |
| #define | SUM_ENTRIES_SIZE (SUMMARY_SIZE * ENTRIES_IN_SUM) |
| #define | SUM_TYPE_NODE (1) |
| #define | SUM_TYPE_DATA (0) |
| #define | SUM_JOURNAL_SIZE |
| #define | NAT_JOURNAL_ENTRIES |
| #define | NAT_JOURNAL_RESERVED |
| #define | SIT_JOURNAL_ENTRIES |
| #define | SIT_JOURNAL_RESERVED |
| #define | EXTRA_INFO_RESERVED (SUM_JOURNAL_SIZE - 2 - 8) |
| #define | F2FS_SUMMARY_BLOCK_JOURNAL(blk) ((struct f2fs_journal *)(&(blk)->entries[ENTRIES_IN_SUM])) |
| #define | F2FS_SUMMARY_BLOCK_FOOTER(blk) |
| #define | F2FS_DOT_HASH 0 |
| #define | F2FS_DDOT_HASH F2FS_DOT_HASH |
| #define | F2FS_MAX_HASH (~((0x3ULL) << 62)) |
| #define | F2FS_HASH_COL_BIT ((0x1ULL) << 63) |
| #define | F2FS_SLOT_LEN 8 |
| #define | F2FS_SLOT_LEN_BITS 3 |
| #define | GET_DENTRY_SLOTS(x) ((x + F2FS_SLOT_LEN - 1) >> F2FS_SLOT_LEN_BITS) |
| #define | NR_DENTRY_IN_BLOCK |
| #define | MAX_DIR_HASH_DEPTH 63 |
| #define | MAX_DIR_BUCKETS (1 << ((MAX_DIR_HASH_DEPTH / 2) - 1)) |
| #define | SIZE_OF_DIR_ENTRY 11 /* by byte */ |
| #define | SIZE_OF_DENTRY_BITMAP |
| #define | SIZE_OF_RESERVED |
| #define | MIN_INLINE_DENTRY_SIZE 40 /* just include '.' and '..' entries */ |
| #define | F2FS_DENTRY_BLOCK_DENTRIES(blk) |
| #define | F2FS_DENTRY_BLOCK_DENTRY(blk, i) (F2FS_DENTRY_BLOCK_DENTRIES((blk))[(i)]) |
| #define | F2FS_DENTRY_BLOCK_FILENAMES(blk) |
| #define | F2FS_DENTRY_BLOCK_FILENAME(blk, i) |
| #define | DEF_INLINE_RESERVED_SIZE 1 |
| #define | NR_INLINE_DENTRY(node) |
| #define | INLINE_DENTRY_BITMAP_SIZE(node) |
| #define | INLINE_RESERVED_SIZE(node) |
| #define | LINUX_S_IFMT 00170000 |
| #define | LINUX_S_IFREG 0100000 |
| #define | LINUX_S_IFDIR 0040000 |
| #define | LINUX_S_ISREG(m) (((m) & LINUX_S_IFMT) == LINUX_S_IFREG) |
| #define | LINUX_S_ISDIR(m) (((m) & LINUX_S_IFMT) == LINUX_S_IFDIR) |
| #define | SB_FORCE_STOP 0x1 /* s_stop_reason is set */ |
| #define | SB_ABNORMAL_STOP 0x2 /* s_stop_reason is set except shutdown */ |
| #define | SB_FS_ERRORS 0x4 /* s_erros is set */ |
| #define | SB_INVALID 0x8 /* sb is invalid */ |
| #define | SB_ENCODE_FLAG 0x16 /* encode_flag */ |
| #define | SB_NEED_FIX |
| #define | MAX_CACHE_SUMS 8 |
| #define | F2FS_ALL_FAULT_TYPE ((1UL << (FAULT_MAX)) - 1) |
| #define | IS_FAULT_SET(fi, type) ((fi)->inject_type & (1UL << (type))) |
| #define | get_extra_isize(node) __get_extra_isize(&node->i) |
| #define | F2FS_ZONED_NONE 0 |
| #define | F2FS_ZONED_HA 1 |
| #define | F2FS_ZONED_HM 2 |
| #define | SIZE_ALIGN(val, size) (((val) + (size) - 1) / (size)) |
| #define | SEG_ALIGN(blks) SIZE_ALIGN(blks, c.blks_per_seg) |
| #define | ZONE_ALIGN(blks) |
| #define | INIT_FEATURE_TABLE |
| #define | F2FS_ENC_UTF8_12_0 1 |
| #define | time_to_inject(type) |
Typedefs | |
| typedef uint64_t | u64 |
| typedef uint32_t | u32 |
| typedef uint16_t | u16 |
| typedef uint8_t | u8 |
| typedef u32 | block_t |
| typedef u32 | nid_t |
| typedef unsigned long | pgoff_t |
| typedef unsigned short | umode_t |
| typedef u8 | __u8 |
| typedef u16 | __u16 |
| typedef u32 | __u32 |
| typedef u64 | __u64 |
| typedef u16 | __le16 |
| typedef u32 | __le32 |
| typedef u64 | __le64 |
| typedef u16 | __be16 |
| typedef u32 | __be32 |
| typedef u64 | __be64 |
| typedef __le32 | f2fs_hash_t |
| typedef int() | report_zones_cb_t(int i, void *, void *) |
Functions | |
| static uint16_t | bswap_16 (uint16_t val) |
| static uint32_t | bswap_32 (uint32_t val) |
| struct f2fs_super_block | __attribute__ ((packed)) |
| int | utf8_to_utf16 (char *, const char *, size_t, size_t) |
| int | utf16_to_utf8 (char *, const char *, size_t, size_t) |
| int | log_base_2 (uint32_t) |
| unsigned int | addrs_per_page (struct f2fs_inode *, bool) |
| u64 | f2fs_max_file_offset (struct f2fs_inode *) |
| __u32 | f2fs_inode_chksum (struct f2fs_node *) |
| __u32 | f2fs_checkpoint_chksum (struct f2fs_checkpoint *) |
| int | write_inode (struct f2fs_node *, u64, enum rw_hint) |
| int | get_bits_in_byte (unsigned char n) |
| int | test_and_set_bit_le (u32, u8 *) |
| int | test_and_clear_bit_le (u32, u8 *) |
| int | test_bit_le (u32, const u8 *) |
| int | f2fs_test_bit (unsigned int, const char *) |
| int | f2fs_set_bit (unsigned int, char *) |
| int | f2fs_clear_bit (unsigned int, char *) |
| u64 | find_next_bit_le (const u8 *, u64, u64) |
| u64 | find_next_zero_bit_le (const u8 *, u64, u64) |
| uint32_t | f2fs_cal_crc32 (uint32_t, void *, int) |
| int | f2fs_crc_valid (uint32_t blk_crc, void *buf, int len) |
| void | f2fs_init_configuration (void) |
| int | f2fs_devs_are_umounted (void) |
| int | f2fs_dev_is_writable (void) |
| int | f2fs_dev_is_umounted (char *) |
| int | f2fs_get_device_info (void) |
| int | f2fs_get_f2fs_info (void) |
| unsigned int | calc_extra_isize (void) |
| int | get_device_info (int) |
| int | f2fs_init_sparse_file (void) |
| void | f2fs_release_sparse_resource (void) |
| int | f2fs_finalize_device (void) |
| int | f2fs_fsync_device (void) |
| void | dcache_init (void) |
| void | dcache_release (void) |
| int | dev_read (void *, __u64, size_t) |
| int | dev_readahead (__u64, size_t UNUSED(len)) |
| enum rw_hint | f2fs_io_type_to_rw_hint (int) |
| int | dev_write (void *, __u64, size_t, enum rw_hint) |
| int | dev_write_block (void *, __u64, enum rw_hint) |
| int | dev_write_dump (void *, __u64, size_t) |
| int | dev_write_symlink (char *, size_t) |
| int | dev_fill (void *, __u64, size_t, enum rw_hint) |
| int | dev_fill_block (void *, __u64, enum rw_hint) |
| int | dev_read_block (void *, __u64) |
| int | dev_reada_block (__u64) |
| int | dev_read_version (void *, __u64, size_t) |
| void | get_kernel_version (__u8 *) |
| void | get_kernel_uname_version (__u8 *) |
| f2fs_hash_t | f2fs_dentry_hash (int, int, const unsigned char *, int) |
| static bool | f2fs_has_extra_isize (struct f2fs_inode *inode) |
| static int | __get_extra_isize (struct f2fs_inode *inode) |
| static int | get_inline_xattr_addrs (struct f2fs_inode *inode) |
| int | f2fs_get_zoned_model (int) |
| int | f2fs_get_zone_blocks (int) |
| int | f2fs_report_zone (int, uint64_t, struct blk_zone *) |
| int | f2fs_report_zones (int, report_zones_cb_t *, void *) |
| int | f2fs_check_zones (int) |
| int | f2fs_reset_zone (int, void *) |
| int | f2fs_reset_zones (int) |
| int | f2fs_finish_zone (int i, void *blkzone) |
| uint32_t | f2fs_get_usable_segments (struct f2fs_super_block *sb) |
| static uint32_t | get_reserved (struct f2fs_super_block *sb, double ovp) |
| static uint32_t | overprovision_segment_buffer (struct f2fs_super_block *sb) |
| static double | get_best_overprovision (struct f2fs_super_block *sb) |
| static __le64 | get_cp_crc (struct f2fs_checkpoint *cp) |
| static int | exist_qf_ino (struct f2fs_super_block *sb) |
| static int | is_qf_ino (struct f2fs_super_block *sb, nid_t ino) |
| static void | show_version (const char *prog) |
| static void | f2fs_init_inode (struct f2fs_super_block *sb, struct f2fs_node *raw_node, nid_t ino, time_t mtime, mode_t mode) |
| static u32 | feature_map (struct feature *table, char *feature) |
| static char * | feature_name (struct feature *table, u32 mask) |
| static int | set_feature_bits (struct feature *table, char *features) |
| static int | parse_feature (struct feature *table, const char *features) |
| static int | parse_root_owner (char *ids, uint32_t *root_uid, uint32_t *root_gid) |
| const struct f2fs_nls_table * | f2fs_load_nls_table (int encoding) |
| int | f2fs_str2encoding (const char *string) |
| char * | f2fs_encoding2str (const int encoding) |
| int | f2fs_get_encoding_flags (int encoding) |
| int | f2fs_str2encoding_flags (char **param, __u16 *flags) |
| static void | check_block_struct_sizes (void) |
| static bool | __time_to_inject (int type, const char *func, const char *parent_func) |
| #define __round_mask | ( | x, | |
| y | |||
| ) | ((__typeof__(x))((y)-1)) |
| #define __SANE_USERSPACE_TYPES__ /* For PPC64, to get LL64 types */ |
Copyright (c) 2012 Samsung Electronics Co., Ltd. http://www.samsung.com/ Copyright (c) 2019 Google Inc. http://www.google.com/ Copyright (c) 2020 Google Inc. Robin Hsu robin.nosp@m.hsu@.nosp@m.googl.nosp@m.e.co.nosp@m.m : add sload compression support
Dual licensed under the GPL or LGPL version 2 licenses.
The byteswap codes are copied from: samba_3_master/lib/ccan/endian/endian.h under LGPL 2.1
| #define ADDRS_PER_BLOCK | ( | i | ) | addrs_per_page(i, false) |
| #define ADDRS_PER_INODE | ( | i | ) | addrs_per_page(i, true) |
| #define ALIGN_UP | ( | addrs, | |
| size | |||
| ) | ALIGN_DOWN(((addrs) + (size) - 1), (size)) |
| #define ASSERT | ( | exp | ) |
| #define ASSERT_MSG | ( | fmt, | |
| ... | |||
| ) |
| #define be32_to_cpu | ( | x | ) | __builtin_bswap64(x) |
| #define BIT_MASK | ( | nr | ) | (1 << (nr % BITS_PER_LONG)) |
| #define BIT_WORD | ( | nr | ) | (nr / BITS_PER_LONG) |
| #define BITS_PER_BYTE 8 |
| #define BITS_PER_LONG 32 |
| #define BUF_DISP_u32 | ( | buf, | |
| data, | |||
| len, | |||
| ptr, | |||
| member | |||
| ) |
| #define BUF_DISP_u64 | ( | buf, | |
| data, | |||
| len, | |||
| ptr, | |||
| member | |||
| ) |
| #define BUF_DISP_utf | ( | buf, | |
| data, | |||
| len, | |||
| ptr, | |||
| member | |||
| ) | snprintf(buf, len, #member) |
| #define CHEADER_PGOFS_NONE ((u32)-(1 << MAX_COMPRESS_LOG_SIZE)) |
| #define COMPRESS_ADDR -2U |
| #define COMPRESS_DATA_RESERVED_SIZE 4 |
| #define COMPRESS_HEADER_SIZE (sizeof(struct compress_data)) |
| #define CONFIG_RSVD_DEFAULT_OP_RATIO 3.0 |
| #define CP_BITMAP_OFFSET (offsetof(struct f2fs_checkpoint, sit_nat_version_bitmap)) |
| #define CP_CHKSUM_OFFSET (F2FS_BLKSIZE - sizeof(__le32)) |
| #define CP_COMPACT_SUM_FLAG 0x00000004 |
| #define CP_CRC_RECOVERY_FLAG 0x00000040 |
| #define CP_DISABLED_FLAG 0x00001000 |
| #define CP_ERROR_FLAG 0x00000008 |
| #define CP_FASTBOOT_FLAG 0x00000020 |
| #define CP_FSCK_FLAG 0x00000010 |
| #define CP_LARGE_NAT_BITMAP_FLAG 0x00000400 |
| #define CP_MIN_CHKSUM_OFFSET CP_BITMAP_OFFSET |
| #define CP_NAT_BITS_FLAG 0x00000080 |
| #define CP_NOCRC_RECOVERY_FLAG 0x00000200 |
| #define CP_ORPHAN_PRESENT_FLAG 0x00000002 |
| #define CP_QUOTA_NEED_FSCK_FLAG 0x00000800 |
| #define CP_RESIZEFS_FLAG 0x00004000 |
| #define CP_TRIMMED_FLAG 0x00000100 |
| #define CP_UMOUNT_FLAG 0x00000001 |
| #define cpu_to_le16 | ( | x | ) | ((uint16_t)(x)) |
| #define cpu_to_le32 | ( | x | ) | ((uint32_t)(x)) |
| #define cpu_to_le64 | ( | x | ) | ((uint64_t)(x)) |
| #define CUR_ADDRS_PER_INODE | ( | inode | ) |
| #define DBG | ( | n, | |
| fmt, | |||
| ... | |||
| ) |
| #define DEF_ADDRS_PER_BLOCK ((F2FS_BLKSIZE - sizeof(struct node_footer)) / sizeof(__le32)) |
| #define DEF_ADDRS_PER_INODE |
| #define DEF_DIR_LEVEL 0 |
| #define DEF_INLINE_RESERVED_SIZE 1 |
| #define DEF_MAX_INLINE_DATA |
| #define DEFAULT_BLKSIZE_BITS 12 /* 4096 */ |
| #define DEFAULT_BLOCKS_PER_SEGMENT 512 |
| #define DEFAULT_INLINE_XATTR_ADDRS 50 |
| #define DEFAULT_NAT_ENTRY_RATIO 20 |
| #define DEFAULT_SECTOR_SIZE 512 |
| #define DEFAULT_SECTORS_PER_BLOCK (1 << (F2FS_BLKSIZE_BITS - SECTOR_SHIFT)) |
| #define DEFAULT_SEGMENTS_PER_SECTION 1 |
| #define DISP | ( | fmt, | |
| ptr, | |||
| member | |||
| ) |
| #define DISP_raw_str | ( | fmt, | |
| member | |||
| ) |
| #define DISP_str | ( | fmt, | |
| ptr, | |||
| member | |||
| ) |
| #define DISP_u16 | ( | ptr, | |
| member | |||
| ) |
| #define DISP_u32 | ( | ptr, | |
| member | |||
| ) |
| #define DISP_u64 | ( | ptr, | |
| member | |||
| ) |
| #define DISP_u8 | ( | ptr, | |
| member | |||
| ) |
| #define DISP_utf | ( | ptr, | |
| member | |||
| ) |
| #define ENTRIES_IN_SUM (F2FS_BLKSIZE / 8) |
| #define ERR_MSG | ( | fmt, | |
| ... | |||
| ) |
| #define EXTRA_INFO_RESERVED (SUM_JOURNAL_SIZE - 2 - 8) |
| #define F2FS_ALL_FAULT_TYPE ((1UL << (FAULT_MAX)) - 1) |
| #define F2FS_BLK_ALIGN | ( | x | ) | (((x) + F2FS_BLKSIZE - 1) / F2FS_BLKSIZE) |
| #define F2FS_BLKSIZE c.blksize /* support configurable block size */ |
| #define F2FS_BLKSIZE_BITS c.blksize_bits |
| #define F2FS_BYTES_TO_BLK | ( | bytes | ) | ((bytes) >> F2FS_BLKSIZE_BITS) |
| #define F2FS_CASEFOLD_FL 0x40000000 /* Casefolded file */ |
| #define F2FS_COMPR_FL 0x00000004 /* Compress file */ |
| #define F2FS_COMPRESS_RELEASED 0x80 /* file released compressed blocks */ |
| #define F2FS_CP_PACKS 2 /* # of checkpoint packs */ |
| #define F2FS_DATA_EXIST 0x08 /* file inline data exist flag */ |
| #define F2FS_DDOT_HASH F2FS_DOT_HASH |
| #define F2FS_DEF_PROJID 0 /* default project ID */ |
| #define F2FS_DENTRY_BLOCK_DENTRIES | ( | blk | ) |
| #define F2FS_DENTRY_BLOCK_DENTRY | ( | blk, | |
| i | |||
| ) | (F2FS_DENTRY_BLOCK_DENTRIES((blk))[(i)]) |
| #define F2FS_DENTRY_BLOCK_FILENAME | ( | blk, | |
| i | |||
| ) |
| #define F2FS_DENTRY_BLOCK_FILENAMES | ( | blk | ) |
| #define F2FS_DEVICE_ALIAS_FL 0x80000000 /* File for aliasing a device */ |
| #define F2FS_DOT_HASH 0 |
| #define F2FS_ENC_NO_COMPAT_FALLBACK_FL (1 << 1) |
| #define F2FS_ENC_STRICT_MODE_FL (1 << 0) |
| #define F2FS_ENC_UTF8_12_0 1 |
| #define F2FS_ENC_UTF8_12_1 1 |
| #define F2FS_EXTRA_ATTR 0x20 /* file having extra attribute */ |
| #define F2FS_EXTRA_ISIZE_OFFSET offsetof(struct f2fs_inode, i_extra_isize) |
| #define F2FS_FEATURE_ATOMIC_WRITE 0x0004 |
| #define F2FS_FEATURE_BLKZONED 0x0002 |
| #define F2FS_FEATURE_CASEFOLD 0x1000 |
| #define F2FS_FEATURE_COMPRESSION 0x2000 |
| #define F2FS_FEATURE_DEVICE_ALIAS 0x8000 |
| #define F2FS_FEATURE_ENCRYPT 0x0001 |
| #define F2FS_FEATURE_EXTRA_ATTR 0x0008 |
| #define F2FS_FEATURE_FLEXIBLE_INLINE_XATTR 0x0040 |
| #define F2FS_FEATURE_INODE_CHKSUM 0x0020 |
| #define F2FS_FEATURE_INODE_CRTIME 0x0100 |
| #define F2FS_FEATURE_LOST_FOUND 0x0200 |
| #define F2FS_FEATURE_PRJQUOTA 0x0010 |
| #define F2FS_FEATURE_QUOTA_INO 0x0080 |
| #define F2FS_FEATURE_RO 0x4000 |
| #define F2FS_FEATURE_SB_CHKSUM 0x0800 |
| #define F2FS_FEATURE_VERITY 0x0400 /* reserved */ |
| #define F2FS_HASH_COL_BIT ((0x1ULL) << 63) |
| #define F2FS_IMMUTABLE_FL 0x00000010 /* Immutable file */ |
| #define F2FS_INLINE_DATA 0x02 /* file inline data flag */ |
| #define F2FS_INLINE_DENTRY 0x04 /* file inline dentry flag */ |
| #define F2FS_INLINE_DOTS 0x10 /* file having implicit dot dentries */ |
| #define F2FS_INLINE_XATTR 0x01 /* file inline xattr flag */ |
| #define F2FS_INODE_I_NID | ( | inode, | |
| i | |||
| ) | (F2FS_INODE_NIDS((inode))->i_nid[(i)]) |
| #define F2FS_INODE_NIDS | ( | inode | ) | ((struct f2fs_inode_nids *)(&(inode)->i_addr[DEF_ADDRS_PER_INODE])) |
| #define F2FS_MAX_BLKSIZE 16384 |
| #define F2FS_MAX_EXTENSION 64 /* # of extension entries */ |
| #define F2FS_MAX_HASH (~((0x3ULL) << 62)) |
| #define F2FS_MAX_LOG_SECTOR_SIZE F2FS_BLKSIZE_BITS /* max sector size is block size */ |
| #define F2FS_MAX_QUOTAS 3 |
| #define F2FS_MAX_SEGMENT ((16 * 1024 * 1024) / 2) |
| #define F2FS_META_INO | ( | sbi | ) | (sbi->meta_ino_num) |
| #define F2FS_MIN_BLKSIZE 4096 |
| #define F2FS_MIN_LOG_SECTOR_SIZE 9 /* 9 bits for 512 bytes */ |
| #define F2FS_MIN_SEGMENT 9 /* SB + 2 (CP + SIT + NAT) + SSA + MAIN */ |
| #define F2FS_MIN_SEGMENTS 9 /* SB + 2 (CP + SIT + NAT) + SSA + MAIN */ |
| #define F2FS_NAME_LEN 255 |
| #define F2FS_NOATIME_FL 0x00000080 /* do not update atime */ |
| #define F2FS_NODE_FOOTER | ( | blk | ) |
| #define F2FS_NODE_INO | ( | sbi | ) | (sbi->node_ino_num) |
| #define F2FS_NODUMP_FL 0x00000040 /* do not dump file */ |
| #define F2FS_NUMBER_OF_CHECKPOINT_PACK 2 |
| #define F2FS_ORPHAN_BLOCK_FOOTER | ( | blk | ) | ((struct orphan_block_footer *)&(blk)->ino[F2FS_ORPHANS_PER_BLOCK]) |
| #define F2FS_ORPHANS_PER_BLOCK ((F2FS_BLKSIZE - 4 * sizeof(__le32)) / sizeof(__le32)) |
| #define F2FS_PIN_FILE 0x40 /* file should not be gced */ |
| #define F2FS_PRINT_NAMELEN (4 * ((F2FS_NAME_LEN + 2) / 3) + 1) |
| #define F2FS_ROOT_INO | ( | sbi | ) | (sbi->root_ino_num) |
| #define F2FS_SLOT_LEN 8 |
| #define F2FS_SLOT_LEN_BITS 3 |
| #define F2FS_SUMMARY_BLOCK_FOOTER | ( | blk | ) |
| #define F2FS_SUMMARY_BLOCK_JOURNAL | ( | blk | ) | ((struct f2fs_journal *)(&(blk)->entries[ENTRIES_IN_SUM])) |
| #define F2FS_SUPER_MAGIC 0xF2F52010 /* F2FS Magic Number */ |
| #define F2FS_SUPER_OFFSET 1024 /* byte-size offset */ |
| #define F2FS_TOTAL_EXTRA_ATTR_SIZE (offsetof(struct f2fs_inode, i_extra_end) - F2FS_EXTRA_ISIZE_OFFSET) |
| #define F2FS_ZONED_HA 1 |
| #define F2FS_ZONED_HM 2 |
| #define F2FS_ZONED_NONE 0 |
| #define FADVISE_COLD_BIT 0x01 |
| #define FADVISE_ENC_NAME_BIT 0x08 |
| #define FADVISE_ENCRYPT_BIT 0x04 |
| #define FADVISE_HOT_BIT 0x20 |
| #define FADVISE_KEEP_SIZE_BIT 0x10 |
| #define FADVISE_LOST_PINO_BIT 0x02 |
| #define FADVISE_VERITY_BIT 0x40 /* reserved */ |
| #define fallthrough __attribute__((__fallthrough__)) |
| #define file_enc_name | ( | fi | ) | ((fi)->i_advise & FADVISE_ENC_NAME_BIT) |
| #define file_is_encrypt | ( | fi | ) | ((fi)->i_advise & FADVISE_ENCRYPT_BIT) |
| #define FIX_MSG | ( | fmt, | |
| ... | |||
| ) |
| #define get_cp | ( | member | ) |
| #define get_cp_le16 | ( | member | ) | le16_to_cpu(cp->member) |
| #define get_cp_le32 | ( | member | ) | le32_to_cpu(cp->member) |
| #define get_cp_le64 | ( | member | ) | le64_to_cpu(cp->member) |
| #define GET_DENTRY_SLOTS | ( | x | ) | ((x + F2FS_SLOT_LEN - 1) >> F2FS_SLOT_LEN_BITS) |
| #define get_extra_isize | ( | node | ) | __get_extra_isize(&node->i) |
| #define get_newsb | ( | member | ) |
| #define get_newsb_le16 | ( | member | ) | le16_to_cpu(new_sb->member) |
| #define get_newsb_le32 | ( | member | ) | le32_to_cpu(new_sb->member) |
| #define get_newsb_le64 | ( | member | ) | le64_to_cpu(new_sb->member) |
| #define get_sb | ( | member | ) |
| #define get_sb_le16 | ( | member | ) | le16_to_cpu(sb->member) |
| #define get_sb_le32 | ( | member | ) | le32_to_cpu(sb->member) |
| #define get_sb_le64 | ( | member | ) | le64_to_cpu(sb->member) |
| #define GET_SIT_TYPE | ( | raw_sit | ) |
| #define GET_SIT_VBLOCKS | ( | raw_sit | ) | (le16_to_cpu((raw_sit)->vblocks) & SIT_VBLOCKS_MASK) |
| #define GET_SUM_TYPE | ( | sum | ) | (F2FS_SUMMARY_BLOCK_FOOTER(sum)->entry_type) |
| #define GFP_F2FS_ZERO (GFP_NOFS | __GFP_ZERO) |
| #define INFO_MSG | ( | fmt, | |
| ... | |||
| ) |
| #define INIT_FEATURE_TABLE |
| #define INLINE_DATA_OFFSET |
| #define INLINE_DENTRY_BITMAP_SIZE | ( | node | ) |
| #define INLINE_RESERVED_SIZE | ( | node | ) |
| #define IS_CASEFOLDED | ( | dir | ) | ((dir)->i_flags & cpu_to_le32(F2FS_CASEFOLD_FL)) |
| #define IS_DEVICE_ALIASING | ( | fi | ) | ((fi)->i_flags & cpu_to_le32(F2FS_DEVICE_ALIAS_FL)) |
| #define le16_to_cpu | ( | x | ) | ((uint16_t)(x)) |
| #define le32_to_cpu | ( | x | ) | ((uint32_t)(x)) |
| #define le64_to_cpu | ( | x | ) | ((uint64_t)(x)) |
| #define LINUX_S_IFDIR 0040000 |
| #define LINUX_S_IFMT 00170000 |
| #define LINUX_S_IFREG 0100000 |
| #define LINUX_S_ISDIR | ( | m | ) | (((m) & LINUX_S_IFMT) == LINUX_S_IFDIR) |
| #define LINUX_S_ISREG | ( | m | ) | (((m) & LINUX_S_IFMT) == LINUX_S_IFREG) |
| #define LPF "lost+found" |
| #define max | ( | x, | |
| y | |||
| ) |
| #define MAX_ACTIVE_DATA_LOGS 8 |
| #define MAX_ACTIVE_LOGS 16 |
| #define MAX_ACTIVE_NODE_LOGS 8 |
| #define MAX_BITMAP_SIZE_IN_CKPT (CP_CHKSUM_OFFSET - CP_BITMAP_OFFSET) |
| #define MAX_CACHE_SUMS 8 |
| #define MAX_COMPRESS_LOG_SIZE 8 |
| #define MAX_CP_PAYLOAD |
| #define MAX_DEVICES 8 |
| #define MAX_DIR_BUCKETS (1 << ((MAX_DIR_HASH_DEPTH / 2) - 1)) |
| #define MAX_DIR_HASH_DEPTH 63 |
| #define MAX_F2FS_ERRORS 16 |
| #define MAX_INLINE_DATA | ( | node | ) |
| #define MAX_NR_FEATURE 32 |
| #define MAX_PATH_LEN 64 |
| #define MAX_SIT_BITMAP_SIZE |
| #define MAX_SIT_BITMAP_SIZE_IN_CKPT (CP_CHKSUM_OFFSET - CP_BITMAP_OFFSET - MIN_NAT_BITMAP_SIZE) |
| #define MAX_STOP_REASON 32 |
| #define MAX_VOLUME_NAME 512 |
| #define min | ( | x, | |
| y | |||
| ) |
| #define MIN_COMPRESS_LOG_SIZE 2 |
| #define MIN_INLINE_DENTRY_SIZE 40 /* just include '.' and '..' entries */ |
| #define MIN_NAT_BITMAP_SIZE 64 |
| #define MIN_RSVD_SECS (NR_CURSEG_TYPE + 2U) |
| #define MSG | ( | n, | |
| fmt, | |||
| ... | |||
| ) |
| #define NAT_BLOCK_OFFSET | ( | start_nid | ) | (start_nid / NAT_ENTRY_PER_BLOCK) |
| #define NAT_ENTRY_PER_BLOCK (F2FS_BLKSIZE / sizeof(struct f2fs_nat_entry)) |
| #define NAT_JOURNAL_ENTRIES |
| #define NAT_JOURNAL_RESERVED |
| #define NEW_ADDR -1U |
| #define NIDS_PER_BLOCK ((F2FS_BLKSIZE - sizeof(struct node_footer)) / sizeof(__le32)) |
| #define NODE_DIND_BLOCK (DEF_ADDRS_PER_INODE + 5) |
| #define NODE_DIR1_BLOCK (DEF_ADDRS_PER_INODE + 1) |
| #define NODE_DIR2_BLOCK (DEF_ADDRS_PER_INODE + 2) |
| #define NODE_IND1_BLOCK (DEF_ADDRS_PER_INODE + 3) |
| #define NODE_IND2_BLOCK (DEF_ADDRS_PER_INODE + 4) |
| #define NR_CURSEG_DATA_TYPE (3) |
| #define NR_CURSEG_NODE_TYPE (3) |
| #define NR_CURSEG_TYPE (NR_CURSEG_DATA_TYPE + NR_CURSEG_NODE_TYPE) |
| #define NR_DENTRY_IN_BLOCK |
| #define NR_INLINE_DENTRY | ( | node | ) |
| #define NULL_ADDR 0x0U |
| #define NULL_SEGNO ((unsigned int)~0) |
| #define OFFSET_OF_END_OF_I_EXT 360 |
| #define QUOTA_DATA (((1024 * 6 - 1) / F2FS_BLKSIZE) + 1) |
| #define QUOTA_INO | ( | sb, | |
| t | |||
| ) | (le32_to_cpu((sb)->qf_ino[t])) |
| #define round_down | ( | x, | |
| y | |||
| ) | ((x) & ~__round_mask(x, y)) |
| #define round_up | ( | x, | |
| y | |||
| ) | (((x) + (y) - 1) / (y)) |
| #define SB_ABNORMAL_STOP 0x2 /* s_stop_reason is set except shutdown */ |
| #define SB_CHKSUM_OFFSET 3068 |
| #define SB_ENCODE_FLAG 0x16 /* encode_flag */ |
| #define SB_FORCE_STOP 0x1 /* s_stop_reason is set */ |
| #define SB_FS_ERRORS 0x4 /* s_erros is set */ |
| #define SB_INVALID 0x8 /* sb is invalid */ |
| #define SB_NEED_FIX |
| #define SECTOR_SHIFT 9 |
| #define SEG_ALIGN | ( | blks | ) | SIZE_ALIGN(blks, c.blks_per_seg) |
| #define set_cp | ( | member, | |
| val | |||
| ) |
| #define set_cp_le16 | ( | member, | |
| val | |||
| ) | (cp->member = cpu_to_le16(val)) |
| #define set_cp_le32 | ( | member, | |
| val | |||
| ) | (cp->member = cpu_to_le32(val)) |
| #define set_cp_le64 | ( | member, | |
| val | |||
| ) | (cp->member = cpu_to_le64(val)) |
| #define set_sb | ( | member, | |
| val | |||
| ) |
| #define set_sb_le16 | ( | member, | |
| val | |||
| ) | (sb->member = cpu_to_le16(val)) |
| #define set_sb_le32 | ( | member, | |
| val | |||
| ) | (sb->member = cpu_to_le32(val)) |
| #define set_sb_le64 | ( | member, | |
| val | |||
| ) | (sb->member = cpu_to_le64(val)) |
| #define SET_SUM_TYPE | ( | sum, | |
| type | |||
| ) | (F2FS_SUMMARY_BLOCK_FOOTER(sum)->entry_type = type) |
| #define SIT_ENTRY_PER_BLOCK (F2FS_BLKSIZE / sizeof(struct f2fs_sit_entry)) |
| #define SIT_JOURNAL_ENTRIES |
| #define SIT_JOURNAL_RESERVED |
| #define SIT_VBLOCK_MAP_SIZE 64 |
| #define SIT_VBLOCKS_MASK ((1 << SIT_VBLOCKS_SHIFT) - 1) |
| #define SIT_VBLOCKS_SHIFT 10 |
| #define SIZE_OF_DENTRY_BITMAP |
| #define SIZE_OF_DIR_ENTRY 11 /* by byte */ |
| #define SIZE_OF_I_NID 20 |
| #define SIZE_OF_RESERVED |
| #define static_assert _Static_assert |
| #define SUM_ENTRIES_SIZE (SUMMARY_SIZE * ENTRIES_IN_SUM) |
| #define SUM_FOOTER_SIZE (5) /* sizeof(struct summary_footer) */ |
| #define SUM_JOURNAL_SIZE |
| #define SUM_TYPE_DATA (0) |
| #define SUM_TYPE_NODE (1) |
| #define SUMMARY_SIZE (7) /* sizeof(struct summary) */ |
| #define time_to_inject | ( | type | ) |
| #define typecheck | ( | type, | |
| x | |||
| ) |
| #define UNUSED | ( | x | ) | x |
| #define VERSION_LEN 256 |
| #define VERSION_NAME_LEN (VERSION_LEN - VERSION_TIMESTAMP_LEN) |
| #define VERSION_TIMESTAMP_LEN 4 |
| #define WITH_DEFRAG |
| #define WITH_DUMP |
| #define WITH_INJECT |
| #define WITH_LABEL |
| #define WITH_RESIZE |
| #define WITH_SLOAD |
| #define XATTR_NODE_OFFSET |
| #define ZONE_ALIGN | ( | blks | ) |
| typedef __le32 f2fs_hash_t |
| typedef unsigned long pgoff_t |
| typedef int() report_zones_cb_t(int i, void *, void *) |
| typedef uint16_t u16 |
| typedef uint32_t u32 |
| typedef uint64_t u64 |
| typedef uint8_t u8 |
| typedef unsigned short umode_t |
| anonymous enum |
| anonymous enum |
| enum compress_algorithms |
| enum default_set |
| enum dot_type |
| enum f2fs_config_func |
| enum f2fs_error |
| enum FILE_TYPE |
| enum filter_policy |
| enum rw_hint |
| enum stop_cp_reason |
| struct f2fs_super_block __attribute__ | ( | (packed) | ) |
|
inlinestatic |
|
inlinestatic |
| unsigned int addrs_per_page | ( | struct f2fs_inode * | i, |
| bool | is_inode | ||
| ) |
|
inlinestatic |
bswap_16 - reverse bytes in a uint16_t value. @val: value whose bytes to swap.
Example: // Output contains "1024 is 4 as two bytes reversed" printf("1024 is %u as two bytes reversed\n", bswap_16(1024));
|
inlinestatic |
bswap_32 - reverse bytes in a uint32_t value. @val: value whose bytes to swap.
Example: // Output contains "1024 is 262144 as four bytes reversed" printf("1024 is %u as four bytes reversed\n", bswap_32(1024));
| unsigned int calc_extra_isize | ( | void | ) |
|
inlinestatic |
| void dcache_init | ( | void | ) |
| void dcache_release | ( | void | ) |
| int dev_fill | ( | void * | buf, |
| __u64 | offset, | ||
| size_t | len, | ||
| enum | rw_hint | ||
| ) |
| int dev_fill_block | ( | void * | buf, |
| __u64 | blk_addr, | ||
| enum | rw_hint | ||
| ) |
| int dev_read | ( | void * | buf, |
| __u64 | offset, | ||
| size_t | len | ||
| ) |
| int dev_read_block | ( | void * | buf, |
| __u64 | blk_addr | ||
| ) |
| int dev_read_version | ( | void * | buf, |
| __u64 | offset, | ||
| size_t | len | ||
| ) |
| int dev_reada_block | ( | __u64 | blk_addr | ) |
| int dev_readahead | ( | __u64 | offset, |
| size_t | UNUSEDlen | ||
| ) |
| int dev_write | ( | void * | buf, |
| __u64 | offset, | ||
| size_t | len, | ||
| enum | rw_hint | ||
| ) |
| int dev_write_block | ( | void * | buf, |
| __u64 | blk_addr, | ||
| enum | rw_hint | ||
| ) |
| int dev_write_dump | ( | void * | buf, |
| __u64 | offset, | ||
| size_t | len | ||
| ) |
| int dev_write_symlink | ( | char * | buf, |
| size_t | len | ||
| ) |
|
inlinestatic |
| uint32_t f2fs_cal_crc32 | ( | uint32_t | crc, |
| void * | buf, | ||
| int | len | ||
| ) |
| int f2fs_check_zones | ( | int | i | ) |
| __u32 f2fs_checkpoint_chksum | ( | struct f2fs_checkpoint * | cp | ) |
| int f2fs_clear_bit | ( | unsigned int | nr, |
| char * | addr | ||
| ) |
| int f2fs_crc_valid | ( | uint32_t | blk_crc, |
| void * | buf, | ||
| int | len | ||
| ) |
| f2fs_hash_t f2fs_dentry_hash | ( | int | encoding, |
| int | casefolded, | ||
| const unsigned char * | name, | ||
| int | len | ||
| ) |
| int f2fs_dev_is_umounted | ( | char * | path | ) |
| int f2fs_dev_is_writable | ( | void | ) |
| int f2fs_devs_are_umounted | ( | void | ) |
| char * f2fs_encoding2str | ( | const int | encoding | ) |
| int f2fs_finalize_device | ( | void | ) |
| int f2fs_finish_zone | ( | int | i, |
| void * | blkzone | ||
| ) |
| int f2fs_fsync_device | ( | void | ) |
| int f2fs_get_device_info | ( | void | ) |
| int f2fs_get_encoding_flags | ( | int | encoding | ) |
| int f2fs_get_f2fs_info | ( | void | ) |
| uint32_t f2fs_get_usable_segments | ( | struct f2fs_super_block * | sb | ) |
| int f2fs_get_zone_blocks | ( | int | i | ) |
| int f2fs_get_zoned_model | ( | int | i | ) |
|
inlinestatic |
| void f2fs_init_configuration | ( | void | ) |
|
inlinestatic |
| int f2fs_init_sparse_file | ( | void | ) |
| enum rw_hint f2fs_io_type_to_rw_hint | ( | int | seg_type | ) |
| const struct f2fs_nls_table * f2fs_load_nls_table | ( | int | encoding | ) |
| u64 f2fs_max_file_offset | ( | struct f2fs_inode * | i | ) |
| void f2fs_release_sparse_resource | ( | void | ) |
| int f2fs_report_zone | ( | int | , |
| uint64_t | , | ||
| struct blk_zone * | |||
| ) |
| int f2fs_report_zones | ( | int | , |
| report_zones_cb_t * | , | ||
| void * | |||
| ) |
| int f2fs_reset_zone | ( | int | , |
| void * | |||
| ) |
| int f2fs_reset_zones | ( | int | i | ) |
| int f2fs_set_bit | ( | unsigned int | nr, |
| char * | addr | ||
| ) |
| int f2fs_str2encoding | ( | const char * | string | ) |
| int f2fs_str2encoding_flags | ( | char ** | param, |
| __u16 * | flags | ||
| ) |
| int f2fs_test_bit | ( | unsigned int | nr, |
| const char * | p | ||
| ) |
|
inlinestatic |
| int get_bits_in_byte | ( | unsigned char | n | ) |
|
inlinestatic |
| int get_device_info | ( | int | i | ) |
|
inlinestatic |
| void get_kernel_uname_version | ( | __u8 * | version | ) |
| void get_kernel_version | ( | __u8 * | version | ) |
|
inlinestatic |
|
inlinestatic |
| int log_base_2 | ( | uint32_t | num | ) |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
| int utf16_to_utf8 | ( | char * | output, |
| const char * | input, | ||
| size_t | outsize, | ||
| size_t | insize | ||
| ) |
| int utf8_to_utf16 | ( | char * | output, |
| const char * | input, | ||
| size_t | outsize, | ||
| size_t | insize | ||
| ) |
| union { ... } |
| union { ... } |
| struct f2fs_dentry_block __attribute__ |
| __le32 block_addr |
|
extern |
| __le32 checksum_offset |
| __le32 cp_blkaddr |
| __le32 cp_payload |
| __le32 crc |
| __u8 encrypt_pw_salt[16] |
| __u8 encryption_level |
| __le32 extension_count |
| __u8 extension_list[F2FS_MAX_EXTENSION][8] |
|
extern |
| __le32 hash_code |
| __u8 hot_ext_count |
| __le64 i_compr_blocks |
| __u8 i_compress_algorithm |
| __le16 i_compress_flag |
| __le64 i_crtime |
| __le32 i_crtime_nsec |
| __le32 i_extra_end[0] |
| __le16 i_extra_isize |
| __le16 i_inline_xattr_size |
| __le32 i_inode_checksum |
| __u8 i_log_cluster_size |
| __le32 i_projid |
| struct f2fs_extra_info info |
| __u8 init_version[VERSION_LEN] |
| __le32 ino |
| __le64 kbytes_written |
| __le32 log_blocks_per_seg |
| __le32 log_blocksize |
| __le32 log_sectors_per_block |
| __le32 log_sectorsize |
| __le32 magic |
| __le32 main_blkaddr |
| __le16 major_ver |
| __le32 meta_ino |
| __le16 minor_ver |
| __le64 mtime |
| __le16 n_nats |
| __le16 n_sits |
| __le16 name_len |
| __le32 nat_blkaddr |
| struct nat_journal nat_j |
| struct f2fs_nat_entry ne |
| __le32 nid |
| __le32 node_ino |
| __le16 ofs_in_node |
| __u8 reserved |
| __le32 root_ino |
| __le16 s_encoding |
| __le16 s_encoding_flags |
| __u8 s_errors[MAX_F2FS_ERRORS] |
| __u8 s_stop_reason[MAX_STOP_REASON] |
| struct f2fs_sit_entry se |
| __le32 secs_per_zone |
| __le32 section_count |
| __le32 segment0_blkaddr |
| __le32 segment_count |
| __le32 segment_count_ckpt |
| __le32 segment_count_main |
| __le32 segment_count_nat |
| __le32 segment_count_sit |
| __le32 segment_count_ssa |
| __le32 segno |
| __le32 segs_per_sec |
| __le32 sit_blkaddr |
| struct sit_journal sit_j |
| __le32 ssa_blkaddr |
| __u8 uuid[16] |
| __u8 valid_map[SIT_VBLOCK_MAP_SIZE] |
| __le16 vblocks |
| __u8 version |
| __le16 volume_name[MAX_VOLUME_NAME] |