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/volume_id/ext.c | |
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/volume_id/ext.c')
-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"; |