15a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner/**************************************************************************** 25a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner **************************************************************************** 35a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner *** 45a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner *** This header was automatically generated from a Linux kernel header 55a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner *** of the same name, to make information necessary for userspace to 65a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner *** call into the kernel available to libc. It contains only constants, 75a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner *** structures, and macros generated from the original header, and thus, 85a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner *** contains no copyrightable information. 95a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner *** 105a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner **************************************************************************** 115a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner ****************************************************************************/ 125a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#ifndef _EXT4_H 135a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define _EXT4_H 145a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 155a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#include <sys/types.h> 165a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 175a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#undef EXT4FS_DEBUG 185a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 195a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#ifdef EXT4FS_DEBUG 205a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define ext4_debug(f, a...) do { printk(KERN_DEBUG "EXT4-fs DEBUG (%s, %d): %s:", __FILE__, __LINE__, __func__); printk(KERN_DEBUG f, ## a); } while (0) 215a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#else 225a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define ext4_debug(f, a...) do {} while (0) 235a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#endif 245a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 255a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_ERROR_INODE(inode, fmt, a...) ext4_error_inode(__func__, (inode), (fmt), ## a); 265a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 275a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_ERROR_FILE(file, fmt, a...) ext4_error_file(__func__, (file), (fmt), ## a); 285a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 295a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turnertypedef int ext4_grpblk_t; 305a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 315a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turnertypedef unsigned long long ext4_fsblk_t; 325a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 335a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turnertypedef __u32 ext4_lblk_t; 345a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 355a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turnertypedef unsigned int ext4_group_t; 365a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 375a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MB_HINT_MERGE 0x0001 385a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 395a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MB_HINT_RESERVED 0x0002 405a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 415a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MB_HINT_METADATA 0x0004 425a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 435a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MB_HINT_FIRST 0x0008 445a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 455a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MB_HINT_BEST 0x0010 465a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 475a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MB_HINT_DATA 0x0020 485a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 495a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MB_HINT_NOPREALLOC 0x0040 505a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 515a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MB_HINT_GROUP_ALLOC 0x0080 525a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 535a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MB_HINT_GOAL_ONLY 0x0100 545a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 555a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MB_HINT_TRY_GOAL 0x0200 565a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 575a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MB_DELALLOC_RESERVED 0x0400 585a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 595a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MB_STREAM_ALLOC 0x0800 605a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 615a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turnerstruct ext4_allocation_request { 625a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 635a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner struct inode *inode; 645a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 655a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner unsigned int len; 665a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 675a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner ext4_lblk_t logical; 685a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 695a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner ext4_lblk_t lleft; 705a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 715a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner ext4_lblk_t lright; 725a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 735a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner ext4_fsblk_t goal; 745a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 755a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner ext4_fsblk_t pleft; 765a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 775a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner ext4_fsblk_t pright; 785a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 795a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner unsigned int flags; 805a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner}; 815a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 825a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_BAD_INO 1 835a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_ROOT_INO 2 845a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_BOOT_LOADER_INO 5 855a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_UNDEL_DIR_INO 6 865a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_RESIZE_INO 7 875a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_JOURNAL_INO 8 885a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 895a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_GOOD_OLD_FIRST_INO 11 905a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 915a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_LINK_MAX 65000 925a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 935a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MIN_BLOCK_SIZE 1024 945a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MAX_BLOCK_SIZE 65536 955a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MIN_BLOCK_LOG_SIZE 10 965a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_BLOCK_SIZE(s) (EXT4_MIN_BLOCK_SIZE << (s)->s_log_block_size) 975a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_ADDR_PER_BLOCK(s) (EXT4_BLOCK_SIZE(s) / sizeof(__u32)) 985a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_BLOCK_SIZE_BITS(s) ((s)->s_log_block_size + 10) 995a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_INODE_SIZE(s) (((s)->s_rev_level == EXT4_GOOD_OLD_REV) ? EXT4_GOOD_OLD_INODE_SIZE : (s)->s_inode_size) 1005a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FIRST_INO(s) (((s)->s_rev_level == EXT4_GOOD_OLD_REV) ? EXT4_GOOD_OLD_FIRST_INO : (s)->s_first_ino) 1015a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_BLOCK_ALIGN(size, blkbits) ALIGN((size), (1 << (blkbits))) 1025a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 1035a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turnerstruct ext4_group_desc 1045a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner{ 1055a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 bg_block_bitmap_lo; 1065a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 bg_inode_bitmap_lo; 1075a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 bg_inode_table_lo; 1085a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le16 bg_free_blocks_count_lo; 1095a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le16 bg_free_inodes_count_lo; 1105a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le16 bg_used_dirs_count_lo; 1115a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le16 bg_flags; 1125a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __u32 bg_reserved[2]; 1135a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le16 bg_itable_unused_lo; 1145a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le16 bg_checksum; 1155a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 bg_block_bitmap_hi; 1165a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 bg_inode_bitmap_hi; 1175a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 bg_inode_table_hi; 1185a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le16 bg_free_blocks_count_hi; 1195a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le16 bg_free_inodes_count_hi; 1205a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le16 bg_used_dirs_count_hi; 1215a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le16 bg_itable_unused_hi; 1225a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __u32 bg_reserved2[3]; 1235a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner}; 1245a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 1255a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_BG_INODE_UNINIT 0x0001 1265a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_BG_BLOCK_UNINIT 0x0002 1275a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_BG_INODE_ZEROED 0x0004 1285a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 1295a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MIN_DESC_SIZE 32 1305a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MIN_DESC_SIZE_64BIT 64 1315a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MAX_DESC_SIZE EXT4_MIN_BLOCK_SIZE 1325a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_DESC_SIZE(s) (EXT4_SB(s)->s_desc_size) 1335a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_BLOCKS_PER_GROUP(s) ((s)->s_blocks_per_group) 1345a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_DESC_PER_BLOCK(s) (EXT4_BLOCK_SIZE(s) / EXT4_DESC_SIZE(s)) 1355a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_INODES_PER_GROUP(s) ((s)->s_inodes_per_group) 1365a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 1375a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_NDIR_BLOCKS 12 1385a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_IND_BLOCK EXT4_NDIR_BLOCKS 1395a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_DIND_BLOCK (EXT4_IND_BLOCK + 1) 1405a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_TIND_BLOCK (EXT4_DIND_BLOCK + 1) 1415a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_N_BLOCKS (EXT4_TIND_BLOCK + 1) 1425a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 1435a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_SECRM_FL 0x00000001 1445a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_UNRM_FL 0x00000002 1455a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_COMPR_FL 0x00000004 1465a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_SYNC_FL 0x00000008 1475a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_IMMUTABLE_FL 0x00000010 1485a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_APPEND_FL 0x00000020 1495a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_NODUMP_FL 0x00000040 1505a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_NOATIME_FL 0x00000080 1515a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 1525a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_DIRTY_FL 0x00000100 1535a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_COMPRBLK_FL 0x00000200 1545a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_NOCOMPR_FL 0x00000400 1555a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_ECOMPR_FL 0x00000800 1565a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 1575a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_INDEX_FL 0x00001000 1585a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_IMAGIC_FL 0x00002000 1595a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_JOURNAL_DATA_FL 0x00004000 1605a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_NOTAIL_FL 0x00008000 1615a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_DIRSYNC_FL 0x00010000 1625a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_TOPDIR_FL 0x00020000 1635a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_HUGE_FILE_FL 0x00040000 1645a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_EXTENTS_FL 0x00080000 1655a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_EA_INODE_FL 0x00200000 1665a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_EOFBLOCKS_FL 0x00400000 1675a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_RESERVED_FL 0x80000000 1685a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 1695a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FL_USER_VISIBLE 0x004BDFFF 1705a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FL_USER_MODIFIABLE 0x004B80FF 1715a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 1725a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FL_INHERITED (EXT4_SECRM_FL | EXT4_UNRM_FL | EXT4_COMPR_FL | EXT4_SYNC_FL | EXT4_IMMUTABLE_FL | EXT4_APPEND_FL | EXT4_NODUMP_FL | EXT4_NOATIME_FL | EXT4_NOCOMPR_FL | EXT4_JOURNAL_DATA_FL | EXT4_NOTAIL_FL | EXT4_DIRSYNC_FL) 1735a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 1745a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_REG_FLMASK (~(EXT4_DIRSYNC_FL | EXT4_TOPDIR_FL)) 1755a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 1765a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_OTHER_FLMASK (EXT4_NODUMP_FL | EXT4_NOATIME_FL) 1775a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 1785a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turnerstruct ext4_new_group_data { 1795a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __u32 group; 1805a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __u64 block_bitmap; 1815a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __u64 inode_bitmap; 1825a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __u64 inode_table; 1835a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __u32 blocks_count; 1845a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __u16 reserved_blocks; 1855a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __u16 unused; 1865a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __u32 free_blocks_count; 1875a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner}; 1885a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 1895a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_GET_BLOCKS_CREATE 0x0001 1905a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 1915a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_GET_BLOCKS_UNINIT_EXT 0x0002 1925a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_GET_BLOCKS_CREATE_UNINIT_EXT (EXT4_GET_BLOCKS_UNINIT_EXT| EXT4_GET_BLOCKS_CREATE) 1935a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 1945a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_GET_BLOCKS_DELALLOC_RESERVE 0x0004 1955a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 1965a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_GET_BLOCKS_PRE_IO 0x0008 1975a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_GET_BLOCKS_CONVERT 0x0010 1985a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_GET_BLOCKS_IO_CREATE_EXT (EXT4_GET_BLOCKS_PRE_IO| EXT4_GET_BLOCKS_CREATE_UNINIT_EXT) 1995a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 2005a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_GET_BLOCKS_IO_CONVERT_EXT (EXT4_GET_BLOCKS_CONVERT| EXT4_GET_BLOCKS_CREATE_UNINIT_EXT) 2015a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 2025a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FREE_BLOCKS_METADATA 0x0001 2035a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FREE_BLOCKS_FORGET 0x0002 2045a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FREE_BLOCKS_VALIDATED 0x0004 2055a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 2065a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_IOC_GETFLAGS FS_IOC_GETFLAGS 2075a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_IOC_SETFLAGS FS_IOC_SETFLAGS 2085a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_IOC_GETVERSION _IOR('f', 3, long) 2095a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_IOC_SETVERSION _IOW('f', 4, long) 2105a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_IOC_GETVERSION_OLD FS_IOC_GETVERSION 2115a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_IOC_SETVERSION_OLD FS_IOC_SETVERSION 2125a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_IOC_GETRSVSZ _IOR('f', 5, long) 2135a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_IOC_SETRSVSZ _IOW('f', 6, long) 2145a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_IOC_GROUP_EXTEND _IOW('f', 7, unsigned long) 2155a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_IOC_GROUP_ADD _IOW('f', 8, struct ext4_new_group_input) 2165a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_IOC_MIGRATE _IO('f', 9) 2175a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 2185a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_IOC_ALLOC_DA_BLKS _IO('f', 12) 2195a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_IOC_MOVE_EXT _IOWR('f', 15, struct move_extent) 2205a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 2215a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_IOC32_GETFLAGS FS_IOC32_GETFLAGS 2225a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_IOC32_SETFLAGS FS_IOC32_SETFLAGS 2235a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_IOC32_GETVERSION _IOR('f', 3, int) 2245a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_IOC32_SETVERSION _IOW('f', 4, int) 2255a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_IOC32_GETRSVSZ _IOR('f', 5, int) 2265a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_IOC32_SETRSVSZ _IOW('f', 6, int) 2275a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_IOC32_GROUP_EXTEND _IOW('f', 7, unsigned int) 2285a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_IOC32_GETVERSION_OLD FS_IOC32_GETVERSION 2295a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_IOC32_SETVERSION_OLD FS_IOC32_SETVERSION 2305a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 2315a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MAX_BLOCK_FILE_PHYS 0xFFFFFFFF 2325a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 2335a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turnerstruct ext4_inode { 2345a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le16 i_mode; 2355a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le16 i_uid; 2365a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 i_size_lo; 2375a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 i_atime; 2385a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 i_ctime; 2395a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 i_mtime; 2405a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 i_dtime; 2415a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le16 i_gid; 2425a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le16 i_links_count; 2435a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 i_blocks_lo; 2445a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 i_flags; 2455a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner union { 2465a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner struct { 2475a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 l_i_version; 2485a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner } linux1; 2495a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner struct { 2505a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __u32 h_i_translator; 2515a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner } hurd1; 2525a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner struct { 2535a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __u32 m_i_reserved1; 2545a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner } masix1; 2555a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner } osd1; 2565a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 i_block[EXT4_N_BLOCKS]; 2575a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 i_generation; 2585a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 i_file_acl_lo; 2595a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 i_size_high; 2605a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 i_obso_faddr; 2615a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner union { 2625a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner struct { 2635a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le16 l_i_blocks_high; 2645a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le16 l_i_file_acl_high; 2655a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le16 l_i_uid_high; 2665a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le16 l_i_gid_high; 2675a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __u32 l_i_reserved2; 2685a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner } linux2; 2695a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner struct { 2705a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le16 h_i_reserved1; 2715a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __u16 h_i_mode_high; 2725a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __u16 h_i_uid_high; 2735a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __u16 h_i_gid_high; 2745a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __u32 h_i_author; 2755a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner } hurd2; 2765a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner struct { 2775a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le16 h_i_reserved1; 2785a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le16 m_i_file_acl_high; 2795a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __u32 m_i_reserved2[2]; 2805a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner } masix2; 2815a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner } osd2; 2825a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le16 i_extra_isize; 2835a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le16 i_pad1; 2845a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 i_ctime_extra; 2855a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 i_mtime_extra; 2865a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 i_atime_extra; 2875a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 i_crtime; 2885a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 i_crtime_extra; 2895a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 i_version_hi; 2905a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner}; 2915a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 2925a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turnerstruct move_extent { 2935a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __u32 reserved; 2945a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __u32 donor_fd; 2955a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __u64 orig_start; 2965a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __u64 donor_start; 2975a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __u64 len; 2985a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __u64 moved_len; 2995a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner}; 3005a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 3015a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_EPOCH_BITS 2 3025a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_EPOCH_MASK ((1 << EXT4_EPOCH_BITS) - 1) 3035a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_NSEC_MASK (~0UL << EXT4_EPOCH_BITS) 3045a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 3055a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FITS_IN_INODE(ext4_inode, einode, field) ((offsetof(typeof(*ext4_inode), field) + sizeof((ext4_inode)->field)) <= (EXT4_GOOD_OLD_INODE_SIZE + (einode)->i_extra_isize)) 3065a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_INODE_SET_XTIME(xtime, inode, raw_inode) do { (raw_inode)->xtime = cpu_to_le32((inode)->xtime.tv_sec); if (EXT4_FITS_IN_INODE(raw_inode, EXT4_I(inode), xtime ## _extra)) (raw_inode)->xtime ## _extra = ext4_encode_extra_time(&(inode)->xtime); } while (0) 3075a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_EINODE_SET_XTIME(xtime, einode, raw_inode) do { if (EXT4_FITS_IN_INODE(raw_inode, einode, xtime)) (raw_inode)->xtime = cpu_to_le32((einode)->xtime.tv_sec); if (EXT4_FITS_IN_INODE(raw_inode, einode, xtime ## _extra)) (raw_inode)->xtime ## _extra = ext4_encode_extra_time(&(einode)->xtime); } while (0) 3085a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_INODE_GET_XTIME(xtime, inode, raw_inode) do { (inode)->xtime.tv_sec = (signed)le32_to_cpu((raw_inode)->xtime); if (EXT4_FITS_IN_INODE(raw_inode, EXT4_I(inode), xtime ## _extra)) ext4_decode_extra_time(&(inode)->xtime, raw_inode->xtime ## _extra); } while (0) 3095a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_EINODE_GET_XTIME(xtime, einode, raw_inode) do { if (EXT4_FITS_IN_INODE(raw_inode, einode, xtime)) (einode)->xtime.tv_sec = (signed)le32_to_cpu((raw_inode)->xtime); if (EXT4_FITS_IN_INODE(raw_inode, einode, xtime ## _extra)) ext4_decode_extra_time(&(einode)->xtime, raw_inode->xtime ## _extra); } while (0) 3105a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define i_disk_version osd1.linux1.l_i_version 3115a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 3125a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define i_reserved1 osd1.linux1.l_i_reserved1 3135a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define i_file_acl_high osd2.linux2.l_i_file_acl_high 3145a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define i_blocks_high osd2.linux2.l_i_blocks_high 3155a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define i_uid_low i_uid 3165a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define i_gid_low i_gid 3175a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define i_uid_high osd2.linux2.l_i_uid_high 3185a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define i_gid_high osd2.linux2.l_i_gid_high 3195a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define i_reserved2 osd2.linux2.l_i_reserved2 3205a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 3215a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_VALID_FS 0x0001 3225a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_ERROR_FS 0x0002 3235a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_ORPHAN_FS 0x0004 3245a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 3255a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT2_FLAGS_SIGNED_HASH 0x0001 3265a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT2_FLAGS_UNSIGNED_HASH 0x0002 3275a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT2_FLAGS_TEST_FILESYS 0x0004 3285a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 3295a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MOUNT_OLDALLOC 0x00002 3305a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MOUNT_GRPID 0x00004 3315a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MOUNT_DEBUG 0x00008 3325a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MOUNT_ERRORS_CONT 0x00010 3335a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MOUNT_ERRORS_RO 0x00020 3345a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MOUNT_ERRORS_PANIC 0x00040 3355a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MOUNT_MINIX_DF 0x00080 3365a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MOUNT_NOLOAD 0x00100 3375a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MOUNT_DATA_FLAGS 0x00C00 3385a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MOUNT_JOURNAL_DATA 0x00400 3395a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MOUNT_ORDERED_DATA 0x00800 3405a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MOUNT_WRITEBACK_DATA 0x00C00 3415a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MOUNT_UPDATE_JOURNAL 0x01000 3425a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MOUNT_NO_UID32 0x02000 3435a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MOUNT_XATTR_USER 0x04000 3445a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MOUNT_POSIX_ACL 0x08000 3455a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MOUNT_NO_AUTO_DA_ALLOC 0x10000 3465a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MOUNT_BARRIER 0x20000 3475a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MOUNT_NOBH 0x40000 3485a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MOUNT_QUOTA 0x80000 3495a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MOUNT_USRQUOTA 0x100000 3505a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MOUNT_GRPQUOTA 0x200000 3515a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MOUNT_DIOREAD_NOLOCK 0x400000 3525a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MOUNT_JOURNAL_CHECKSUM 0x800000 3535a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MOUNT_JOURNAL_ASYNC_COMMIT 0x1000000 3545a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MOUNT_I_VERSION 0x2000000 3555a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MOUNT_DELALLOC 0x8000000 3565a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MOUNT_DATA_ERR_ABORT 0x10000000 3575a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MOUNT_BLOCK_VALIDITY 0x20000000 3585a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MOUNT_DISCARD 0x40000000 3595a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 3605a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define clear_opt(o, opt) o &= ~EXT4_MOUNT_##opt 3615a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define set_opt(o, opt) o |= EXT4_MOUNT_##opt 3625a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define test_opt(sb, opt) (EXT4_SB(sb)->s_mount_opt & EXT4_MOUNT_##opt) 3635a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 3645a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define ext4_set_bit ext2_set_bit 3655a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define ext4_set_bit_atomic ext2_set_bit_atomic 3665a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define ext4_clear_bit ext2_clear_bit 3675a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define ext4_clear_bit_atomic ext2_clear_bit_atomic 3685a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define ext4_test_bit ext2_test_bit 3695a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define ext4_find_first_zero_bit ext2_find_first_zero_bit 3705a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define ext4_find_next_zero_bit ext2_find_next_zero_bit 3715a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define ext4_find_next_bit ext2_find_next_bit 3725a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 3735a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_DFL_MAX_MNT_COUNT 20 3745a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_DFL_CHECKINTERVAL 0 3755a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 3765a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_ERRORS_CONTINUE 1 3775a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_ERRORS_RO 2 3785a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_ERRORS_PANIC 3 3795a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_ERRORS_DEFAULT EXT4_ERRORS_CONTINUE 3805a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 3815a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turnerstruct ext4_super_block { 3825a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 s_inodes_count; 3835a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 s_blocks_count_lo; 3845a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 s_r_blocks_count_lo; 3855a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 s_free_blocks_count_lo; 3865a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 s_free_inodes_count; 3875a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 s_first_data_block; 3885a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 s_log_block_size; 3895a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 s_obso_log_frag_size; 3905a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 s_blocks_per_group; 3915a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 s_obso_frags_per_group; 3925a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 s_inodes_per_group; 3935a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 s_mtime; 3945a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 s_wtime; 3955a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le16 s_mnt_count; 3965a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le16 s_max_mnt_count; 3975a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le16 s_magic; 3985a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le16 s_state; 3995a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le16 s_errors; 4005a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le16 s_minor_rev_level; 4015a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 s_lastcheck; 4025a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 s_checkinterval; 4035a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 s_creator_os; 4045a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 s_rev_level; 4055a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le16 s_def_resuid; 4065a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le16 s_def_resgid; 4075a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 4085a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 s_first_ino; 4095a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le16 s_inode_size; 4105a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le16 s_block_group_nr; 4115a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 s_feature_compat; 4125a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 s_feature_incompat; 4135a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 s_feature_ro_compat; 4145a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __u8 s_uuid[16]; 4155a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner char s_volume_name[16]; 4165a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner char s_last_mounted[64]; 4175a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 s_algorithm_usage_bitmap; 4185a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 4195a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __u8 s_prealloc_blocks; 4205a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __u8 s_prealloc_dir_blocks; 4215a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le16 s_reserved_gdt_blocks; 4225a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 4235a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __u8 s_journal_uuid[16]; 4245a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 s_journal_inum; 4255a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 s_journal_dev; 4265a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 s_last_orphan; 4275a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 s_hash_seed[4]; 4285a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __u8 s_def_hash_version; 4295a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __u8 s_reserved_char_pad; 4305a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le16 s_desc_size; 4315a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 s_default_mount_opts; 4325a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 s_first_meta_bg; 4335a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 s_mkfs_time; 4345a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 s_jnl_blocks[17]; 4355a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 4365a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 s_blocks_count_hi; 4375a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 s_r_blocks_count_hi; 4385a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 s_free_blocks_count_hi; 4395a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le16 s_min_extra_isize; 4405a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le16 s_want_extra_isize; 4415a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 s_flags; 4425a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le16 s_raid_stride; 4435a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le16 s_mmp_interval; 4445a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le64 s_mmp_block; 4455a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 s_raid_stripe_width; 4465a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __u8 s_log_groups_per_flex; 4475a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __u8 s_reserved_char_pad2; 4485a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le16 s_reserved_pad; 4495a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le64 s_kbytes_written; 4505a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __u32 s_reserved[160]; 4515a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner}; 4525a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 4535a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_SB(sb) (sb) 4545a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 4555a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define NEXT_ORPHAN(inode) EXT4_I(inode)->i_dtime 4565a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 4575a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_OS_LINUX 0 4585a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_OS_HURD 1 4595a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_OS_MASIX 2 4605a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_OS_FREEBSD 3 4615a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_OS_LITES 4 4625a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 4635a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_GOOD_OLD_REV 0 4645a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_DYNAMIC_REV 1 4655a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 4665a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_CURRENT_REV EXT4_GOOD_OLD_REV 4675a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MAX_SUPP_REV EXT4_DYNAMIC_REV 4685a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 4695a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_GOOD_OLD_INODE_SIZE 128 4705a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 4715a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_HAS_COMPAT_FEATURE(sb,mask) ((EXT4_SB(sb)->s_es->s_feature_compat & cpu_to_le32(mask)) != 0) 4725a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_HAS_RO_COMPAT_FEATURE(sb,mask) ((EXT4_SB(sb)->s_es->s_feature_ro_compat & cpu_to_le32(mask)) != 0) 4735a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_HAS_INCOMPAT_FEATURE(sb,mask) ((EXT4_SB(sb)->s_es->s_feature_incompat & cpu_to_le32(mask)) != 0) 4745a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_SET_COMPAT_FEATURE(sb,mask) EXT4_SB(sb)->s_es->s_feature_compat |= cpu_to_le32(mask) 4755a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_SET_RO_COMPAT_FEATURE(sb,mask) EXT4_SB(sb)->s_es->s_feature_ro_compat |= cpu_to_le32(mask) 4765a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_SET_INCOMPAT_FEATURE(sb,mask) EXT4_SB(sb)->s_es->s_feature_incompat |= cpu_to_le32(mask) 4775a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_CLEAR_COMPAT_FEATURE(sb,mask) EXT4_SB(sb)->s_es->s_feature_compat &= ~cpu_to_le32(mask) 4785a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_CLEAR_RO_COMPAT_FEATURE(sb,mask) EXT4_SB(sb)->s_es->s_feature_ro_compat &= ~cpu_to_le32(mask) 4795a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_CLEAR_INCOMPAT_FEATURE(sb,mask) EXT4_SB(sb)->s_es->s_feature_incompat &= ~cpu_to_le32(mask) 4805a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 4815a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FEATURE_COMPAT_DIR_PREALLOC 0x0001 4825a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FEATURE_COMPAT_IMAGIC_INODES 0x0002 4835a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FEATURE_COMPAT_HAS_JOURNAL 0x0004 4845a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FEATURE_COMPAT_EXT_ATTR 0x0008 4855a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FEATURE_COMPAT_RESIZE_INODE 0x0010 4865a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FEATURE_COMPAT_DIR_INDEX 0x0020 4875a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 4885a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FEATURE_RO_COMPAT_SPARSE_SUPER 0x0001 4895a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FEATURE_RO_COMPAT_LARGE_FILE 0x0002 4905a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FEATURE_RO_COMPAT_BTREE_DIR 0x0004 4915a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FEATURE_RO_COMPAT_HUGE_FILE 0x0008 4925a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FEATURE_RO_COMPAT_GDT_CSUM 0x0010 4935a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FEATURE_RO_COMPAT_DIR_NLINK 0x0020 4945a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FEATURE_RO_COMPAT_EXTRA_ISIZE 0x0040 4955a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 4965a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FEATURE_INCOMPAT_COMPRESSION 0x0001 4975a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FEATURE_INCOMPAT_FILETYPE 0x0002 4985a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FEATURE_INCOMPAT_RECOVER 0x0004 4995a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FEATURE_INCOMPAT_JOURNAL_DEV 0x0008 5005a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FEATURE_INCOMPAT_META_BG 0x0010 5015a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FEATURE_INCOMPAT_EXTENTS 0x0040 5025a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FEATURE_INCOMPAT_64BIT 0x0080 5035a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FEATURE_INCOMPAT_MMP 0x0100 5045a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FEATURE_INCOMPAT_FLEX_BG 0x0200 5055a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FEATURE_INCOMPAT_EA_INODE 0x0400 5065a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FEATURE_INCOMPAT_DIRDATA 0x1000 5075a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 5085a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FEATURE_COMPAT_SUPP EXT2_FEATURE_COMPAT_EXT_ATTR 5095a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FEATURE_INCOMPAT_SUPP (EXT4_FEATURE_INCOMPAT_FILETYPE| EXT4_FEATURE_INCOMPAT_RECOVER| EXT4_FEATURE_INCOMPAT_META_BG| EXT4_FEATURE_INCOMPAT_EXTENTS| EXT4_FEATURE_INCOMPAT_64BIT| EXT4_FEATURE_INCOMPAT_FLEX_BG) 5105a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FEATURE_RO_COMPAT_SUPP (EXT4_FEATURE_RO_COMPAT_SPARSE_SUPER| EXT4_FEATURE_RO_COMPAT_LARGE_FILE| EXT4_FEATURE_RO_COMPAT_GDT_CSUM| EXT4_FEATURE_RO_COMPAT_DIR_NLINK | EXT4_FEATURE_RO_COMPAT_EXTRA_ISIZE | EXT4_FEATURE_RO_COMPAT_BTREE_DIR | EXT4_FEATURE_RO_COMPAT_HUGE_FILE) 5115a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 5125a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_DEF_RESUID 0 5135a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_DEF_RESGID 0 5145a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 5155a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_DEF_INODE_READAHEAD_BLKS 32 5165a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 5175a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_DEFM_DEBUG 0x0001 5185a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_DEFM_BSDGROUPS 0x0002 5195a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_DEFM_XATTR_USER 0x0004 5205a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_DEFM_ACL 0x0008 5215a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_DEFM_UID16 0x0010 5225a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_DEFM_JMODE 0x0060 5235a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_DEFM_JMODE_DATA 0x0020 5245a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_DEFM_JMODE_ORDERED 0x0040 5255a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_DEFM_JMODE_WBACK 0x0060 5265a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 5275a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_DEF_MIN_BATCH_TIME 0 5285a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_DEF_MAX_BATCH_TIME 15000 5295a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 5305a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FLEX_SIZE_DIR_ALLOC_SCHEME 4 5315a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 5325a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_NAME_LEN 255 5335a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 5345a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turnerstruct ext4_dir_entry { 5355a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 inode; 5365a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le16 rec_len; 5375a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le16 name_len; 5385a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner char name[EXT4_NAME_LEN]; 5395a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner}; 5405a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 5415a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turnerstruct ext4_dir_entry_2 { 5425a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le32 inode; 5435a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __le16 rec_len; 5445a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __u8 name_len; 5455a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner __u8 file_type; 5465a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner char name[EXT4_NAME_LEN]; 5475a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner}; 5485a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 5495a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FT_UNKNOWN 0 5505a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FT_REG_FILE 1 5515a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FT_DIR 2 5525a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FT_CHRDEV 3 5535a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FT_BLKDEV 4 5545a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FT_FIFO 5 5555a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FT_SOCK 6 5565a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FT_SYMLINK 7 5575a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 5585a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_FT_MAX 8 5595a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 5605a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_DIR_PAD 4 5615a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_DIR_ROUND (EXT4_DIR_PAD - 1) 5625a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_DIR_REC_LEN(name_len) (((name_len) + 8 + EXT4_DIR_ROUND) & ~EXT4_DIR_ROUND) 5635a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_MAX_REC_LEN ((1<<16)-1) 5645a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 5655a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define is_dx(dir) (EXT4_HAS_COMPAT_FEATURE(dir->i_sb, EXT4_FEATURE_COMPAT_DIR_INDEX) && (EXT4_I(dir)->i_flags & EXT4_INDEX_FL)) 5665a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_DIR_LINK_MAX(dir) (!is_dx(dir) && (dir)->i_nlink >= EXT4_LINK_MAX) 5675a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define EXT4_DIR_LINK_EMPTY(dir) ((dir)->i_nlink == 2 || (dir)->i_nlink == 1) 5685a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 5695a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define DX_HASH_LEGACY 0 5705a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define DX_HASH_HALF_MD4 1 5715a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define DX_HASH_TEA 2 5725a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define DX_HASH_LEGACY_UNSIGNED 3 5735a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define DX_HASH_HALF_MD4_UNSIGNED 4 5745a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#define DX_HASH_TEA_UNSIGNED 5 5755a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 5765a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner#endif 5775a60dc51ef5c2b97db192244e79b12ad03ee885eDavid 'Digit' Turner 578