/[pkg-src]/trunk/busybox/patches/busybox-1.20.2-use-common-bb_e2fs_defs.h-for-ext2_3_4-constants-and-structs.patch |
Contents of /trunk/busybox/patches/busybox-1.20.2-use-common-bb_e2fs_defs.h-for-ext2_3_4-constants-and-structs.patch
Parent Directory | Revision Log
Revision 1857 -
(show annotations)
(download)
Thu Jul 26 09:23:48 2012 UTC (12 years, 2 months ago) by niro
File size: 7151 byte(s)
Thu Jul 26 09:23:48 2012 UTC (12 years, 2 months ago) by niro
File size: 7151 byte(s)
-added missing patch
1 | From ac164dd2a7b7eefdc146ec2b0d448d029bc07ec0 Mon Sep 17 00:00:00 2001 |
2 | From: Denys Vlasenko <vda.linux@googlemail.com> |
3 | Date: Tue, 12 Jun 2012 13:00:35 +0000 |
4 | Subject: volume_id/ext: use common bb_e2fs_defs.h for ext2/3/4 constants and structs |
5 | |
6 | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com> |
7 | --- |
8 | diff --git a/include/bb_e2fs_defs.h b/include/bb_e2fs_defs.h |
9 | index 7974497..071c660 100644 |
10 | --- a/include/bb_e2fs_defs.h |
11 | +++ b/include/bb_e2fs_defs.h |
12 | @@ -463,6 +463,7 @@ struct ext2_super_block { |
13 | #define EXT2_HAS_INCOMPAT_FEATURE(sb,mask) \ |
14 | ( EXT2_SB(sb)->s_feature_incompat & (mask) ) |
15 | |
16 | +/* for s_feature_compat */ |
17 | #define EXT2_FEATURE_COMPAT_DIR_PREALLOC 0x0001 |
18 | #define EXT2_FEATURE_COMPAT_IMAGIC_INODES 0x0002 |
19 | #define EXT3_FEATURE_COMPAT_HAS_JOURNAL 0x0004 |
20 | @@ -470,23 +471,45 @@ struct ext2_super_block { |
21 | #define EXT2_FEATURE_COMPAT_RESIZE_INO 0x0010 |
22 | #define EXT2_FEATURE_COMPAT_DIR_INDEX 0x0020 |
23 | |
24 | +/* for s_feature_ro_compat */ |
25 | #define EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER 0x0001 |
26 | #define EXT2_FEATURE_RO_COMPAT_LARGE_FILE 0x0002 |
27 | -/* #define EXT2_FEATURE_RO_COMPAT_BTREE_DIR 0x0004 not used */ |
28 | +#define EXT2_FEATURE_RO_COMPAT_BTREE_DIR 0x0004 /* not used */ |
29 | +#define EXT4_FEATURE_RO_COMPAT_HUGE_FILE 0x0008 |
30 | +#define EXT4_FEATURE_RO_COMPAT_GDT_CSUM 0x0010 |
31 | +#define EXT4_FEATURE_RO_COMPAT_DIR_NLINK 0x0020 |
32 | +#define EXT4_FEATURE_RO_COMPAT_EXTRA_ISIZE 0x0040 |
33 | |
34 | +/* for s_feature_incompat */ |
35 | #define EXT2_FEATURE_INCOMPAT_COMPRESSION 0x0001 |
36 | #define EXT2_FEATURE_INCOMPAT_FILETYPE 0x0002 |
37 | -#define EXT3_FEATURE_INCOMPAT_RECOVER 0x0004 /* Needs recovery */ |
38 | -#define EXT3_FEATURE_INCOMPAT_JOURNAL_DEV 0x0008 /* Journal device */ |
39 | +#define EXT3_FEATURE_INCOMPAT_RECOVER 0x0004 |
40 | +#define EXT3_FEATURE_INCOMPAT_JOURNAL_DEV 0x0008 |
41 | #define EXT2_FEATURE_INCOMPAT_META_BG 0x0010 |
42 | -#define EXT3_FEATURE_INCOMPAT_EXTENTS 0x0040 |
43 | +#define EXT4_FEATURE_INCOMPAT_EXTENTS 0x0040 |
44 | +#define EXT4_FEATURE_INCOMPAT_64BIT 0x0080 |
45 | +#define EXT4_FEATURE_INCOMPAT_MMP 0x0100 |
46 | +#define EXT4_FEATURE_INCOMPAT_FLEX_BG 0x0200 |
47 | |
48 | |
49 | #define EXT2_FEATURE_COMPAT_SUPP 0 |
50 | -#define EXT2_FEATURE_INCOMPAT_SUPP (EXT2_FEATURE_INCOMPAT_FILETYPE) |
51 | #define EXT2_FEATURE_RO_COMPAT_SUPP (EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER| \ |
52 | EXT2_FEATURE_RO_COMPAT_LARGE_FILE| \ |
53 | EXT2_FEATURE_RO_COMPAT_BTREE_DIR) |
54 | +#define EXT2_FEATURE_INCOMPAT_SUPP (EXT2_FEATURE_INCOMPAT_FILETYPE| \ |
55 | + EXT2_FEATURE_INCOMPAT_META_BG) |
56 | +#define EXT2_FEATURE_INCOMPAT_UNSUPPORTED (~EXT2_FEATURE_INCOMPAT_SUPP) |
57 | +#define EXT2_FEATURE_RO_COMPAT_UNSUPPORTED (~EXT2_FEATURE_RO_COMPAT_SUPP) |
58 | + |
59 | +#define EXT3_FEATURE_RO_COMPAT_SUPP (EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER| \ |
60 | + EXT2_FEATURE_RO_COMPAT_LARGE_FILE| \ |
61 | + EXT2_FEATURE_RO_COMPAT_BTREE_DIR) |
62 | +#define EXT3_FEATURE_INCOMPAT_SUPP (EXT2_FEATURE_INCOMPAT_FILETYPE| \ |
63 | + EXT3_FEATURE_INCOMPAT_RECOVER| \ |
64 | + EXT2_FEATURE_INCOMPAT_META_BG) |
65 | +#define EXT3_FEATURE_INCOMPAT_UNSUPPORTED (~EXT3_FEATURE_INCOMPAT_SUPP) |
66 | +#define EXT3_FEATURE_RO_COMPAT_UNSUPPORTED (~EXT3_FEATURE_RO_COMPAT_SUPP) |
67 | + |
68 | |
69 | /* |
70 | * Default values for user and/or group using reserved blocks |
71 | diff --git a/util-linux/volume_id/ext.c b/util-linux/volume_id/ext.c |
72 | index aa23d1e..9745106 100644 |
73 | --- a/util-linux/volume_id/ext.c |
74 | +++ b/util-linux/volume_id/ext.c |
75 | @@ -19,70 +19,10 @@ |
76 | */ |
77 | |
78 | #include "volume_id_internal.h" |
79 | - |
80 | -struct ext2_super_block { |
81 | - uint32_t inodes_count; |
82 | - uint32_t blocks_count; |
83 | - uint32_t r_blocks_count; |
84 | - uint32_t free_blocks_count; |
85 | - uint32_t free_inodes_count; |
86 | - uint32_t first_data_block; |
87 | - uint32_t log_block_size; |
88 | - uint32_t dummy3[7]; |
89 | - uint8_t magic[2]; |
90 | - uint16_t state; |
91 | - uint32_t dummy5[8]; |
92 | - uint32_t feature_compat; |
93 | - uint32_t feature_incompat; |
94 | - uint32_t feature_ro_compat; |
95 | - uint8_t uuid[16]; |
96 | - uint8_t volume_name[16]; |
97 | -} PACKED; |
98 | +#include "bb_e2fs_defs.h" |
99 | |
100 | #define EXT_SUPERBLOCK_OFFSET 0x400 |
101 | |
102 | -/* for s_flags */ |
103 | -#define EXT2_FLAGS_TEST_FILESYS 0x0004 |
104 | - |
105 | -/* for s_feature_compat */ |
106 | -#define EXT3_FEATURE_COMPAT_HAS_JOURNAL 0x0004 |
107 | - |
108 | -/* for s_feature_ro_compat */ |
109 | -#define EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER 0x0001 |
110 | -#define EXT2_FEATURE_RO_COMPAT_LARGE_FILE 0x0002 |
111 | -#define EXT2_FEATURE_RO_COMPAT_BTREE_DIR 0x0004 |
112 | -#define EXT4_FEATURE_RO_COMPAT_HUGE_FILE 0x0008 |
113 | -#define EXT4_FEATURE_RO_COMPAT_GDT_CSUM 0x0010 |
114 | -#define EXT4_FEATURE_RO_COMPAT_DIR_NLINK 0x0020 |
115 | -#define EXT4_FEATURE_RO_COMPAT_EXTRA_ISIZE 0x0040 |
116 | - |
117 | -/* for s_feature_incompat */ |
118 | -#define EXT2_FEATURE_INCOMPAT_FILETYPE 0x0002 |
119 | -#define EXT3_FEATURE_INCOMPAT_RECOVER 0x0004 |
120 | -#define EXT3_FEATURE_INCOMPAT_JOURNAL_DEV 0x0008 |
121 | -#define EXT2_FEATURE_INCOMPAT_META_BG 0x0010 |
122 | -#define EXT4_FEATURE_INCOMPAT_EXTENTS 0x0040 /* extents support */ |
123 | -#define EXT4_FEATURE_INCOMPAT_64BIT 0x0080 |
124 | -#define EXT4_FEATURE_INCOMPAT_MMP 0x0100 |
125 | -#define EXT4_FEATURE_INCOMPAT_FLEX_BG 0x0200 |
126 | - |
127 | -#define EXT2_FEATURE_RO_COMPAT_SUPP (EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER| \ |
128 | - EXT2_FEATURE_RO_COMPAT_LARGE_FILE| \ |
129 | - EXT2_FEATURE_RO_COMPAT_BTREE_DIR) |
130 | -#define EXT2_FEATURE_INCOMPAT_SUPP (EXT2_FEATURE_INCOMPAT_FILETYPE| \ |
131 | - EXT2_FEATURE_INCOMPAT_META_BG) |
132 | -#define EXT2_FEATURE_INCOMPAT_UNSUPPORTED ~EXT2_FEATURE_INCOMPAT_SUPP |
133 | -#define EXT2_FEATURE_RO_COMPAT_UNSUPPORTED ~EXT2_FEATURE_RO_COMPAT_SUPP |
134 | - |
135 | -#define EXT3_FEATURE_RO_COMPAT_SUPP (EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER| \ |
136 | - EXT2_FEATURE_RO_COMPAT_LARGE_FILE| \ |
137 | - EXT2_FEATURE_RO_COMPAT_BTREE_DIR) |
138 | -#define EXT3_FEATURE_INCOMPAT_SUPP (EXT2_FEATURE_INCOMPAT_FILETYPE| \ |
139 | - EXT3_FEATURE_INCOMPAT_RECOVER| \ |
140 | - EXT2_FEATURE_INCOMPAT_META_BG) |
141 | -#define EXT3_FEATURE_INCOMPAT_UNSUPPORTED ~EXT3_FEATURE_INCOMPAT_SUPP |
142 | -#define EXT3_FEATURE_RO_COMPAT_UNSUPPORTED ~EXT3_FEATURE_RO_COMPAT_SUPP |
143 | - |
144 | int FAST_FUNC volume_id_probe_ext(struct volume_id *id /*,uint64_t off*/) |
145 | { |
146 | #define off ((uint64_t)0) |
147 | @@ -94,24 +34,24 @@ int FAST_FUNC volume_id_probe_ext(struct volume_id *id /*,uint64_t off*/) |
148 | if (es == NULL) |
149 | return -1; |
150 | |
151 | - if (es->magic[0] != 0123 || es->magic[1] != 0357) { |
152 | + if (es->s_magic != cpu_to_le16(EXT2_SUPER_MAGIC)) { |
153 | dbg("ext: no magic found"); |
154 | return -1; |
155 | } |
156 | |
157 | // volume_id_set_usage(id, VOLUME_ID_FILESYSTEM); |
158 | // volume_id_set_label_raw(id, es->volume_name, 16); |
159 | - volume_id_set_label_string(id, es->volume_name, 16); |
160 | - volume_id_set_uuid(id, es->uuid, UUID_DCE); |
161 | + volume_id_set_label_string(id, (void*)es->s_volume_name, 16); |
162 | + volume_id_set_uuid(id, es->s_uuid, UUID_DCE); |
163 | dbg("ext: label '%s' uuid '%s'", id->label, id->uuid); |
164 | |
165 | #if ENABLE_FEATURE_BLKID_TYPE |
166 | - if ((es->feature_ro_compat & cpu_to_le32(EXT4_FEATURE_RO_COMPAT_HUGE_FILE | EXT4_FEATURE_RO_COMPAT_DIR_NLINK)) |
167 | - || (es->feature_incompat & cpu_to_le32(EXT4_FEATURE_INCOMPAT_EXTENTS | EXT4_FEATURE_INCOMPAT_64BIT)) |
168 | + if ((es->s_feature_ro_compat & cpu_to_le32(EXT4_FEATURE_RO_COMPAT_HUGE_FILE | EXT4_FEATURE_RO_COMPAT_DIR_NLINK)) |
169 | + || (es->s_feature_incompat & cpu_to_le32(EXT4_FEATURE_INCOMPAT_EXTENTS | EXT4_FEATURE_INCOMPAT_64BIT)) |
170 | ) { |
171 | id->type = "ext4"; |
172 | } |
173 | - else if (es->feature_compat & cpu_to_le32(EXT3_FEATURE_COMPAT_HAS_JOURNAL)) |
174 | + else if (es->s_feature_compat & cpu_to_le32(EXT3_FEATURE_COMPAT_HAS_JOURNAL)) |
175 | id->type = "ext3"; |
176 | else |
177 | id->type = "ext2"; |
178 | -- |
179 | cgit v0.9.0.1-2-gef13 |