Magellan Linux

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


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