20#ifndef __SANE_USERSPACE_TYPES__
21#define __SANE_USERSPACE_TYPES__
54#ifdef HAVE_LINUX_TYPES_H
55#include <linux/types.h>
59#ifdef HAVE_KERNEL_UAPI_LINUX_BLKZONED_H
60#include <kernel/uapi/linux/blkzoned.h>
61#elif defined(HAVE_LINUX_BLKZONED_H)
62#include <linux/blkzoned.h>
65#ifdef HAVE_LINUX_RW_HINT_H
66#include <linux/rw_hint.h>
79#include <selinux/selinux.h>
80#include <selinux/label.h>
84#elif defined(__GNUC__)
85# define UNUSED(x) UNUSED_ ## x __attribute__((unused))
86#elif defined(__LCLINT__)
88#elif defined(__cplusplus)
95#define static_assert _Static_assert
98#ifdef HAVE_SYS_MOUNT_H
104#define fallthrough do {} while (0)
106#define fallthrough __attribute__((__fallthrough__))
111#undef HAVE_LINUX_TYPES_H
115#define MIN_COMPRESS_LOG_SIZE 2
116#define MAX_COMPRESS_LOG_SIZE 8
127#ifndef HAVE_LINUX_TYPES_H
146#define COMPRESS_DATA_RESERVED_SIZE 4
153#define COMPRESS_HEADER_SIZE (sizeof(struct compress_data))
178 return ((val & (uint16_t)0x00ffU) << 8)
179 | ((val & (uint16_t)0xff00U) >> 8);
192 return ((val & (uint32_t)0x000000ffUL) << 24)
193 | ((val & (uint32_t)0x0000ff00UL) << 8)
194 | ((val & (uint32_t)0x00ff0000UL) >> 8)
195 | ((val & (uint32_t)0xff000000UL) >> 24);
199#if defined HAVE_DECL_BSWAP_64 && !HAVE_DECL_BSWAP_64
209static inline uint64_t bswap_64(uint64_t val)
211 return ((val & (uint64_t)0x00000000000000ffULL) << 56)
212 | ((val & (uint64_t)0x000000000000ff00ULL) << 40)
213 | ((val & (uint64_t)0x0000000000ff0000ULL) << 24)
214 | ((val & (uint64_t)0x00000000ff000000ULL) << 8)
215 | ((val & (uint64_t)0x000000ff00000000ULL) >> 8)
216 | ((val & (uint64_t)0x0000ff0000000000ULL) >> 24)
217 | ((val & (uint64_t)0x00ff000000000000ULL) >> 40)
218 | ((val & (uint64_t)0xff00000000000000ULL) >> 56);
222#if __BYTE_ORDER == __LITTLE_ENDIAN
223#define le16_to_cpu(x) ((uint16_t)(x))
224#define le32_to_cpu(x) ((uint32_t)(x))
225#define le64_to_cpu(x) ((uint64_t)(x))
226#define cpu_to_le16(x) ((uint16_t)(x))
227#define cpu_to_le32(x) ((uint32_t)(x))
228#define cpu_to_le64(x) ((uint64_t)(x))
229#define be32_to_cpu(x) __builtin_bswap64(x)
230#elif __BYTE_ORDER == __BIG_ENDIAN
231#define le16_to_cpu(x) bswap_16(x)
232#define le32_to_cpu(x) bswap_32(x)
233#define le64_to_cpu(x) bswap_64(x)
234#define cpu_to_le16(x) bswap_16(x)
235#define cpu_to_le32(x) bswap_32(x)
236#define cpu_to_le64(x) bswap_64(x)
237#define be32_to_cpu(x) ((uint64_t)(x))
240#define typecheck(type,x) \
242 typeof(x) __dummy2; \
243 (void)(&__dummy == &__dummy2); \
247#define NULL_SEGNO ((unsigned int)~0)
253#define INFO_MSG(fmt, ...) \
255 printf("[INFO] (%s:%4d) ", __func__, __LINE__); \
256 printf(" --> "fmt"\n", ##__VA_ARGS__); \
259#define FIX_MSG(fmt, ...) \
261 printf("[FIX] (%s:%4d) ", __func__, __LINE__); \
262 printf(" --> "fmt"\n", ##__VA_ARGS__); \
265#define ASSERT_MSG(fmt, ...) \
267 printf("[ASSERT] (%s:%4d) ", __func__, __LINE__); \
268 printf(" --> "fmt"\n", ##__VA_ARGS__); \
275 printf("[ASSERT] (%s:%4d) %s\n", \
276 __func__, __LINE__, #exp); \
281#define ERR_MSG(fmt, ...) \
283 printf("[%s:%d] " fmt, __func__, __LINE__, ##__VA_ARGS__); \
286#define MSG(n, fmt, ...) \
288 if (c.dbg_lv >= n && !c.layout && !c.show_file_map) { \
289 printf(fmt, ##__VA_ARGS__); \
293#define DBG(n, fmt, ...) \
295 if (c.dbg_lv >= n && !c.layout && !c.show_file_map) { \
296 printf("[%s:%4d] " fmt, \
297 __func__, __LINE__, ##__VA_ARGS__); \
302#define DISP(fmt, ptr, member) \
304 printf("%-30s" fmt, #member, ((ptr)->member)); \
307#define DISP_raw_str(fmt, member) \
310 printf("%-30s " fmt "\n", #member":", member); \
312 printf("%-30s" "\t\t[" fmt "]\n", \
316#define DISP_str(fmt, ptr, member) \
319 printf("%-30s " fmt "\n", \
320 #member":", ((ptr)->member)); \
322 printf("%-30s" "\t\t[" fmt "]\n", \
323 #member, ((ptr)->member)); \
326#define DISP_u8(ptr, member) \
328 assert(sizeof((ptr)->member) == 1); \
330 printf("%-30s %u\n", \
331 #member":", ((ptr)->member)); \
333 printf("%-30s" "\t\t[0x%8x : %u]\n", \
334 #member, ((ptr)->member), ((ptr)->member)); \
337#define DISP_u16(ptr, member) \
339 assert(sizeof((ptr)->member) == 2); \
341 printf("%-30s %u\n", \
342 #member":", le16_to_cpu(((ptr)->member))); \
344 printf("%-30s" "\t\t[0x%8x : %u]\n", \
345 #member, le16_to_cpu(((ptr)->member)), \
346 le16_to_cpu(((ptr)->member))); \
349#define DISP_u32(ptr, member) \
351 assert(sizeof((ptr)->member) <= 4); \
353 printf("%-30s %u\n", \
354 #member":", le32_to_cpu(((ptr)->member))); \
356 printf("%-30s" "\t\t[0x%8x : %u]\n", \
357 #member, le32_to_cpu(((ptr)->member)), \
358 le32_to_cpu(((ptr)->member))); \
361#define DISP_u64(ptr, member) \
363 assert(sizeof((ptr)->member) == 8); \
365 printf("%-30s %" PRIu64 "\n", \
366 #member":", le64_to_cpu(((ptr)->member))); \
368 printf("%-30s" "\t\t[0x%8" PRIx64 " : %" PRIu64 "]\n", \
369 #member, le64_to_cpu(((ptr)->member)), \
370 le64_to_cpu(((ptr)->member))); \
373#define DISP_utf(ptr, member) \
376 printf("%-30s %s\n", #member":", \
379 printf("%-30s" "\t\t[%s]\n", #member, \
384#define BUF_DISP_u32(buf, data, len, ptr, member) \
386 assert(sizeof((ptr)->member) <= 4); \
387 snprintf(buf, len, #member); \
388 snprintf(data, len, "0x%x : %u", ((ptr)->member), \
392#define BUF_DISP_u64(buf, data, len, ptr, member) \
394 assert(sizeof((ptr)->member) == 8); \
395 snprintf(buf, len, #member); \
396 snprintf(data, len, "0x%llx : %llu", ((ptr)->member), \
400#define BUF_DISP_utf(buf, data, len, ptr, member) \
401 snprintf(buf, len, #member)
404#define BITS_PER_BYTE 8
406#define SECTOR_SHIFT 9
408#define F2FS_SUPER_MAGIC 0xF2F52010
409#define CP_CHKSUM_OFFSET (F2FS_BLKSIZE - sizeof(__le32))
410#define SB_CHKSUM_OFFSET 3068
411#define MAX_PATH_LEN 64
414#define F2FS_BYTES_TO_BLK(bytes) ((bytes) >> F2FS_BLKSIZE_BITS)
415#define F2FS_BLKSIZE_BITS c.blksize_bits
418#define F2FS_NUMBER_OF_CHECKPOINT_PACK 2
419#define DEFAULT_SECTOR_SIZE 512
420#define DEFAULT_SECTORS_PER_BLOCK (1 << (F2FS_BLKSIZE_BITS - SECTOR_SHIFT))
421#define DEFAULT_BLOCKS_PER_SEGMENT 512
422#define DEFAULT_SEGMENTS_PER_SECTION 1
423#define DEFAULT_BLKSIZE_BITS 12
425#define VERSION_LEN 256
426#define VERSION_TIMESTAMP_LEN 4
427#define VERSION_NAME_LEN (VERSION_LEN - VERSION_TIMESTAMP_LEN)
429#define LPF "lost+found"
432#define MIN_RSVD_SECS (NR_CURSEG_TYPE + 2U)
433#define CONFIG_RSVD_DEFAULT_OP_RATIO 3.0
501 void (*
add)(
const char *);
502 void (*destroy)(void);
503 bool (*filter)(
const char *);
518#define ALIGN_DOWN(addrs, size) (((addrs) / (size)) * (size))
519#define ALIGN_UP(addrs, size) ALIGN_DOWN(((addrs) + (size) - 1), (size))
522#define BITS_PER_LONG 64
524#define BITS_PER_LONG 32
527#define BIT_MASK(nr) (1 << (nr % BITS_PER_LONG))
528#define BIT_WORD(nr) (nr / BITS_PER_LONG)
530#define set_sb_le64(member, val) (sb->member = cpu_to_le64(val))
531#define set_sb_le32(member, val) (sb->member = cpu_to_le32(val))
532#define set_sb_le16(member, val) (sb->member = cpu_to_le16(val))
533#define get_sb_le64(member) le64_to_cpu(sb->member)
534#define get_sb_le32(member) le32_to_cpu(sb->member)
535#define get_sb_le16(member) le16_to_cpu(sb->member)
536#define get_newsb_le64(member) le64_to_cpu(new_sb->member)
537#define get_newsb_le32(member) le32_to_cpu(new_sb->member)
538#define get_newsb_le16(member) le16_to_cpu(new_sb->member)
540#define set_sb(member, val) \
542 typeof(sb->member) t = (val); \
543 switch (sizeof(t)) { \
544 case 8: set_sb_le64(member, t); break; \
545 case 4: set_sb_le32(member, t); break; \
546 case 2: set_sb_le16(member, t); break; \
550#define get_sb(member) \
552 typeof(sb->member) t; \
553 switch (sizeof(t)) { \
554 case 8: t = get_sb_le64(member); break; \
555 case 4: t = get_sb_le32(member); break; \
556 case 2: t = get_sb_le16(member); break; \
560#define get_newsb(member) \
562 typeof(new_sb->member) t; \
563 switch (sizeof(t)) { \
564 case 8: t = get_newsb_le64(member); break; \
565 case 4: t = get_newsb_le32(member); break; \
566 case 2: t = get_newsb_le16(member); break; \
571#define set_cp_le64(member, val) (cp->member = cpu_to_le64(val))
572#define set_cp_le32(member, val) (cp->member = cpu_to_le32(val))
573#define set_cp_le16(member, val) (cp->member = cpu_to_le16(val))
574#define get_cp_le64(member) le64_to_cpu(cp->member)
575#define get_cp_le32(member) le32_to_cpu(cp->member)
576#define get_cp_le16(member) le16_to_cpu(cp->member)
578#define set_cp(member, val) \
580 typeof(cp->member) t = (val); \
581 switch (sizeof(t)) { \
582 case 8: set_cp_le64(member, t); break; \
583 case 4: set_cp_le32(member, t); break; \
584 case 2: set_cp_le16(member, t); break; \
588#define get_cp(member) \
590 typeof(cp->member) t; \
591 switch (sizeof(t)) { \
592 case 8: t = get_cp_le64(member); break; \
593 case 4: t = get_cp_le32(member); break; \
594 case 2: t = get_cp_le16(member); break; \
602#define __round_mask(x, y) ((__typeof__(x))((y)-1))
603#define round_down(x, y) ((x) & ~__round_mask(x, y))
605#define min(x, y) ({ \
606 typeof(x) _min1 = (x); \
607 typeof(y) _min2 = (y); \
608 (void) (&_min1 == &_min2); \
609 _min1 < _min2 ? _min1 : _min2; })
611#define max(x, y) ({ \
612 typeof(x) _max1 = (x); \
613 typeof(y) _max2 = (y); \
614 (void) (&_max1 == &_max2); \
615 _max1 > _max2 ? _max1 : _max2; })
617#define round_up(x, y) (((x) + (y) - 1) / (y))
621#define NR_CURSEG_DATA_TYPE (3)
622#define NR_CURSEG_NODE_TYPE (3)
623#define NR_CURSEG_TYPE (NR_CURSEG_DATA_TYPE + NR_CURSEG_NODE_TYPE)
641#define F2FS_MIN_SEGMENTS 9
646#define GET_SUM_TYPE(sum) (F2FS_SUMMARY_BLOCK_FOOTER(sum)->entry_type)
647#define SET_SUM_TYPE(sum, type) (F2FS_SUMMARY_BLOCK_FOOTER(sum)->entry_type = type)
652#define F2FS_SUPER_OFFSET 1024
653#define F2FS_MIN_LOG_SECTOR_SIZE 9
654#define F2FS_MAX_LOG_SECTOR_SIZE F2FS_BLKSIZE_BITS
655#define F2FS_MIN_BLKSIZE 4096
656#define F2FS_MAX_BLKSIZE 16384
657#define F2FS_BLKSIZE c.blksize
658#define F2FS_MAX_EXTENSION 64
659#define F2FS_EXTENSION_LEN 8
660#define F2FS_BLK_ALIGN(x) (((x) + F2FS_BLKSIZE - 1) / F2FS_BLKSIZE)
662#define NULL_ADDR 0x0U
664#define COMPRESS_ADDR -2U
666#define F2FS_ROOT_INO(sbi) (sbi->root_ino_num)
667#define F2FS_NODE_INO(sbi) (sbi->node_ino_num)
668#define F2FS_META_INO(sbi) (sbi->meta_ino_num)
670#define F2FS_MAX_QUOTAS 3
671#define QUOTA_DATA (((1024 * 6 - 1) / F2FS_BLKSIZE) + 1)
672#define QUOTA_INO(sb,t) (le32_to_cpu((sb)->qf_ino[t]))
677#define F2FS_COMPR_FL 0x00000004
678#define F2FS_NODUMP_FL 0x00000040
679#define F2FS_IMMUTABLE_FL 0x00000010
680#define F2FS_NOATIME_FL 0x00000080
681#define F2FS_CASEFOLD_FL 0x40000000
682#define F2FS_DEVICE_ALIAS_FL 0x80000000
683#define IS_DEVICE_ALIASING(fi) ((fi)->i_flags & cpu_to_le32(F2FS_DEVICE_ALIAS_FL))
685#define F2FS_ENC_UTF8_12_1 1
686#define F2FS_ENC_STRICT_MODE_FL (1 << 0)
687#define F2FS_ENC_NO_COMPAT_FALLBACK_FL (1 << 1)
690#define GFP_F2FS_ZERO (GFP_NOFS | __GFP_ZERO)
698#define MAX_ACTIVE_LOGS 16
699#define MAX_ACTIVE_NODE_LOGS 8
700#define MAX_ACTIVE_DATA_LOGS 8
702#define F2FS_FEATURE_ENCRYPT 0x0001
703#define F2FS_FEATURE_BLKZONED 0x0002
704#define F2FS_FEATURE_ATOMIC_WRITE 0x0004
705#define F2FS_FEATURE_EXTRA_ATTR 0x0008
706#define F2FS_FEATURE_PRJQUOTA 0x0010
707#define F2FS_FEATURE_INODE_CHKSUM 0x0020
708#define F2FS_FEATURE_FLEXIBLE_INLINE_XATTR 0x0040
709#define F2FS_FEATURE_QUOTA_INO 0x0080
710#define F2FS_FEATURE_INODE_CRTIME 0x0100
711#define F2FS_FEATURE_LOST_FOUND 0x0200
712#define F2FS_FEATURE_VERITY 0x0400
713#define F2FS_FEATURE_SB_CHKSUM 0x0800
714#define F2FS_FEATURE_CASEFOLD 0x1000
715#define F2FS_FEATURE_COMPRESSION 0x2000
716#define F2FS_FEATURE_RO 0x4000
717#define F2FS_FEATURE_DEVICE_ALIAS 0x8000
719#define MAX_NR_FEATURE 32
721#define MAX_VOLUME_NAME 512
731static_assert(
sizeof(
struct f2fs_device) == 68,
"");
747#define MAX_STOP_REASON 32
771#define MAX_F2FS_ERRORS 16
828#define CP_RESIZEFS_FLAG 0x00004000
829#define CP_DISABLED_FLAG 0x00001000
830#define CP_QUOTA_NEED_FSCK_FLAG 0x00000800
831#define CP_LARGE_NAT_BITMAP_FLAG 0x00000400
832#define CP_NOCRC_RECOVERY_FLAG 0x00000200
833#define CP_TRIMMED_FLAG 0x00000100
834#define CP_NAT_BITS_FLAG 0x00000080
835#define CP_CRC_RECOVERY_FLAG 0x00000040
836#define CP_FASTBOOT_FLAG 0x00000020
837#define CP_FSCK_FLAG 0x00000010
838#define CP_ERROR_FLAG 0x00000008
839#define CP_COMPACT_SUM_FLAG 0x00000004
840#define CP_ORPHAN_PRESENT_FLAG 0x00000002
841#define CP_UMOUNT_FLAG 0x00000001
843#define F2FS_CP_PACKS 2
878#define CP_BITMAP_OFFSET \
879 (offsetof(struct f2fs_checkpoint, sit_nat_version_bitmap))
880#define CP_MIN_CHKSUM_OFFSET CP_BITMAP_OFFSET
882#define MIN_NAT_BITMAP_SIZE 64
883#define MAX_SIT_BITMAP_SIZE_IN_CKPT \
884 (CP_CHKSUM_OFFSET - CP_BITMAP_OFFSET - MIN_NAT_BITMAP_SIZE)
885#define MAX_BITMAP_SIZE_IN_CKPT \
886 (CP_CHKSUM_OFFSET - CP_BITMAP_OFFSET)
891#define F2FS_ORPHANS_PER_BLOCK ((F2FS_BLKSIZE - 4 * sizeof(__le32)) / sizeof(__le32))
903#define F2FS_ORPHAN_BLOCK_FOOTER(blk) ((struct orphan_block_footer *)&(blk)->ino[F2FS_ORPHANS_PER_BLOCK])
922static_assert(
sizeof(
struct f2fs_extent) == 12,
"");
924#define F2FS_NAME_LEN 255
927#define F2FS_PRINT_NAMELEN (4 * ((F2FS_NAME_LEN + 2) / 3) + 1)
930#define DEFAULT_INLINE_XATTR_ADDRS 50
940static_assert(
sizeof(
struct node_footer) == 24,
"");
942#define OFFSET_OF_END_OF_I_EXT 360
943#define SIZE_OF_I_NID 20
945#define DEF_ADDRS_PER_INODE ((F2FS_BLKSIZE - OFFSET_OF_END_OF_I_EXT \
947 - sizeof(struct node_footer)) / sizeof(__le32))
948#define CUR_ADDRS_PER_INODE(inode) (DEF_ADDRS_PER_INODE - \
949 __get_extra_isize(inode))
950#define ADDRS_PER_INODE(i) addrs_per_page(i, true)
952#define DEF_ADDRS_PER_BLOCK ((F2FS_BLKSIZE - sizeof(struct node_footer)) / sizeof(__le32))
953#define ADDRS_PER_BLOCK(i) addrs_per_page(i, false)
955#define NIDS_PER_BLOCK ((F2FS_BLKSIZE - sizeof(struct node_footer)) / sizeof(__le32))
957#define NODE_DIR1_BLOCK (DEF_ADDRS_PER_INODE + 1)
958#define NODE_DIR2_BLOCK (DEF_ADDRS_PER_INODE + 2)
959#define NODE_IND1_BLOCK (DEF_ADDRS_PER_INODE + 3)
960#define NODE_IND2_BLOCK (DEF_ADDRS_PER_INODE + 4)
961#define NODE_DIND_BLOCK (DEF_ADDRS_PER_INODE + 5)
963#define F2FS_INLINE_XATTR 0x01
964#define F2FS_INLINE_DATA 0x02
965#define F2FS_INLINE_DENTRY 0x04
966#define F2FS_DATA_EXIST 0x08
967#define F2FS_INLINE_DOTS 0x10
968#define F2FS_EXTRA_ATTR 0x20
969#define F2FS_PIN_FILE 0x40
970#define F2FS_COMPRESS_RELEASED 0x80
972#define F2FS_EXTRA_ISIZE_OFFSET \
973 offsetof(struct f2fs_inode, i_extra_isize)
974#define F2FS_TOTAL_EXTRA_ATTR_SIZE \
975 (offsetof(struct f2fs_inode, i_extra_end) - F2FS_EXTRA_ISIZE_OFFSET)
977#define F2FS_DEF_PROJID 0
979#define MAX_INLINE_DATA(node) (sizeof(__le32) * \
980 (DEF_ADDRS_PER_INODE - \
981 get_inline_xattr_addrs(&node->i) - \
982 get_extra_isize(node) - \
983 DEF_INLINE_RESERVED_SIZE))
984#define DEF_MAX_INLINE_DATA (sizeof(__le32) * \
985 (DEF_ADDRS_PER_INODE - \
986 DEFAULT_INLINE_XATTR_ADDRS - \
987 F2FS_TOTAL_EXTRA_ATTR_SIZE - \
988 DEF_INLINE_RESERVED_SIZE))
989#define INLINE_DATA_OFFSET (F2FS_BLKSIZE - \
990 sizeof(struct node_footer) - \
991 sizeof(__le32) * (DEF_ADDRS_PER_INODE + \
992 5 - DEF_INLINE_RESERVED_SIZE))
994#define DEF_DIR_LEVEL 0
999#define FADVISE_COLD_BIT 0x01
1000#define FADVISE_LOST_PINO_BIT 0x02
1001#define FADVISE_ENCRYPT_BIT 0x04
1002#define FADVISE_ENC_NAME_BIT 0x08
1003#define FADVISE_KEEP_SIZE_BIT 0x10
1004#define FADVISE_HOT_BIT 0x20
1005#define FADVISE_VERITY_BIT 0x40
1007#define file_is_encrypt(fi) ((fi)->i_advise & FADVISE_ENCRYPT_BIT)
1008#define file_enc_name(fi) ((fi)->i_advise & FADVISE_ENC_NAME_BIT)
1009#define IS_CASEFOLDED(dir) ((dir)->i_flags & cpu_to_le32(F2FS_CASEFOLD_FL))
1024#define CHEADER_PGOFS_NONE ((u32)-(1 << MAX_COMPRESS_LOG_SIZE))
1091#define F2FS_INODE_NIDS(inode) ((struct f2fs_inode_nids *)(&(inode)->i_addr[DEF_ADDRS_PER_INODE]))
1092#define F2FS_INODE_I_NID(inode, i) (F2FS_INODE_NIDS((inode))->i_nid[(i)])
1112#define XATTR_NODE_OFFSET ((((unsigned int)-1) << OFFSET_BIT_SHIFT) \
1113 >> OFFSET_BIT_SHIFT)
1130#define F2FS_NODE_FOOTER(blk) ((struct node_footer *)\
1131 &(((char *)(&(blk)->i))[F2FS_BLKSIZE - sizeof(struct node_footer)]))
1136#define NAT_ENTRY_PER_BLOCK (F2FS_BLKSIZE / sizeof(struct f2fs_nat_entry))
1137#define NAT_BLOCK_OFFSET(start_nid) (start_nid / NAT_ENTRY_PER_BLOCK)
1139#define DEFAULT_NAT_ENTRY_RATIO 20
1160#define SIT_VBLOCK_MAP_SIZE 64
1161#define SIT_ENTRY_PER_BLOCK (F2FS_BLKSIZE / sizeof(struct f2fs_sit_entry))
1167#define F2FS_MIN_SEGMENT 9
1168#define F2FS_MAX_SEGMENT ((16 * 1024 * 1024) / 2)
1169#define MAX_SIT_BITMAP_SIZE (SEG_ALIGN(SIZE_ALIGN(F2FS_MAX_SEGMENT, \
1170 SIT_ENTRY_PER_BLOCK)) * \
1172#define MAX_CP_PAYLOAD (SEG_ALIGN(SIZE_ALIGN(UINT32_MAX, NAT_ENTRY_PER_BLOCK)) * \
1173 DEFAULT_NAT_ENTRY_RATIO / 100 * \
1174 c.blks_per_seg / 8 + \
1175 MAX_SIT_BITMAP_SIZE - MAX_BITMAP_SIZE_IN_CKPT)
1182#define SIT_VBLOCKS_SHIFT 10
1183#define SIT_VBLOCKS_MASK ((1 << SIT_VBLOCKS_SHIFT) - 1)
1184#define GET_SIT_VBLOCKS(raw_sit) \
1185 (le16_to_cpu((raw_sit)->vblocks) & SIT_VBLOCKS_MASK)
1186#define GET_SIT_TYPE(raw_sit) \
1187 ((le16_to_cpu((raw_sit)->vblocks) & ~SIT_VBLOCKS_MASK) \
1188 >> SIT_VBLOCKS_SHIFT)
1221#define ENTRIES_IN_SUM (F2FS_BLKSIZE / 8)
1222#define SUMMARY_SIZE (7)
1223#define SUM_FOOTER_SIZE (5)
1224#define SUM_ENTRIES_SIZE (SUMMARY_SIZE * ENTRIES_IN_SUM)
1241#define SUM_TYPE_NODE (1)
1242#define SUM_TYPE_DATA (0)
1251#define SUM_JOURNAL_SIZE (F2FS_BLKSIZE - SUM_FOOTER_SIZE -\
1253#define NAT_JOURNAL_ENTRIES ((SUM_JOURNAL_SIZE - 2) /\
1254 sizeof(struct nat_journal_entry))
1255#define NAT_JOURNAL_RESERVED ((SUM_JOURNAL_SIZE - 2) %\
1256 sizeof(struct nat_journal_entry))
1257#define SIT_JOURNAL_ENTRIES ((SUM_JOURNAL_SIZE - 2) /\
1258 sizeof(struct sit_journal_entry))
1259#define SIT_JOURNAL_RESERVED ((SUM_JOURNAL_SIZE - 2) %\
1260 sizeof(struct sit_journal_entry))
1266#define EXTRA_INFO_RESERVED (SUM_JOURNAL_SIZE - 2 - 8)
1348#define F2FS_SUMMARY_BLOCK_JOURNAL(blk) ((struct f2fs_journal *)(&(blk)->entries[ENTRIES_IN_SUM]))
1349#define F2FS_SUMMARY_BLOCK_FOOTER(blk) ((struct summary_footer *)&((char *)\
1350 (&(blk)->entries[0]))[F2FS_BLKSIZE - SUM_FOOTER_SIZE])
1355#define F2FS_DOT_HASH 0
1356#define F2FS_DDOT_HASH F2FS_DOT_HASH
1357#define F2FS_MAX_HASH (~((0x3ULL) << 62))
1358#define F2FS_HASH_COL_BIT ((0x1ULL) << 63)
1363#define F2FS_SLOT_LEN 8
1364#define F2FS_SLOT_LEN_BITS 3
1366#define GET_DENTRY_SLOTS(x) ((x + F2FS_SLOT_LEN - 1) >> F2FS_SLOT_LEN_BITS)
1369#define NR_DENTRY_IN_BLOCK ((BITS_PER_BYTE * F2FS_BLKSIZE) / \
1370 ((SIZE_OF_DIR_ENTRY + F2FS_SLOT_LEN) * BITS_PER_BYTE + 1))
1372#define MAX_DIR_HASH_DEPTH 63
1375#define MAX_DIR_BUCKETS (1 << ((MAX_DIR_HASH_DEPTH / 2) - 1))
1377#define SIZE_OF_DIR_ENTRY 11
1378#define SIZE_OF_DENTRY_BITMAP ((NR_DENTRY_IN_BLOCK + BITS_PER_BYTE - 1) / \
1380#define SIZE_OF_RESERVED (F2FS_BLKSIZE - ((SIZE_OF_DIR_ENTRY + \
1382 NR_DENTRY_IN_BLOCK + SIZE_OF_DENTRY_BITMAP))
1383#define MIN_INLINE_DENTRY_SIZE 40
1410#define F2FS_DENTRY_BLOCK_DENTRIES(blk) ((struct f2fs_dir_entry *)\
1411 &((blk)->dentry_bitmap[SIZE_OF_DENTRY_BITMAP + SIZE_OF_RESERVED]))
1412#define F2FS_DENTRY_BLOCK_DENTRY(blk, i) (F2FS_DENTRY_BLOCK_DENTRIES((blk))[(i)])
1414#define F2FS_DENTRY_BLOCK_FILENAMES(blk) ((__u8(*)[F2FS_SLOT_LEN])&F2FS_DENTRY_BLOCK_DENTRY(blk,\
1415 NR_DENTRY_IN_BLOCK))
1416#define F2FS_DENTRY_BLOCK_FILENAME(blk, i) (&((__u8 *)&F2FS_DENTRY_BLOCK_DENTRY(blk,\
1417 NR_DENTRY_IN_BLOCK))[(i) * F2FS_SLOT_LEN])
1420#define DEF_INLINE_RESERVED_SIZE 1
1423#define NR_INLINE_DENTRY(node) (MAX_INLINE_DATA(node) * BITS_PER_BYTE / \
1424 ((SIZE_OF_DIR_ENTRY + F2FS_SLOT_LEN) * \
1426#define INLINE_DENTRY_BITMAP_SIZE(node) ((NR_INLINE_DENTRY(node) + \
1427 BITS_PER_BYTE - 1) / BITS_PER_BYTE)
1428#define INLINE_RESERVED_SIZE(node) (MAX_INLINE_DATA(node) - \
1429 ((SIZE_OF_DIR_ENTRY + F2FS_SLOT_LEN) * \
1430 NR_INLINE_DENTRY(node) + \
1431 INLINE_DENTRY_BITMAP_SIZE(node)))
1456#define LINUX_S_IFMT 00170000
1457#define LINUX_S_IFREG 0100000
1458#define LINUX_S_IFDIR 0040000
1459#define LINUX_S_ISREG(m) (((m) & LINUX_S_IFMT) == LINUX_S_IFREG)
1460#define LINUX_S_ISDIR(m) (((m) & LINUX_S_IFMT) == LINUX_S_IFDIR)
1469#define SB_FORCE_STOP 0x1
1470#define SB_ABNORMAL_STOP 0x2
1471#define SB_FS_ERRORS 0x4
1472#define SB_INVALID 0x8
1473#define SB_ENCODE_FLAG 0x16
1474#define SB_NEED_FIX (SB_ABNORMAL_STOP | SB_FS_ERRORS | \
1475 SB_INVALID | SB_ENCODE_FLAG)
1477#define MAX_CACHE_SUMS 8
1507#define F2FS_ALL_FAULT_TYPE ((1UL << (FAULT_MAX)) - 1)
1517#define IS_FAULT_SET(fi, type) ((fi)->inject_type & (1UL << (type)))
1618#ifdef HAVE_LIBSELINUX
1619 struct selinux_opt seopt_file[8];
1654extern int utf8_to_utf16(
char *,
const char *,
size_t,
size_t);
1655extern int utf16_to_utf8(
char *,
const char *,
size_t,
size_t);
1693#ifdef POSIX_FADV_WILLNEED
1702#if !defined(__MINGW32__)
1741#define get_extra_isize(node) __get_extra_isize(&node->i)
1743#define F2FS_ZONED_NONE 0
1744#define F2FS_ZONED_HA 1
1745#define F2FS_ZONED_HM 2
1747#ifdef HAVE_LINUX_BLKZONED_H
1750#define BLK_ZONE_REP_CAPACITY (1 << 0)
1763#define blk_zone blk_zone_v2
1765struct blk_zone_report_v2 {
1769 struct blk_zone zones[0];
1771#define blk_zone_report blk_zone_report_v2
1773#define blk_zone_type(z) (z)->type
1774#define blk_zone_conv(z) ((z)->type == BLK_ZONE_TYPE_CONVENTIONAL)
1775#define blk_zone_seq_req(z) ((z)->type == BLK_ZONE_TYPE_SEQWRITE_REQ)
1776#define blk_zone_seq_pref(z) ((z)->type == BLK_ZONE_TYPE_SEQWRITE_PREF)
1777#define blk_zone_seq(z) (blk_zone_seq_req(z) || blk_zone_seq_pref(z))
1779static inline const char *
1780blk_zone_type_str(
struct blk_zone *blkz)
1782 switch (blk_zone_type(blkz)) {
1783 case BLK_ZONE_TYPE_CONVENTIONAL:
1784 return(
"Conventional" );
1785 case BLK_ZONE_TYPE_SEQWRITE_REQ:
1786 return(
"Sequential-write-required" );
1787 case BLK_ZONE_TYPE_SEQWRITE_PREF:
1788 return(
"Sequential-write-preferred" );
1790 return(
"Unknown-type" );
1793#define blk_zone_cond(z) (z)->cond
1795static inline const char *
1796blk_zone_cond_str(
struct blk_zone *blkz)
1798 switch (blk_zone_cond(blkz)) {
1799 case BLK_ZONE_COND_NOT_WP:
1800 return "Not-write-pointer";
1801 case BLK_ZONE_COND_EMPTY:
1803 case BLK_ZONE_COND_IMP_OPEN:
1804 return "Implicit-open";
1805 case BLK_ZONE_COND_EXP_OPEN:
1806 return "Explicit-open";
1807 case BLK_ZONE_COND_CLOSED:
1809 case BLK_ZONE_COND_READONLY:
1811 case BLK_ZONE_COND_FULL:
1813 case BLK_ZONE_COND_OFFLINE:
1816 return "Unknown-cond";
1822#define blk_zone_empty(z) (blk_zone_cond(z) == BLK_ZONE_COND_EMPTY)
1823#define blk_zone_open(z) (blk_zone_cond(z) == BLK_ZONE_COND_IMP_OPEN || \
1824 blk_zone_cond(z) == BLK_ZONE_COND_EXP_OPEN)
1825#define blk_zone_sector(z) (z)->start
1826#define blk_zone_length(z) (z)->len
1827#define blk_zone_wp_sector(z) (z)->wp
1828#define blk_zone_need_reset(z) (int)(z)->reset
1829#define blk_zone_non_seq(z) (int)(z)->non_seq
1830#define blk_zone_capacity(z, f) ((f & BLK_ZONE_REP_CAPACITY) ? \
1831 (z)->capacity : (z)->len)
1848#define SIZE_ALIGN(val, size) (((val) + (size) - 1) / (size))
1849#define SEG_ALIGN(blks) SIZE_ALIGN(blks, c.blks_per_seg)
1850#define ZONE_ALIGN(blks) SIZE_ALIGN(blks, c.blks_per_seg * \
1876 double ovp, candidate, end, diff, space;
1877 double max_ovp = 0, max_space = 0;
1891 for (; candidate <= end; candidate += diff) {
1893 ovp = (usable_main_segs -
reserved) * candidate / 100;
1896 space = usable_main_segs -
max((
double)
reserved, ovp) -
1898 if (max_space < space) {
1900 max_ovp = candidate;
1908 uint64_t cp_ver =
get_cp(checkpoint_ver);
1913 cp_ver |= ((uint64_t)
crc << 32);
1932 if (
sb->qf_ino[i] ==
ino)
1939#if defined(F2FS_TOOLS_VERSION) && defined(F2FS_TOOLS_DATE)
1940 MSG(0,
"%s %s (%s)\n", prog, F2FS_TOOLS_VERSION, F2FS_TOOLS_DATE);
1942 MSG(0,
"%s -- version not supported\n", prog);
1994 raw_node->
i.i_ext.fofs = 0;
1995 raw_node->
i.i_ext.blk_addr = 0;
1996 raw_node->
i.i_ext.len = 0;
2005#define INIT_FEATURE_TABLE \
2006struct feature feature_table[] = { \
2007 { "encrypt", F2FS_FEATURE_ENCRYPT, 1}, \
2008 { "blkzoned", F2FS_FEATURE_BLKZONED, 0}, \
2009 { "extra_attr", F2FS_FEATURE_EXTRA_ATTR, 1}, \
2010 { "project_quota", F2FS_FEATURE_PRJQUOTA, 1}, \
2011 { "inode_checksum", F2FS_FEATURE_INODE_CHKSUM, 1}, \
2012 { "flexible_inline_xattr", F2FS_FEATURE_FLEXIBLE_INLINE_XATTR,1}, \
2013 { "quota", F2FS_FEATURE_QUOTA_INO, 1}, \
2014 { "inode_crtime", F2FS_FEATURE_INODE_CRTIME, 1}, \
2015 { "lost_found", F2FS_FEATURE_LOST_FOUND, 1}, \
2016 { "verity", F2FS_FEATURE_VERITY, 1}, \
2017 { "sb_checksum", F2FS_FEATURE_SB_CHKSUM, 1}, \
2018 { "casefold", F2FS_FEATURE_CASEFOLD, 1}, \
2019 { "compression", F2FS_FEATURE_COMPRESSION, 1}, \
2020 { "ro", F2FS_FEATURE_RO, 1}, \
2027 for (p = table; p->
name; p++) {
2040 for (p = table; p->
name; p++) {
2054 MSG(0,
"Error: Wrong features %s\n", features);
2062 char *buf, *
sub, *next;
2064 buf = strdup(features);
2068 for (
sub = buf;
sub && *
sub;
sub = next ? next + 1 : NULL) {
2070 while (*
sub && *
sub ==
' ')
2074 while (*next && *next !=
' ' && *next !=
',')
2092 uint32_t *root_uid, uint32_t *root_gid)
2099 for (i = 0; i < strlen(ids) - 1; i++)
2100 if (*(ids + i) ==
':')
2105 *root_uid = atoi(uid);
2106 *root_gid = atoi(gid);
2120 const unsigned char *
str,
size_t len,
2121 unsigned char *dest,
size_t dlen);
2125#define F2FS_ENC_UTF8_12_0 1
2180#define time_to_inject(type) __time_to_inject(type, __func__, \
2181 __builtin_return_address(0))
2183 const char *parent_func)
2198 MSG(0,
"inject %s in %s of %p\n",
unsigned long long __u64
Definition: blkid_types.h:16
__u64 __bitwise __le64
Definition: blkid_types.h:40
unsigned int __u32
Definition: blkid_types.h:14
__u32 __bitwise __le32
Definition: blkid_types.h:39
__u16 __bitwise __le16
Definition: blkid_types.h:38
unsigned char __u8
Definition: blkid_types.h:10
unsigned short __u16
Definition: blkid_types.h:12
unsigned int u32
Definition: ext4_utils.h:68
unsigned short int u16
Definition: ext4_utils.h:69
unsigned long long u64
Definition: ext4_utils.h:63
unsigned char u8
Definition: ext4_utils.h:70
const struct f2fs_nls_table * f2fs_load_nls_table(int encoding)
Definition: nls_utf8.c:929
u64 find_next_bit_le(const u8 *, u64, u64)
Definition: libf2fs.c:392
static int parse_root_owner(char *ids, uint32_t *root_uid, uint32_t *root_gid)
Definition: f2fs_fs.h:2091
#define MAX_VOLUME_NAME
Definition: f2fs_fs.h:721
int test_and_clear_bit_le(u32, u8 *)
Definition: libf2fs.c:298
u16 __u16
Definition: f2fs_fs.h:129
int get_bits_in_byte(unsigned char n)
Definition: libf2fs.c:282
__le16 i_extra_isize
Definition: f2fs_fs.h:0
struct f2fs_extra_info info
Definition: f2fs_fs.h:8
#define NAT_JOURNAL_ENTRIES
Definition: f2fs_fs.h:1253
#define MAX_ACTIVE_NODE_LOGS
Definition: f2fs_fs.h:699
#define VERSION_LEN
Definition: f2fs_fs.h:425
int dev_fill(void *, __u64, size_t, enum rw_hint)
Definition: libf2fs_io.c:709
const char * f2fs_fault_name[FAULT_MAX]
Definition: fsck.c:19
#define NR_CURSEG_TYPE
Definition: f2fs_fs.h:623
@ LINEAR_LOOKUP_DEFAULT
Definition: f2fs_fs.h:1486
@ LINEAR_LOOKUP_DISABLE
Definition: f2fs_fs.h:1488
@ LINEAR_LOOKUP_ENABLE
Definition: f2fs_fs.h:1487
#define F2FS_MAX_QUOTAS
Definition: f2fs_fs.h:670
stop_cp_reason
Definition: f2fs_fs.h:734
@ STOP_CP_REASON_FAULT_INJECT
Definition: f2fs_fs.h:736
@ STOP_CP_REASON_CORRUPTED_SUMMARY
Definition: f2fs_fs.h:739
@ STOP_CP_REASON_SHUTDOWN
Definition: f2fs_fs.h:735
@ STOP_CP_REASON_UPDATE_INODE
Definition: f2fs_fs.h:740
@ STOP_CP_REASON_NO_SEGMENT
Definition: f2fs_fs.h:742
@ STOP_CP_REASON_CORRUPTED_FREE_BITMAP
Definition: f2fs_fs.h:743
@ STOP_CP_REASON_WRITE_FAIL
Definition: f2fs_fs.h:738
@ STOP_CP_REASON_FLUSH_FAIL
Definition: f2fs_fs.h:741
@ STOP_CP_REASON_META_PAGE
Definition: f2fs_fs.h:737
@ STOP_CP_REASON_MAX
Definition: f2fs_fs.h:744
__le32 section_count
Definition: f2fs_fs.h:12
__le32 crc
Definition: f2fs_fs.h:46
#define SIZE_OF_RESERVED
Definition: f2fs_fs.h:1380
#define F2FS_NODE_FOOTER(blk)
Definition: f2fs_fs.h:1130
u8 __u8
Definition: f2fs_fs.h:128
static u32 feature_map(struct feature *table, char *feature)
Definition: f2fs_fs.h:2024
#define ENTRIES_IN_SUM
Definition: f2fs_fs.h:1221
#define cpu_to_le32(x)
Definition: f2fs_fs.h:227
@ FAULT_COMPR
Definition: f2fs_fs.h:1499
@ FAULT_QUOTA
Definition: f2fs_fs.h:1503
@ FAULT_DENTRY
Definition: f2fs_fs.h:1501
@ FAULT_SUM_TYPE
Definition: f2fs_fs.h:1494
@ FAULT_XATTR_ENT
Definition: f2fs_fs.h:1498
@ FAULT_NAT
Definition: f2fs_fs.h:1496
@ FAULT_SEG_TYPE
Definition: f2fs_fs.h:1493
@ FAULT_DATA
Definition: f2fs_fs.h:1502
@ FAULT_NODE
Definition: f2fs_fs.h:1497
@ FAULT_MAX
Definition: f2fs_fs.h:1504
@ FAULT_INODE
Definition: f2fs_fs.h:1500
@ FAULT_SUM_ENT
Definition: f2fs_fs.h:1495
int dev_read(void *, __u64, size_t)
Definition: libf2fs_io.c:532
int f2fs_reset_zone(int, void *)
static uint32_t overprovision_segment_buffer(struct f2fs_super_block *sb)
Definition: f2fs_fs.h:1868
int get_device_info(int)
Definition: libf2fs.c:959
void dcache_init(void)
Definition: libf2fs_io.c:203
#define F2FS_ORPHANS_PER_BLOCK
Definition: f2fs_fs.h:891
@ NAT_JOURNAL
Definition: f2fs_fs.h:1273
@ SIT_JOURNAL
Definition: f2fs_fs.h:1274
#define SIT_ENTRY_PER_BLOCK
Definition: f2fs_fs.h:1161
static int set_feature_bits(struct feature *table, char *features)
Definition: f2fs_fs.h:2048
int dev_fill_block(void *, __u64, enum rw_hint)
Definition: libf2fs_io.c:722
enum rw_hint f2fs_io_type_to_rw_hint(int)
Definition: libf2fs_io.c:607
@ CURSEG_RO_HOT_DATA
Definition: f2fs_fs.h:636
@ NR_RO_CURSEG_TYPE
Definition: f2fs_fs.h:638
@ CURSEG_RO_HOT_NODE
Definition: f2fs_fs.h:637
uint32_t f2fs_get_usable_segments(struct f2fs_super_block *sb)
Definition: libf2fs_zoned.c:632
void f2fs_init_configuration(void)
Definition: libf2fs.c:682
u64 __le64
Definition: f2fs_fs.h:134
void get_kernel_version(__u8 *)
Definition: libf2fs.c:893
default_set
Definition: f2fs_fs.h:446
@ CONF_ANDROID
Definition: f2fs_fs.h:448
@ CONF_NONE
Definition: f2fs_fs.h:447
#define NR_DENTRY_IN_BLOCK
Definition: f2fs_fs.h:1369
#define MAX_CACHE_SUMS
Definition: f2fs_fs.h:1477
#define get_cp(member)
Definition: f2fs_fs.h:588
void get_kernel_uname_version(__u8 *)
Definition: libf2fs.c:903
int dev_write(void *, __u64, size_t, enum rw_hint)
Definition: libf2fs_io.c:661
__le32 i_extra_end[0]
Definition: f2fs_fs.h:13
#define DEFAULT_INLINE_XATTR_ADDRS
Definition: f2fs_fs.h:930
int f2fs_get_f2fs_info(void)
Definition: libf2fs.c:1294
uint64_t u64
Definition: f2fs_fs.h:118
#define MAX_ACTIVE_LOGS
Definition: f2fs_fs.h:698
int dev_readahead(__u64, size_t UNUSED(len))
Definition: libf2fs_io.c:565
#define le32_to_cpu(x)
Definition: f2fs_fs.h:224
int dev_reada_block(__u64)
Definition: libf2fs_io.c:732
__u32 f2fs_checkpoint_chksum(struct f2fs_checkpoint *)
Definition: libf2fs.c:592
#define MAX_DEVICES
Definition: f2fs_fs.h:412
int utf16_to_utf8(char *, const char *, size_t, size_t)
Definition: libf2fs.c:216
static int is_qf_ino(struct f2fs_super_block *sb, nid_t ino)
Definition: f2fs_fs.h:1927
void dcache_release(void)
Definition: libf2fs_io.c:139
static bool __time_to_inject(int type, const char *func, const char *parent_func)
Definition: f2fs_fs.h:2182
__le32 segs_per_sec
Definition: f2fs_fs.h:7
uint32_t f2fs_cal_crc32(uint32_t, void *, int)
Definition: libf2fs.c:543
#define MAX_STOP_REASON
Definition: f2fs_fs.h:747
int test_and_set_bit_le(u32, u8 *)
Definition: libf2fs.c:287
#define F2FS_EXTRA_ATTR
Definition: f2fs_fs.h:968
__u8 reserved[258]
Definition: f2fs_fs.h:45
u64 find_next_zero_bit_le(const u8 *, u64, u64)
Definition: libf2fs.c:398
static uint32_t bswap_32(uint32_t val)
Definition: f2fs_fs.h:190
f2fs_hash_t f2fs_dentry_hash(int, int, const unsigned char *, int)
Definition: libf2fs.c:494
int f2fs_crc_valid(uint32_t blk_crc, void *buf, int len)
Definition: libf2fs.c:555
#define DEF_ADDRS_PER_BLOCK
Definition: f2fs_fs.h:952
int log_base_2(uint32_t)
Definition: libf2fs.c:249
#define IS_FAULT_SET(fi, type)
Definition: f2fs_fs.h:1517
compress_algorithms
Definition: f2fs_fs.h:488
@ COMPR_LZO
Definition: f2fs_fs.h:489
@ MAX_COMPRESS_ALGS
Definition: f2fs_fs.h:491
@ COMPR_LZ4
Definition: f2fs_fs.h:490
#define le16_to_cpu(x)
Definition: f2fs_fs.h:223
__le32 f2fs_hash_t
Definition: f2fs_fs.h:1360
u32 block_t
Definition: f2fs_fs.h:122
#define SIT_JOURNAL_RESERVED
Definition: f2fs_fs.h:1259
static void show_version(const char *prog)
Definition: f2fs_fs.h:1937
struct f2fs_configuration c
Definition: libf2fs_io.c:47
#define F2FS_SLOT_LEN
Definition: f2fs_fs.h:1363
int dev_read_version(void *, __u64, size_t)
Definition: libf2fs_io.c:399
__le32 checksum_offset
Definition: f2fs_fs.h:9
int f2fs_init_sparse_file(void)
Definition: libf2fs_io.c:755
@ DENT_BIT_SHIFT
Definition: f2fs_fs.h:1108
@ COLD_BIT_SHIFT
Definition: f2fs_fs.h:1106
@ OFFSET_BIT_SHIFT
Definition: f2fs_fs.h:1109
@ FSYNC_BIT_SHIFT
Definition: f2fs_fs.h:1107
__u32 f2fs_inode_chksum(struct f2fs_node *)
Definition: libf2fs.c:570
#define EXTRA_INFO_RESERVED
Definition: f2fs_fs.h:1266
#define F2FS_FEATURE_PRJQUOTA
Definition: f2fs_fs.h:706
int f2fs_check_zones(int)
Definition: libf2fs_zoned.c:608
@ CURSEG_WARM_NODE
Definition: f2fs_fs.h:630
@ CURSEG_COLD_DATA
Definition: f2fs_fs.h:628
@ CURSEG_HOT_NODE
Definition: f2fs_fs.h:629
@ CURSEG_HOT_DATA
Definition: f2fs_fs.h:626
@ NO_CHECK_TYPE
Definition: f2fs_fs.h:632
@ CURSEG_WARM_DATA
Definition: f2fs_fs.h:627
@ CURSEG_COLD_NODE
Definition: f2fs_fs.h:631
int f2fs_get_encoding_flags(int encoding)
Definition: libf2fs.c:1446
__le64 mtime
Definition: f2fs_fs.h:2
int dev_write_block(void *, __u64, enum rw_hint)
Definition: libf2fs_io.c:680
#define MSG(n, fmt,...)
Definition: f2fs_fs.h:286
static uint16_t bswap_16(uint16_t val)
Definition: f2fs_fs.h:176
#define SIT_VBLOCK_MAP_SIZE
Definition: f2fs_fs.h:1160
@ SSR
Definition: f2fs_fs.h:1465
@ LFS
Definition: f2fs_fs.h:1464
#define MAX_F2FS_ERRORS
Definition: f2fs_fs.h:771
static int parse_feature(struct feature *table, const char *features)
Definition: f2fs_fs.h:2060
dot_type
Definition: f2fs_fs.h:1450
@ TYPE_DOT
Definition: f2fs_fs.h:1452
@ NON_DOT
Definition: f2fs_fs.h:1451
@ TYPE_DOTDOT
Definition: f2fs_fs.h:1453
static int get_inline_xattr_addrs(struct f2fs_inode *inode)
Definition: f2fs_fs.h:1730
static int __get_extra_isize(struct f2fs_inode *inode)
Definition: f2fs_fs.h:1722
#define UNUSED(x)
Definition: f2fs_fs.h:91
u32 nid_t
Definition: f2fs_fs.h:123
#define SIT_JOURNAL_ENTRIES
Definition: f2fs_fs.h:1257
#define F2FS_NAME_LEN
Definition: f2fs_fs.h:924
unsigned long pgoff_t
Definition: f2fs_fs.h:124
#define F2FS_MAX_BLKSIZE
Definition: f2fs_fs.h:656
#define F2FS_FEATURE_COMPRESSION
Definition: f2fs_fs.h:715
void f2fs_release_sparse_resource(void)
Definition: libf2fs_io.c:800
int dev_read_block(void *, __u64)
Definition: libf2fs_io.c:727
rw_hint
Definition: f2fs_fs.h:68
@ WRITE_LIFE_EXTREME
Definition: f2fs_fs.h:74
@ WRITE_LIFE_NONE
Definition: f2fs_fs.h:70
@ WRITE_LIFE_NOT_SET
Definition: f2fs_fs.h:69
@ WRITE_LIFE_LONG
Definition: f2fs_fs.h:73
@ WRITE_LIFE_SHORT
Definition: f2fs_fs.h:71
@ WRITE_LIFE_MEDIUM
Definition: f2fs_fs.h:72
u64 __be64
Definition: f2fs_fs.h:137
int f2fs_get_zoned_model(int)
Definition: libf2fs_zoned.c:587
uint8_t u8
Definition: f2fs_fs.h:121
int dev_write_symlink(char *, size_t)
Definition: libf2fs_io.c:700
struct sit_journal sit_j
Definition: f2fs_fs.h:7
int f2fs_str2encoding(const char *string)
Definition: libf2fs.c:1424
FILE_TYPE
Definition: f2fs_fs.h:1434
@ F2FS_FT_MAX
Definition: f2fs_fs.h:1443
@ F2FS_FT_CHRDEV
Definition: f2fs_fs.h:1438
@ F2FS_FT_DIR
Definition: f2fs_fs.h:1437
@ F2FS_FT_ORPHAN
Definition: f2fs_fs.h:1445
@ F2FS_FT_XATTR
Definition: f2fs_fs.h:1446
@ F2FS_FT_REG_FILE
Definition: f2fs_fs.h:1436
@ F2FS_FT_LAST_FILE_TYPE
Definition: f2fs_fs.h:1447
@ F2FS_FT_FIFO
Definition: f2fs_fs.h:1440
@ F2FS_FT_UNKNOWN
Definition: f2fs_fs.h:1435
@ F2FS_FT_SYMLINK
Definition: f2fs_fs.h:1442
@ F2FS_FT_SOCK
Definition: f2fs_fs.h:1441
@ F2FS_FT_BLKDEV
Definition: f2fs_fs.h:1439
static char * feature_name(struct feature *table, u32 mask)
Definition: f2fs_fs.h:2037
static void check_block_struct_sizes(void)
Definition: f2fs_fs.h:2132
#define get_sb(member)
Definition: f2fs_fs.h:550
#define F2FS_FEATURE_FLEXIBLE_INLINE_XATTR
Definition: f2fs_fs.h:708
#define MAX_ACTIVE_DATA_LOGS
Definition: f2fs_fs.h:700
u32 __le32
Definition: f2fs_fs.h:133
unsigned short umode_t
Definition: f2fs_fs.h:125
int f2fs_devs_are_umounted(void)
Definition: libf2fs.c:881
#define cpu_to_le64(x)
Definition: f2fs_fs.h:228
#define NIDS_PER_BLOCK
Definition: f2fs_fs.h:955
static bool f2fs_has_extra_isize(struct f2fs_inode *inode)
Definition: f2fs_fs.h:1717
int f2fs_str2encoding_flags(char **param, __u16 *flags)
Definition: libf2fs.c:1457
#define F2FS_BLKSIZE
Definition: f2fs_fs.h:657
#define DEF_ADDRS_PER_INODE
Definition: f2fs_fs.h:945
#define SIZE_OF_DENTRY_BITMAP
Definition: f2fs_fs.h:1378
int dev_write_dump(void *, __u64, size_t)
Definition: libf2fs_io.c:685
__le32 log_blocksize
Definition: f2fs_fs.h:5
int utf8_to_utf16(char *, const char *, size_t, size_t)
Definition: libf2fs.c:121
#define DEF_DIR_LEVEL
Definition: f2fs_fs.h:994
int f2fs_report_zone(int, uint64_t, struct blk_zone *)
int f2fs_report_zones(int, report_zones_cb_t *, void *)
#define F2FS_FEATURE_EXTRA_ATTR
Definition: f2fs_fs.h:705
#define round_up(x, y)
Definition: f2fs_fs.h:617
#define LINUX_S_ISDIR(m)
Definition: f2fs_fs.h:1460
u32 __be32
Definition: f2fs_fs.h:136
f2fs_error
Definition: f2fs_fs.h:750
@ ERROR_CORRUPTED_DIRENT
Definition: f2fs_fs.h:754
@ ERROR_INCONSISTENT_FOOTER
Definition: f2fs_fs.h:757
@ ERROR_INVALID_NODE_REFERENCE
Definition: f2fs_fs.h:766
@ ERROR_INVALID_CURSEG
Definition: f2fs_fs.h:762
@ ERROR_MAX
Definition: f2fs_fs.h:768
@ ERROR_INVALID_BLKADDR
Definition: f2fs_fs.h:753
@ ERROR_CORRUPTED_VERITY_XATTR
Definition: f2fs_fs.h:764
@ ERROR_INCONSISTENT_SUM_TYPE
Definition: f2fs_fs.h:758
@ ERROR_INCONSISTENT_SIT
Definition: f2fs_fs.h:763
@ ERROR_INCONSISTENT_NODE_COUNT
Definition: f2fs_fs.h:760
@ ERROR_CORRUPTED_XATTR
Definition: f2fs_fs.h:765
@ ERROR_CORRUPTED_INODE
Definition: f2fs_fs.h:755
@ ERROR_CORRUPTED_JOURNAL
Definition: f2fs_fs.h:759
@ ERROR_INCONSISTENT_NAT
Definition: f2fs_fs.h:767
@ ERROR_INCONSISTENT_SUMMARY
Definition: f2fs_fs.h:756
@ ERROR_FAIL_DECOMPRESSION
Definition: f2fs_fs.h:752
@ ERROR_CORRUPTED_CLUSTER
Definition: f2fs_fs.h:751
@ ERROR_INCONSISTENT_BLOCK_COUNT
Definition: f2fs_fs.h:761
int f2fs_fsync_device(void)
Definition: libf2fs_io.c:737
int f2fs_reset_zones(int)
Definition: libf2fs_zoned.c:620
u64 f2fs_max_file_offset(struct f2fs_inode *)
Definition: libf2fs.c:530
#define MAX_PATH_LEN
Definition: f2fs_fs.h:411
struct f2fs_checkpoint __attribute__
@ F2FS_FEATURE_NAT_BITS
Definition: f2fs_fs.h:1481
#define max(x, y)
Definition: f2fs_fs.h:611
int f2fs_get_device_info(void)
Definition: libf2fs.c:1284
char * f2fs_encoding2str(const int encoding)
Definition: libf2fs.c:1435
#define COMPRESS_DATA_RESERVED_SIZE
Definition: f2fs_fs.h:146
u32 __u32
Definition: f2fs_fs.h:130
int write_inode(struct f2fs_node *, u64, enum rw_hint)
Definition: libf2fs.c:606
unsigned int calc_extra_isize(void)
Definition: libf2fs.c:1381
int f2fs_finish_zone(int i, void *blkzone)
#define F2FS_MAX_EXTENSION
Definition: f2fs_fs.h:658
uint16_t u16
Definition: f2fs_fs.h:120
#define F2FS_INLINE_XATTR
Definition: f2fs_fs.h:963
u16 __le16
Definition: f2fs_fs.h:132
int f2fs_dev_is_writable(void)
Definition: libf2fs.c:724
static void f2fs_init_inode(struct f2fs_super_block *sb, struct f2fs_node *raw_node, nid_t ino, time_t mtime, mode_t mode)
Definition: f2fs_fs.h:1946
int f2fs_test_bit(unsigned int, const char *)
Definition: libf2fs.c:314
#define F2FS_DEF_PROJID
Definition: f2fs_fs.h:977
int test_bit_le(u32, const u8 *)
Definition: libf2fs.c:309
static int exist_qf_ino(struct f2fs_super_block *sb)
Definition: f2fs_fs.h:1917
#define NAT_JOURNAL_RESERVED
Definition: f2fs_fs.h:1255
int f2fs_set_bit(unsigned int, char *)
Definition: libf2fs.c:324
int f2fs_clear_bit(unsigned int, char *)
Definition: libf2fs.c:336
struct nat_journal nat_j
Definition: f2fs_fs.h:6
int() report_zones_cb_t(int i, void *, void *)
Definition: f2fs_fs.h:1840
filter_policy
Definition: f2fs_fs.h:494
@ COMPR_FILTER_UNASSIGNED
Definition: f2fs_fs.h:495
@ COMPR_FILTER_DENY
Definition: f2fs_fs.h:497
@ COMPR_FILTER_ALLOW
Definition: f2fs_fs.h:496
static __le64 get_cp_crc(struct f2fs_checkpoint *cp)
Definition: f2fs_fs.h:1906
#define F2FS_FEATURE_INODE_CRTIME
Definition: f2fs_fs.h:710
#define cpu_to_le16(x)
Definition: f2fs_fs.h:226
unsigned int addrs_per_page(struct f2fs_inode *, bool)
Definition: libf2fs.c:519
#define F2FS_INLINE_DENTRY
Definition: f2fs_fs.h:965
__le32 ino
Definition: f2fs_fs.h:1
__le32 segment_count_main
Definition: f2fs_fs.h:18
#define NAT_ENTRY_PER_BLOCK
Definition: f2fs_fs.h:1136
int f2fs_dev_is_umounted(char *)
Definition: libf2fs.c:753
static double get_best_overprovision(struct f2fs_super_block *sb)
Definition: f2fs_fs.h:1874
static uint32_t get_reserved(struct f2fs_super_block *sb, double ovp)
Definition: f2fs_fs.h:1853
u64 __u64
Definition: f2fs_fs.h:131
u16 __be16
Definition: f2fs_fs.h:135
int f2fs_finalize_device(void)
Definition: libf2fs_io.c:822
uint32_t u32
Definition: f2fs_fs.h:119
int f2fs_get_zone_blocks(int)
Definition: libf2fs_zoned.c:596
f2fs_config_func
Definition: f2fs_fs.h:435
@ MKFS
Definition: f2fs_fs.h:436
@ LABEL
Definition: f2fs_fs.h:442
@ FSCK
Definition: f2fs_fs.h:437
@ SLOAD
Definition: f2fs_fs.h:441
@ DEFRAG
Definition: f2fs_fs.h:439
@ INJECT
Definition: f2fs_fs.h:443
@ DUMP
Definition: f2fs_fs.h:438
@ RESIZE
Definition: f2fs_fs.h:440
int capacity()
Definition: health.cpp:66
BinOp< T1, T2, Numeric, Sub > sub
Definition: utils.h:265
BinOp< T1, T2, Numeric, Add > add
Definition: utils.h:264
constexpr const char * str
Definition: utils.h:180
__u32 mask
Definition: nl80211.h:0
uint8_t type
Definition: pairing_connection.h:0
Definition: f2fs_fs.h:506
bool required
Definition: f2fs_fs.h:508
compress_ops * ops
Definition: f2fs_fs.h:512
enum filter_policy filter
Definition: f2fs_fs.h:514
filter_ops * filter_ops
Definition: f2fs_fs.h:515
unsigned int min_blocks
Definition: f2fs_fs.h:513
bool enabled
Definition: f2fs_fs.h:507
enum compress_algorithms alg
Definition: f2fs_fs.h:511
bool readonly
Definition: f2fs_fs.h:509
Definition: f2fs_fs.h:155
struct compress_data * cbuf
Definition: f2fs_fs.h:159
size_t rlen
Definition: f2fs_fs.h:160
size_t clen
Definition: f2fs_fs.h:161
unsigned int log_cluster_size
Definition: f2fs_fs.h:157
unsigned int cluster_size
Definition: f2fs_fs.h:156
void * rbuf
Definition: f2fs_fs.h:158
Definition: f2fs_fs.h:147
__le32 chksum
Definition: f2fs_fs.h:149
__le32 reserved[COMPRESS_DATA_RESERVED_SIZE]
Definition: f2fs_fs.h:150
u8 cdata[]
Definition: f2fs_fs.h:151
__le32 clen
Definition: f2fs_fs.h:148
Definition: f2fs_fs.h:481
Definition: f2fs_fs.h:470
bool dbg_en
Definition: f2fs_fs.h:477
long num_cache_entry
Definition: f2fs_fs.h:472
unsigned max_hash_collision
Definition: f2fs_fs.h:475
Definition: f2fs_fs.h:451
size_t zone_blocks
Definition: f2fs_fs.h:465
uint32_t nr_zones
Definition: f2fs_fs.h:463
int32_t fd
Definition: f2fs_fs.h:453
uint32_t total_segments
Definition: f2fs_fs.h:458
uint32_t nr_rnd_zones
Definition: f2fs_fs.h:464
uint64_t end_blkaddr
Definition: f2fs_fs.h:457
int zoned_model
Definition: f2fs_fs.h:462
char * alias_filename
Definition: f2fs_fs.h:459
uint64_t zone_size
Definition: f2fs_fs.h:466
size_t * zone_cap_blocks
Definition: f2fs_fs.h:467
char * path
Definition: f2fs_fs.h:452
uint64_t start_blkaddr
Definition: f2fs_fs.h:456
uint32_t sector_size
Definition: f2fs_fs.h:454
uint64_t total_sectors
Definition: f2fs_fs.h:455
Definition: f2fs_fs.h:1097
__le32 addr[0]
Definition: f2fs_fs.h:1098
Definition: f2fs_fs.h:845
__le32 cp_pack_start_sum
Definition: f2fs_fs.h:861
__le32 next_free_nid
Definition: f2fs_fs.h:864
__le64 user_block_count
Definition: f2fs_fs.h:847
__le32 rsvd_segment_count
Definition: f2fs_fs.h:849
__le32 valid_node_count
Definition: f2fs_fs.h:862
unsigned char sit_nat_version_bitmap[]
Definition: f2fs_fs.h:873
__le64 elapsed_time
Definition: f2fs_fs.h:868
__le64 checkpoint_ver
Definition: f2fs_fs.h:846
__le32 cur_node_segno[MAX_ACTIVE_NODE_LOGS]
Definition: f2fs_fs.h:854
__le32 free_segment_count
Definition: f2fs_fs.h:851
__le32 sit_ver_bitmap_bytesize
Definition: f2fs_fs.h:865
__le32 cp_pack_total_block_count
Definition: f2fs_fs.h:860
unsigned char alloc_type[MAX_ACTIVE_LOGS]
Definition: f2fs_fs.h:870
__le64 valid_block_count
Definition: f2fs_fs.h:848
__le16 cur_node_blkoff[MAX_ACTIVE_NODE_LOGS]
Definition: f2fs_fs.h:855
__le32 cur_data_segno[MAX_ACTIVE_DATA_LOGS]
Definition: f2fs_fs.h:857
__le32 overprov_segment_count
Definition: f2fs_fs.h:850
__le32 nat_ver_bitmap_bytesize
Definition: f2fs_fs.h:866
__le32 checksum_offset
Definition: f2fs_fs.h:867
__le32 ckpt_flags
Definition: f2fs_fs.h:859
__le16 cur_data_blkoff[MAX_ACTIVE_DATA_LOGS]
Definition: f2fs_fs.h:858
__le32 valid_inode_count
Definition: f2fs_fs.h:863
Definition: f2fs_fs.h:1014
u32 cheader_pgofs
Definition: f2fs_fs.h:1022
u32 cnt
Definition: f2fs_fs.h:1016
Definition: f2fs_fs.h:1519
uint32_t new_reserved_segments
Definition: f2fs_fs.h:1522
uint32_t next_free_nid
Definition: f2fs_fs.h:1599
int layout
Definition: f2fs_fs.h:1576
uint32_t chksum_seed
Definition: f2fs_fs.h:1631
int dry_run
Definition: f2fs_fs.h:1564
uint32_t cur_seg[NR_CURSEG_TYPE]
Definition: f2fs_fs.h:1529
int func
Definition: f2fs_fs.h:1562
int dump_sym_target_len
Definition: f2fs_fs.h:1553
uint64_t wanted_total_sectors
Definition: f2fs_fs.h:1538
bool need_fsync
Definition: f2fs_fs.h:1591
time_t fixed_time
Definition: f2fs_fs.h:1589
int fix_on
Definition: f2fs_fs.h:1566
int nolinear_lookup
Definition: f2fs_fs.h:1585
uint16_t s_encoding_flags
Definition: f2fs_fs.h:1549
uint32_t segs_per_sec
Definition: f2fs_fs.h:1530
char nat_bytes[F2FS_MAX_BLKSIZE]
Definition: f2fs_fs.h:1647
int show_file_map
Definition: f2fs_fs.h:1577
int whint
Definition: f2fs_fs.h:1593
int alloc_failed
Definition: f2fs_fs.h:1574
uint32_t reserved_segments
Definition: f2fs_fs.h:1521
const char * rootdev_name
Definition: f2fs_fs.h:1557
dev_cache_config_t cache_config
Definition: f2fs_fs.h:1634
uint32_t total_segments
Definition: f2fs_fs.h:1534
char * extension_list[2]
Definition: f2fs_fs.h:1556
compress_config_t compress
Definition: f2fs_fs.h:1637
unsigned int invalid_sb
Definition: f2fs_fs.h:1571
char * vol_uuid
Definition: f2fs_fs.h:1547
struct f2fs_journal nat_jnl
Definition: f2fs_fs.h:1646
double new_overprovision
Definition: f2fs_fs.h:1528
__u8 version[VERSION_LEN+1]
Definition: f2fs_fs.h:1545
char * from_dir
Definition: f2fs_fs.h:1614
char * vol_label
Definition: f2fs_fs.h:1546
char sit_bytes[F2FS_MAX_BLKSIZE]
Definition: f2fs_fs.h:1643
uint32_t blksize
Definition: f2fs_fs.h:1604
int ro
Definition: f2fs_fs.h:1581
uint64_t defrag_target
Definition: f2fs_fs.h:1611
int bug_nat_bits
Definition: f2fs_fs.h:1572
int32_t dump_fd
Definition: f2fs_fs.h:1551
struct device_info devices[MAX_DEVICES]
Definition: f2fs_fs.h:1554
int fix_chksum
Definition: f2fs_fs.h:1584
unsigned int feature
Definition: f2fs_fs.h:1586
uint32_t root_uid
Definition: f2fs_fs.h:1602
uint32_t first_alias_ino
Definition: f2fs_fs.h:1601
int sparse_mode
Definition: f2fs_fs.h:1523
unsigned int disabled_feature
Definition: f2fs_fs.h:1587
bool need_whint
Definition: f2fs_fs.h:1592
struct f2fs_summary sum[NR_CURSEG_TYPE][MAX_CACHE_SUMS]
Definition: f2fs_fs.h:1640
uint32_t sectors_per_blk
Definition: f2fs_fs.h:1541
uint32_t start_sector
Definition: f2fs_fs.h:1533
int show_dentry
Definition: f2fs_fs.h:1559
int aliased_devices
Definition: f2fs_fs.h:1594
int32_t kd
Definition: f2fs_fs.h:1550
uint32_t secs_per_zone
Definition: f2fs_fs.h:1531
uint16_t s_encoding
Definition: f2fs_fs.h:1548
uint32_t lpf_ino
Definition: f2fs_fs.h:1600
int force
Definition: f2fs_fs.h:1567
int trimmed
Definition: f2fs_fs.h:1561
uint64_t defrag_len
Definition: f2fs_fs.h:1610
int zoned_mode
Definition: f2fs_fs.h:1524
bool quota_fixed
Definition: f2fs_fs.h:1573
uint32_t sector_size
Definition: f2fs_fs.h:1535
__u8 sb_version[VERSION_LEN+1]
Definition: f2fs_fs.h:1544
double overprovision
Definition: f2fs_fs.h:1527
int bug_on
Definition: f2fs_fs.h:1570
uint32_t segs_per_zone
Definition: f2fs_fs.h:1532
char * dump_symlink
Definition: f2fs_fs.h:1552
int defset
Definition: f2fs_fs.h:1569
struct f2fs_fault_info fault_info
Definition: f2fs_fs.h:1651
char * fs_config_file
Definition: f2fs_fs.h:1617
uint32_t blks_per_seg
Definition: f2fs_fs.h:1542
int preserve_limits
Definition: f2fs_fs.h:1582
int ndevs
Definition: f2fs_fs.h:1555
struct f2fs_journal sit_jnl
Definition: f2fs_fs.h:1642
uint32_t blksize_bits
Definition: f2fs_fs.h:1605
size_t zone_blocks
Definition: f2fs_fs.h:1526
u64 show_file_map_max_offset
Definition: f2fs_fs.h:1578
int large_nat_bitmap
Definition: f2fs_fs.h:1583
int preserve_symlinks
Definition: f2fs_fs.h:1625
__u8 init_version[VERSION_LEN+1]
Definition: f2fs_fs.h:1543
int roll_forward
Definition: f2fs_fs.h:1590
uint64_t total_sectors
Definition: f2fs_fs.h:1537
int preen_mode
Definition: f2fs_fs.h:1580
uint32_t root_gid
Definition: f2fs_fs.h:1603
int fake_seed
Definition: f2fs_fs.h:1598
char * mount_point
Definition: f2fs_fs.h:1615
unsigned int quota_bits
Definition: f2fs_fs.h:1588
char * target_out_dir
Definition: f2fs_fs.h:1616
uint32_t conf_reserved_sections
Definition: f2fs_fs.h:1520
int ignore_error
Definition: f2fs_fs.h:1568
int trim
Definition: f2fs_fs.h:1560
uint64_t target_sectors
Definition: f2fs_fs.h:1540
uint32_t aliased_segments
Definition: f2fs_fs.h:1595
int quota_fix
Definition: f2fs_fs.h:1579
uint64_t device_size
Definition: f2fs_fs.h:1536
int auto_fix
Definition: f2fs_fs.h:1575
uint64_t wanted_sector_size
Definition: f2fs_fs.h:1539
int preserve_perms
Definition: f2fs_fs.h:1624
int zoned_model
Definition: f2fs_fs.h:1525
int safe_resize
Definition: f2fs_fs.h:1628
int defrag_shrink
Definition: f2fs_fs.h:1608
int no_kernel_check
Definition: f2fs_fs.h:1565
uint64_t defrag_start
Definition: f2fs_fs.h:1609
block_t curseg_offset[NR_CURSEG_TYPE]
Definition: f2fs_fs.h:1639
int dbg_lv
Definition: f2fs_fs.h:1558
Definition: f2fs_fs.h:1405
__u8 dentry_bitmap[0]
Definition: f2fs_fs.h:1407
Definition: f2fs_fs.h:726
__le32 total_segments
Definition: f2fs_fs.h:728
__u8 path[MAX_PATH_LEN]
Definition: f2fs_fs.h:727
Definition: f2fs_fs.h:1386
__u8 file_type
Definition: f2fs_fs.h:1390
__le16 name_len
Definition: f2fs_fs.h:1389
__le32 ino
Definition: f2fs_fs.h:1388
__le32 hash_code
Definition: f2fs_fs.h:1387
Definition: f2fs_fs.h:916
__le32 blk_addr
Definition: f2fs_fs.h:918
__le32 len
Definition: f2fs_fs.h:919
__le32 fofs
Definition: f2fs_fs.h:917
Definition: f2fs_fs.h:1509
int inject_rate
Definition: f2fs_fs.h:1511
unsigned int fault_cnt[FAULT_MAX]
Definition: f2fs_fs.h:1513
unsigned int inject_type
Definition: f2fs_fs.h:1512
int inject_ops
Definition: f2fs_fs.h:1510
Definition: f2fs_fs.h:1086
__le32 i_nid[5]
Definition: f2fs_fs.h:1087
Definition: f2fs_fs.h:1034
__u8 i_name[F2FS_NAME_LEN]
Definition: f2fs_fs.h:1061
__le32 i_extra_end[0]
Definition: f2fs_fs.h:1081
__le32 i_atime_nsec
Definition: f2fs_fs.h:1046
__le16 i_gc_failures
Definition: f2fs_fs.h:1052
struct f2fs_extent i_ext __attribute__((packed))
__le64 i_crtime
Definition: f2fs_fs.h:1072
__le32 i_namelen
Definition: f2fs_fs.h:1060
__le32 i_crtime_nsec
Definition: f2fs_fs.h:1073
__le16 i_extra_isize
Definition: f2fs_fs.h:1068
__le64 i_mtime
Definition: f2fs_fs.h:1045
__le64 i_atime
Definition: f2fs_fs.h:1043
__le64 i_compr_blocks
Definition: f2fs_fs.h:1074
__le16 i_compress_flag
Definition: f2fs_fs.h:1077
__le32 i_inode_checksum
Definition: f2fs_fs.h:1071
__u8 i_advise
Definition: f2fs_fs.h:1036
__le32 i_addr[0]
Definition: f2fs_fs.h:1083
__le64 i_blocks
Definition: f2fs_fs.h:1042
__le32 i_flags
Definition: f2fs_fs.h:1058
__le32 i_uid
Definition: f2fs_fs.h:1038
__u8 i_dir_level
Definition: f2fs_fs.h:1062
__le64 i_ctime
Definition: f2fs_fs.h:1044
__le32 i_current_depth
Definition: f2fs_fs.h:1051
__u8 i_log_cluster_size
Definition: f2fs_fs.h:1076
__le32 i_generation
Definition: f2fs_fs.h:1049
__le32 i_links
Definition: f2fs_fs.h:1040
__le16 i_mode
Definition: f2fs_fs.h:1035
__le32 i_ctime_nsec
Definition: f2fs_fs.h:1047
__u8 i_inline
Definition: f2fs_fs.h:1037
__u8 i_compress_algorithm
Definition: f2fs_fs.h:1075
__le32 i_mtime_nsec
Definition: f2fs_fs.h:1048
__le16 i_inline_xattr_size
Definition: f2fs_fs.h:1069
__le32 i_pino
Definition: f2fs_fs.h:1059
__le32 i_gid
Definition: f2fs_fs.h:1039
__le32 i_xattr_nid
Definition: f2fs_fs.h:1057
__le32 i_projid
Definition: f2fs_fs.h:1070
__le64 i_size
Definition: f2fs_fs.h:1041
Definition: f2fs_fs.h:1322
struct sit_journal sit_j
Definition: f2fs_fs.h:1330
__le16 n_nats
Definition: f2fs_fs.h:1324
__le16 n_sits
Definition: f2fs_fs.h:1325
struct nat_journal nat_j
Definition: f2fs_fs.h:1329
struct f2fs_extra_info info
Definition: f2fs_fs.h:1331
Definition: f2fs_fs.h:1149
struct f2fs_nat_entry entries[0]
Definition: f2fs_fs.h:1150
Definition: f2fs_fs.h:1141
__le32 ino
Definition: f2fs_fs.h:1143
__le32 block_addr
Definition: f2fs_fs.h:1144
__u8 version
Definition: f2fs_fs.h:1142
Definition: f2fs_fs.h:2118
int(* casefold)(const struct f2fs_nls_table *charset, const unsigned char *str, size_t len, unsigned char *dest, size_t dlen)
Definition: f2fs_fs.h:2119
Definition: f2fs_fs.h:2113
int version
Definition: f2fs_fs.h:2114
const struct f2fs_nls_ops * ops
Definition: f2fs_fs.h:2115
Definition: f2fs_fs.h:1122
struct f2fs_inode i
Definition: f2fs_fs.h:1125
struct direct_node dn
Definition: f2fs_fs.h:1126
struct indirect_node in
Definition: f2fs_fs.h:1127
Definition: f2fs_fs.h:900
__le32 ino[0]
Definition: f2fs_fs.h:901
Definition: f2fs_fs.h:1202
struct f2fs_sit_entry entries[0]
Definition: f2fs_fs.h:1203
Definition: f2fs_fs.h:1190
__le16 vblocks
Definition: f2fs_fs.h:1191
__u8 valid_map[SIT_VBLOCK_MAP_SIZE]
Definition: f2fs_fs.h:1192
__le64 mtime
Definition: f2fs_fs.h:1193
Definition: f2fs_fs.h:1345
struct f2fs_summary entries[0]
Definition: f2fs_fs.h:1346
Definition: f2fs_fs.h:1227
__le32 nid
Definition: f2fs_fs.h:1228
__u8 version
Definition: f2fs_fs.h:1232
__le16 ofs_in_node
Definition: f2fs_fs.h:1233
__u8 reserved[3]
Definition: f2fs_fs.h:1230
Definition: f2fs_fs.h:773
__le32 secs_per_zone
Definition: f2fs_fs.h:782
__le32 segs_per_sec
Definition: f2fs_fs.h:781
__le32 cp_blkaddr
Definition: f2fs_fs.h:794
__le32 root_ino
Definition: f2fs_fs.h:799
__u8 extension_list[F2FS_MAX_EXTENSION][8]
Definition: f2fs_fs.h:805
__u8 s_stop_reason[MAX_STOP_REASON]
Definition: f2fs_fs.h:817
__le32 segment_count_ckpt
Definition: f2fs_fs.h:788
__le32 extension_count
Definition: f2fs_fs.h:804
__le32 cp_payload
Definition: f2fs_fs.h:806
__le16 volume_name[MAX_VOLUME_NAME]
Definition: f2fs_fs.h:803
__le32 log_blocksize
Definition: f2fs_fs.h:779
__le32 magic
Definition: f2fs_fs.h:774
__le16 minor_ver
Definition: f2fs_fs.h:776
__le32 feature
Definition: f2fs_fs.h:809
__le32 segment_count_main
Definition: f2fs_fs.h:792
__le32 main_blkaddr
Definition: f2fs_fs.h:798
__le16 s_encoding
Definition: f2fs_fs.h:815
__le32 checksum_offset
Definition: f2fs_fs.h:783
__u8 init_version[VERSION_LEN]
Definition: f2fs_fs.h:808
__le32 nat_blkaddr
Definition: f2fs_fs.h:796
__u8 s_errors[MAX_F2FS_ERRORS]
Definition: f2fs_fs.h:818
__le16 s_encoding_flags
Definition: f2fs_fs.h:816
__le32 meta_ino
Definition: f2fs_fs.h:801
__le32 segment_count_nat
Definition: f2fs_fs.h:790
__le32 log_sectors_per_block
Definition: f2fs_fs.h:778
__le32 log_sectorsize
Definition: f2fs_fs.h:777
__le32 qf_ino[F2FS_MAX_QUOTAS] __attribute__((packed))
__u8 reserved[258]
Definition: f2fs_fs.h:819
__le32 segment_count
Definition: f2fs_fs.h:787
__u8 version[VERSION_LEN]
Definition: f2fs_fs.h:807
__le32 ssa_blkaddr
Definition: f2fs_fs.h:797
__le32 log_blocks_per_seg
Definition: f2fs_fs.h:780
__le32 crc
Definition: f2fs_fs.h:820
__u8 encryption_level
Definition: f2fs_fs.h:810
__le32 node_ino
Definition: f2fs_fs.h:800
__le32 segment0_blkaddr
Definition: f2fs_fs.h:793
__u8 hot_ext_count
Definition: f2fs_fs.h:814
__le32 section_count
Definition: f2fs_fs.h:786
__le16 major_ver
Definition: f2fs_fs.h:775
__le32 segment_count_ssa
Definition: f2fs_fs.h:791
__u8 encrypt_pw_salt[16]
Definition: f2fs_fs.h:811
__le32 segment_count_sit
Definition: f2fs_fs.h:789
__u8 uuid[16]
Definition: f2fs_fs.h:802
__le64 block_count __attribute__((packed))
__le32 sit_blkaddr
Definition: f2fs_fs.h:795
Definition: f2fs_fs.h:1999
u32 mask
Definition: f2fs_fs.h:2001
u32 settable
Definition: f2fs_fs.h:2002
char * name
Definition: f2fs_fs.h:2000
Definition: f2fs_fs.h:500
Definition: f2fs_fs.h:1101
__le32 nid[0]
Definition: f2fs_fs.h:1102
Definition: f2fs_fs.h:1277
__le32 nid
Definition: f2fs_fs.h:1278
struct f2fs_nat_entry ne
Definition: f2fs_fs.h:1279
Definition: f2fs_fs.h:1289
struct nat_journal_entry entries[0]
Definition: f2fs_fs.h:1290
Definition: f2fs_fs.h:1293
struct f2fs_sit_entry se
Definition: f2fs_fs.h:1295
__le32 segno
Definition: f2fs_fs.h:1294
Definition: f2fs_fs.h:1305
struct sit_journal_entry entries[0]
Definition: f2fs_fs.h:1306