diff options
| author | Denys Vlasenko <vda.linux@googlemail.com> | 2012-06-12 15:00:35 +0200 |
|---|---|---|
| committer | Denys Vlasenko <vda.linux@googlemail.com> | 2012-06-12 15:00:35 +0200 |
| commit | ac164dd2a7b7eefdc146ec2b0d448d029bc07ec0 (patch) | |
| tree | 00a0a6999c2c8d8c9141c335382e086b92b0a5f3 /util-linux | |
| parent | 70fc8c17e2d032f34162f7abc3e65a67c0ff272a (diff) | |
| download | busybox-w32-ac164dd2a7b7eefdc146ec2b0d448d029bc07ec0.tar.gz busybox-w32-ac164dd2a7b7eefdc146ec2b0d448d029bc07ec0.tar.bz2 busybox-w32-ac164dd2a7b7eefdc146ec2b0d448d029bc07ec0.zip | |
volume_id/ext: use common bb_e2fs_defs.h for ext2/3/4 constants and structs
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'util-linux')
| -rw-r--r-- | util-linux/volume_id/ext.c | 74 |
1 files changed, 7 insertions, 67 deletions
diff --git a/util-linux/volume_id/ext.c b/util-linux/volume_id/ext.c index aa23d1ebf..97451067f 100644 --- a/util-linux/volume_id/ext.c +++ b/util-linux/volume_id/ext.c | |||
| @@ -19,70 +19,10 @@ | |||
| 19 | */ | 19 | */ |
| 20 | 20 | ||
| 21 | #include "volume_id_internal.h" | 21 | #include "volume_id_internal.h" |
| 22 | 22 | #include "bb_e2fs_defs.h" | |
| 23 | struct ext2_super_block { | ||
| 24 | uint32_t inodes_count; | ||
| 25 | uint32_t blocks_count; | ||
| 26 | uint32_t r_blocks_count; | ||
| 27 | uint32_t free_blocks_count; | ||
| 28 | uint32_t free_inodes_count; | ||
| 29 | uint32_t first_data_block; | ||
| 30 | uint32_t log_block_size; | ||
| 31 | uint32_t dummy3[7]; | ||
| 32 | uint8_t magic[2]; | ||
| 33 | uint16_t state; | ||
| 34 | uint32_t dummy5[8]; | ||
| 35 | uint32_t feature_compat; | ||
| 36 | uint32_t feature_incompat; | ||
| 37 | uint32_t feature_ro_compat; | ||
| 38 | uint8_t uuid[16]; | ||
| 39 | uint8_t volume_name[16]; | ||
| 40 | } PACKED; | ||
| 41 | 23 | ||
| 42 | #define EXT_SUPERBLOCK_OFFSET 0x400 | 24 | #define EXT_SUPERBLOCK_OFFSET 0x400 |
| 43 | 25 | ||
| 44 | /* for s_flags */ | ||
| 45 | #define EXT2_FLAGS_TEST_FILESYS 0x0004 | ||
| 46 | |||
| 47 | /* for s_feature_compat */ | ||
| 48 | #define EXT3_FEATURE_COMPAT_HAS_JOURNAL 0x0004 | ||
| 49 | |||
| 50 | /* for s_feature_ro_compat */ | ||
| 51 | #define EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER 0x0001 | ||
| 52 | #define EXT2_FEATURE_RO_COMPAT_LARGE_FILE 0x0002 | ||
| 53 | #define EXT2_FEATURE_RO_COMPAT_BTREE_DIR 0x0004 | ||
| 54 | #define EXT4_FEATURE_RO_COMPAT_HUGE_FILE 0x0008 | ||
| 55 | #define EXT4_FEATURE_RO_COMPAT_GDT_CSUM 0x0010 | ||
| 56 | #define EXT4_FEATURE_RO_COMPAT_DIR_NLINK 0x0020 | ||
| 57 | #define EXT4_FEATURE_RO_COMPAT_EXTRA_ISIZE 0x0040 | ||
| 58 | |||
| 59 | /* for s_feature_incompat */ | ||
| 60 | #define EXT2_FEATURE_INCOMPAT_FILETYPE 0x0002 | ||
| 61 | #define EXT3_FEATURE_INCOMPAT_RECOVER 0x0004 | ||
| 62 | #define EXT3_FEATURE_INCOMPAT_JOURNAL_DEV 0x0008 | ||
| 63 | #define EXT2_FEATURE_INCOMPAT_META_BG 0x0010 | ||
| 64 | #define EXT4_FEATURE_INCOMPAT_EXTENTS 0x0040 /* extents support */ | ||
| 65 | #define EXT4_FEATURE_INCOMPAT_64BIT 0x0080 | ||
| 66 | #define EXT4_FEATURE_INCOMPAT_MMP 0x0100 | ||
| 67 | #define EXT4_FEATURE_INCOMPAT_FLEX_BG 0x0200 | ||
| 68 | |||
| 69 | #define EXT2_FEATURE_RO_COMPAT_SUPP (EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER| \ | ||
| 70 | EXT2_FEATURE_RO_COMPAT_LARGE_FILE| \ | ||
| 71 | EXT2_FEATURE_RO_COMPAT_BTREE_DIR) | ||
| 72 | #define EXT2_FEATURE_INCOMPAT_SUPP (EXT2_FEATURE_INCOMPAT_FILETYPE| \ | ||
| 73 | EXT2_FEATURE_INCOMPAT_META_BG) | ||
| 74 | #define EXT2_FEATURE_INCOMPAT_UNSUPPORTED ~EXT2_FEATURE_INCOMPAT_SUPP | ||
| 75 | #define EXT2_FEATURE_RO_COMPAT_UNSUPPORTED ~EXT2_FEATURE_RO_COMPAT_SUPP | ||
| 76 | |||
| 77 | #define EXT3_FEATURE_RO_COMPAT_SUPP (EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER| \ | ||
| 78 | EXT2_FEATURE_RO_COMPAT_LARGE_FILE| \ | ||
| 79 | EXT2_FEATURE_RO_COMPAT_BTREE_DIR) | ||
| 80 | #define EXT3_FEATURE_INCOMPAT_SUPP (EXT2_FEATURE_INCOMPAT_FILETYPE| \ | ||
| 81 | EXT3_FEATURE_INCOMPAT_RECOVER| \ | ||
| 82 | EXT2_FEATURE_INCOMPAT_META_BG) | ||
| 83 | #define EXT3_FEATURE_INCOMPAT_UNSUPPORTED ~EXT3_FEATURE_INCOMPAT_SUPP | ||
| 84 | #define EXT3_FEATURE_RO_COMPAT_UNSUPPORTED ~EXT3_FEATURE_RO_COMPAT_SUPP | ||
| 85 | |||
| 86 | int FAST_FUNC volume_id_probe_ext(struct volume_id *id /*,uint64_t off*/) | 26 | int FAST_FUNC volume_id_probe_ext(struct volume_id *id /*,uint64_t off*/) |
| 87 | { | 27 | { |
| 88 | #define off ((uint64_t)0) | 28 | #define off ((uint64_t)0) |
| @@ -94,24 +34,24 @@ int FAST_FUNC volume_id_probe_ext(struct volume_id *id /*,uint64_t off*/) | |||
| 94 | if (es == NULL) | 34 | if (es == NULL) |
| 95 | return -1; | 35 | return -1; |
| 96 | 36 | ||
| 97 | if (es->magic[0] != 0123 || es->magic[1] != 0357) { | 37 | if (es->s_magic != cpu_to_le16(EXT2_SUPER_MAGIC)) { |
| 98 | dbg("ext: no magic found"); | 38 | dbg("ext: no magic found"); |
| 99 | return -1; | 39 | return -1; |
| 100 | } | 40 | } |
| 101 | 41 | ||
| 102 | // volume_id_set_usage(id, VOLUME_ID_FILESYSTEM); | 42 | // volume_id_set_usage(id, VOLUME_ID_FILESYSTEM); |
| 103 | // volume_id_set_label_raw(id, es->volume_name, 16); | 43 | // volume_id_set_label_raw(id, es->volume_name, 16); |
| 104 | volume_id_set_label_string(id, es->volume_name, 16); | 44 | volume_id_set_label_string(id, (void*)es->s_volume_name, 16); |
| 105 | volume_id_set_uuid(id, es->uuid, UUID_DCE); | 45 | volume_id_set_uuid(id, es->s_uuid, UUID_DCE); |
| 106 | dbg("ext: label '%s' uuid '%s'", id->label, id->uuid); | 46 | dbg("ext: label '%s' uuid '%s'", id->label, id->uuid); |
| 107 | 47 | ||
| 108 | #if ENABLE_FEATURE_BLKID_TYPE | 48 | #if ENABLE_FEATURE_BLKID_TYPE |
| 109 | if ((es->feature_ro_compat & cpu_to_le32(EXT4_FEATURE_RO_COMPAT_HUGE_FILE | EXT4_FEATURE_RO_COMPAT_DIR_NLINK)) | 49 | if ((es->s_feature_ro_compat & cpu_to_le32(EXT4_FEATURE_RO_COMPAT_HUGE_FILE | EXT4_FEATURE_RO_COMPAT_DIR_NLINK)) |
| 110 | || (es->feature_incompat & cpu_to_le32(EXT4_FEATURE_INCOMPAT_EXTENTS | EXT4_FEATURE_INCOMPAT_64BIT)) | 50 | || (es->s_feature_incompat & cpu_to_le32(EXT4_FEATURE_INCOMPAT_EXTENTS | EXT4_FEATURE_INCOMPAT_64BIT)) |
| 111 | ) { | 51 | ) { |
| 112 | id->type = "ext4"; | 52 | id->type = "ext4"; |
| 113 | } | 53 | } |
| 114 | else if (es->feature_compat & cpu_to_le32(EXT3_FEATURE_COMPAT_HAS_JOURNAL)) | 54 | else if (es->s_feature_compat & cpu_to_le32(EXT3_FEATURE_COMPAT_HAS_JOURNAL)) |
| 115 | id->type = "ext3"; | 55 | id->type = "ext3"; |
| 116 | else | 56 | else |
| 117 | id->type = "ext2"; | 57 | id->type = "ext2"; |
