toybox/toys/e2fs.h
<<
>>
Prefs
   1/* mke2fs.h - Headers for ext2
   2 *
   3 * Copyright 2006 Rob Landley <rob@landley.net>
   4 */
   5
   6// Stuff defined in linux/ext2_fs.h
   7
   8#define EXT2_SUPER_MAGIC  0xEF53
   9
  10struct ext2_superblock {
  11  uint32_t inodes_count;      // Inodes count
  12  uint32_t blocks_count;      // Blocks count
  13  uint32_t r_blocks_count;    // Reserved blocks count
  14  uint32_t free_blocks_count; // Free blocks count
  15  uint32_t free_inodes_count; // Free inodes count
  16  uint32_t first_data_block;  // First Data Block
  17  uint32_t log_block_size;    // Block size
  18  uint32_t log_frag_size;     // Fragment size
  19  uint32_t blocks_per_group;  // Blocks per group
  20  uint32_t frags_per_group;   // Fragments per group
  21  uint32_t inodes_per_group;  // Inodes per group
  22  uint32_t mtime;             // Mount time
  23  uint32_t wtime;             // Write time
  24  uint16_t mnt_count;         // Mount count
  25  uint16_t max_mnt_count;     // Maximal mount count
  26  uint16_t magic;             // Magic signature
  27  uint16_t state;             // File system state
  28  uint16_t errors;            // Behaviour when detecting errors
  29  uint16_t minor_rev_level;   // minor revision level
  30  uint32_t lastcheck;         // time of last check
  31  uint32_t checkinterval;     // max. time between checks
  32  uint32_t creator_os;        // OS
  33  uint32_t rev_level;         // Revision level
  34  uint16_t def_resuid;        // Default uid for reserved blocks
  35  uint16_t def_resgid;        // Default gid for reserved blocks
  36  uint32_t first_ino;         // First non-reserved inode
  37  uint16_t inode_size;        // size of inode structure
  38  uint16_t block_group_nr;    // block group # of this superblock
  39  uint32_t feature_compat;    // compatible feature set
  40  uint32_t feature_incompat;  // incompatible feature set
  41  uint32_t feature_ro_compat; // readonly-compatible feature set
  42  char     uuid[16];          // 128-bit uuid for volume
  43  char     volume_name[16];   // volume name
  44  char     last_mounted[64];  // directory where last mounted
  45  uint32_t alg_usage_bitmap;  // For compression
  46  // For EXT2_COMPAT_PREALLOC
  47  uint8_t  prealloc_blocks;   // Nr of blocks to try to preallocate
  48  uint8_t  prealloc_dir_blocks; //Nr to preallocate for dirs
  49  uint16_t padding1;
  50  // For EXT3_FEATURE_COMPAT_HAS_JOURNAL
  51  uint8_t  journal_uuid[16];   // uuid of journal superblock
  52  uint32_t journal_inum;       // inode number of journal file
  53  uint32_t journal_dev;        // device number of journal file
  54  uint32_t last_orphan;        // start of list of inodes to delete
  55  uint32_t hash_seed[4];       // HTREE hash seed
  56  uint8_t  def_hash_version;   // Default hash version to use
  57  uint8_t  padding2[3];
  58  uint32_t default_mount_opts;
  59  uint32_t first_meta_bg;      // First metablock block group
  60  uint32_t mkfs_time;          // Creation timestamp
  61  uint32_t jnl_blocks[17];     // Backup of journal inode
  62  // uint32_t reserved[172];      // Padding to the end of the block
  63};
  64
  65struct ext2_group
  66{
  67  uint32_t block_bitmap;       // Block number of block bitmap
  68  uint32_t inode_bitmap;       // Block number of inode bitmap
  69  uint32_t inode_table;        // Block number of inode table
  70  uint16_t free_blocks_count;  // How many free blocks in this group?
  71  uint16_t free_inodes_count;  // How many free inodes in this group?
  72  uint16_t used_dirs_count;    // How many directories?
  73  uint16_t reserved[7];        // pad to 32 bytes
  74};
  75
  76struct ext2_dentry {
  77  uint32_t inode;         // Inode number
  78  uint16_t rec_len;       // Directory entry length
  79  uint8_t  name_len;      // Name length
  80  uint8_t  file_type;
  81  char     name[0];     // File name
  82};
  83
  84struct ext2_inode {
  85  uint16_t mode;        // File mode
  86  uint16_t uid;         // Low 16 bits of Owner Uid
  87  uint32_t size;        // Size in bytes
  88  uint32_t atime;       // Access time
  89  uint32_t ctime;       // Creation time
  90  uint32_t mtime;       // Modification time
  91  uint32_t dtime;       // Deletion Time
  92  uint16_t gid;         // Low 16 bits of Group Id
  93  uint16_t links_count; // Links count
  94  uint32_t blocks;      // Blocks count
  95  uint32_t flags;       // File flags
  96  uint32_t reserved1;
  97  uint32_t block[15];   // Pointers to blocks
  98  uint32_t generation;  // File version (for NFS)
  99  uint32_t file_acl;    // File ACL
 100  uint32_t dir_acl;     // Directory ACL (or top bits of file length)
 101  uint32_t faddr;       // Last block in file
 102  uint8_t  frag;        // Fragment number
 103  uint8_t  fsize;       // Fragment size
 104  uint16_t pad1;
 105  uint16_t uid_high;    // High bits of uid
 106  uint16_t gid_high;    // High bits of gid
 107  uint32_t reserved2;
 108};
 109
 110#define EXT2_FEATURE_COMPAT_DIR_PREALLOC        0x0001
 111#define EXT2_FEATURE_COMPAT_IMAGIC_INODES       0x0002
 112#define EXT3_FEATURE_COMPAT_HAS_JOURNAL         0x0004
 113#define EXT2_FEATURE_COMPAT_EXT_ATTR            0x0008
 114#define EXT2_FEATURE_COMPAT_RESIZE_INO          0x0010
 115#define EXT2_FEATURE_COMPAT_DIR_INDEX           0x0020
 116
 117#define EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER     0x0001
 118#define EXT2_FEATURE_RO_COMPAT_LARGE_FILE       0x0002
 119#define EXT2_FEATURE_RO_COMPAT_BTREE_DIR        0x0004
 120
 121#define EXT2_FEATURE_INCOMPAT_COMPRESSION       0x0001
 122#define EXT2_FEATURE_INCOMPAT_FILETYPE          0x0002
 123#define EXT3_FEATURE_INCOMPAT_RECOVER           0x0004
 124#define EXT3_FEATURE_INCOMPAT_JOURNAL_DEV       0x0008
 125#define EXT2_FEATURE_INCOMPAT_META_BG           0x0010
 126
 127#define EXT2_NAME_LEN 255
 128
 129// Ext2 directory file types.  Only the low 3 bits are used.  The
 130// other bits are reserved for now.
 131
 132enum {
 133  EXT2_FT_UNKNOWN,
 134  EXT2_FT_REG_FILE,
 135  EXT2_FT_DIR,
 136  EXT2_FT_CHRDEV,
 137  EXT2_FT_BLKDEV,
 138  EXT2_FT_FIFO,
 139  EXT2_FT_SOCK,
 140  EXT2_FT_SYMLINK,
 141  EXT2_FT_MAX
 142};
 143