1 /* 2 * Copyright (c) 2024-2024 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef EXT4_H 17 #define EXT4_H 18 19 #include <linux/types.h> 20 21 #define EXT4_SUPER_MAGIC 0xEF53 22 #define EXT4_SUPER_BLOCK_START_POSITION 0x400 23 #define BLOCK_SIZE_UNIT 4096 24 25 typedef struct ext4_super_block { 26 __le32 s_inodes_count; 27 __le32 s_blocks_count_lo; 28 __le32 s_r_blocks_count_lo; 29 __le32 s_free_blocks_count_lo; 30 __le32 s_free_inodes_count; 31 __le32 s_first_data_block; 32 __le32 s_log_block_size; 33 __le32 s_log_cluster_size; 34 __le32 s_blocks_per_group; 35 __le32 s_clusters_per_group; 36 __le32 s_inodes_per_group; 37 __le32 s_mtime; 38 __le32 s_wtime; 39 __le16 s_mnt_count; 40 __le16 s_max_mnt_count; 41 __le16 s_magic; 42 __le16 s_state; 43 __le16 s_errors; 44 __le16 s_minor_rev_level; 45 __le32 s_lastcheck; 46 __le32 s_checkinterval; 47 __le32 s_creator_os; 48 __le32 s_rev_level; 49 __le16 s_def_resuid; 50 __le16 s_def_resgid; 51 52 __le32 s_first_ino; 53 __le16 s_inode_size; 54 __le16 s_block_group_nr; 55 __le32 s_feature_compat; 56 __le32 s_feature_incompat; 57 __le32 s_feature_ro_compat; 58 __u8 s_uuid[16]; 59 char s_volume_name[16]; 60 char s_last_mounted[64]; 61 __le32 s_algorithm_usage_bitmap; 62 63 __u8 s_prealloc_blocks; 64 __u8 s_prealloc_dir_blocks; 65 __le16 s_reserved_gdt_blocks; 66 67 __u8 s_journal_uuid[16]; 68 __le32 s_journal_inum; 69 __le32 s_journal_dev; 70 __le32 s_last_orphan; 71 __le32 s_hash_seed[4]; 72 __u8 s_def_hash_version; 73 __u8 s_jnl_backup_type; 74 __le16 s_desc_size; 75 __le32 s_default_mount_opts; 76 __le32 s_first_meta_bg; 77 __le32 s_mkfs_time; 78 __le32 s_jnl_blocks[17]; 79 80 __le32 s_blocks_count_hi; 81 __le32 s_r_blocks_count_hi; 82 __le32 s_free_blocks_count_hi; 83 __le16 s_min_extra_isize; 84 __le16 s_want_extra_isize; 85 __le32 s_flags; 86 __le16 s_raid_stride; 87 __le16 s_mmp_interval; 88 __le64 s_mmp_block; 89 __le32 s_raid_stripe_width; 90 __u8 s_log_groups_per_flex; 91 __u8 s_checksum_type; 92 __le16 s_reserved_pad; 93 __le64 s_kbytes_written; 94 __le32 s_snapshot_inum; 95 __le32 s_snapshot_id; 96 __le64 s_snapshot_r_blocks_count; 97 __le32 s_snapshot_list; 98 __le32 s_error_count; 99 __le32 s_first_error_time; 100 __le32 s_first_error_ino; 101 __le64 s_first_error_block; 102 __u8 s_first_error_func[32]; 103 __le32 s_first_error_line; 104 __le32 s_last_error_time; 105 __le32 s_last_error_ino; 106 __le32 s_last_error_line; 107 __le64 s_last_error_block; 108 __u8 s_last_error_func[32]; 109 __u8 s_mount_opts[64]; 110 __le32 s_usr_quota_inum; 111 __le32 s_grp_quota_inum; 112 __le32 s_overhead_blocks; 113 __le32 s_backup_bgs[2]; 114 __u8 s_encrypt_algos[4]; 115 __u8 s_encrypt_pw_salt[16]; 116 __le32 s_lpf_ino; 117 __le32 s_prj_quota_inum; 118 __le32 s_checksum_seed; 119 __le32 s_reserved[98]; 120 __le32 s_checksum; 121 } ext4_super_block; /* 1024 byte */ 122 123 #endif