/[pkg-src]/trunk/busybox/patches/busybox-1.20.2-use-common-bb_e2fs_defs.h-for-ext2_3_4-constants-and-structs.patch |
Annotation 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 -
(hide 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 | niro | 1857 | 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 |