Magellan Linux

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 Parent Directory | Revision Log Revision Log


Revision 1857 - (show annotations) (download)
Thu Jul 26 09:23:48 2012 UTC (11 years, 9 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