diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2017-07-25 14:22:08 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2017-07-25 14:22:08 +0200 |
commit | 73c47f6c41c97fb452b4747088543f2c2166830a (patch) | |
tree | 7caf2112b732b4294a85a382de7d0a5a7265fa19 | |
parent | 5c123ac2082530ef4426737183ff76fe4595e1ff (diff) | |
download | busybox-w32-73c47f6c41c97fb452b4747088543f2c2166830a.tar.gz busybox-w32-73c47f6c41c97fb452b4747088543f2c2166830a.tar.bz2 busybox-w32-73c47f6c41c97fb452b4747088543f2c2166830a.zip |
volume_id: enable minix detection
function old new delta
volume_id_probe_minix - 87 +87
fs2 64 68 +4
------------------------------------------------------------------------------
(add/remove: 2/0 grow/shrink: 1/0 up/down: 91/0) Total: 91 bytes
Patch by wdlkmpx <wdlkmpx@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r-- | util-linux/volume_id/minix.c (renamed from util-linux/volume_id/unused_minix.c) | 59 | ||||
-rw-r--r-- | util-linux/volume_id/volume_id.c | 1 | ||||
-rw-r--r-- | util-linux/volume_id/volume_id_internal.h | 2 |
3 files changed, 35 insertions, 27 deletions
diff --git a/util-linux/volume_id/unused_minix.c b/util-linux/volume_id/minix.c index 443dbc272..c934f9ead 100644 --- a/util-linux/volume_id/unused_minix.c +++ b/util-linux/volume_id/minix.c | |||
@@ -17,13 +17,12 @@ | |||
17 | * License along with this library; if not, write to the Free Software | 17 | * License along with this library; if not, write to the Free Software |
18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | 18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
19 | */ | 19 | */ |
20 | //config:config FEATURE_VOLUMEID_MINIX | ||
21 | //config: bool "minix filesystem" | ||
22 | //config: default y | ||
23 | //config: depends on VOLUMEID | ||
20 | 24 | ||
21 | //kbuild:### lib-$(CONFIG_FEATURE_VOLUMEID_MINIX) += minix.o | 25 | //kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_MINIX) += minix.o |
22 | |||
23 | //config:### config FEATURE_VOLUMEID_MINIX | ||
24 | //config:### bool "minix filesystem" | ||
25 | //config:### default y | ||
26 | //config:### depends on VOLUMEID | ||
27 | 26 | ||
28 | #include "volume_id_internal.h" | 27 | #include "volume_id_internal.h" |
29 | 28 | ||
@@ -40,43 +39,53 @@ struct minix_super_block { | |||
40 | uint32_t s_zones; | 39 | uint32_t s_zones; |
41 | } PACKED; | 40 | } PACKED; |
42 | 41 | ||
43 | #define MINIX_SUPERBLOCK_OFFSET 0x400 | 42 | /* V3 minix super-block data on disk */ |
43 | struct minix3_super_block { | ||
44 | uint32_t s_ninodes; | ||
45 | uint16_t s_pad0; | ||
46 | uint16_t s_imap_blocks; | ||
47 | uint16_t s_zmap_blocks; | ||
48 | uint16_t s_firstdatazone; | ||
49 | uint16_t s_log_zone_size; | ||
50 | uint16_t s_pad1; | ||
51 | uint32_t s_max_size; | ||
52 | uint32_t s_zones; | ||
53 | uint16_t s_magic; | ||
54 | uint16_t s_pad2; | ||
55 | uint16_t s_blocksize; | ||
56 | uint8_t s_disk_version; | ||
57 | } PACKED; | ||
58 | |||
59 | #define MINIX_SUPERBLOCK_OFFSET 0x400 | ||
44 | 60 | ||
45 | int FAST_FUNC volume_id_probe_minix(struct volume_id *id, uint64_t off) | 61 | int FAST_FUNC volume_id_probe_minix(struct volume_id *id /*, uint64_t off*/) |
46 | { | 62 | { |
63 | #define off ((uint64_t)0) | ||
47 | struct minix_super_block *ms; | 64 | struct minix_super_block *ms; |
65 | struct minix3_super_block *ms3; | ||
48 | 66 | ||
49 | dbg("probing at offset 0x%llx", (unsigned long long) off); | 67 | dbg("probing at offset 0x%llx", (unsigned long long) off); |
50 | 68 | ||
51 | ms = volume_id_get_buffer(id, off + MINIX_SUPERBLOCK_OFFSET, 0x200); | 69 | ms = volume_id_get_buffer(id, off + MINIX_SUPERBLOCK_OFFSET, 0x200); |
52 | if (ms == NULL) | 70 | if (ms == NULL) |
53 | return -1; | 71 | return -1; |
54 | 72 | if (ms->s_magic == cpu_to_le16(0x137F)) /* minix V1 fs, 14 char names */ | |
55 | if (ms->s_magic == cpu_to_le16(0x137f)) { | ||
56 | // id->type_version[0] = '1'; | ||
57 | goto found; | 73 | goto found; |
58 | } | 74 | if (ms->s_magic == cpu_to_le16(0x138F)) /* minix V1 fs, 30 char names */ |
59 | |||
60 | if (ms->s_magic == cpu_to_le16(0x1387)) { | ||
61 | // id->type_version[0] = '1'; | ||
62 | goto found; | 75 | goto found; |
63 | } | 76 | if (ms->s_magic == cpu_to_le16(0x2468)) /* minix V2 fs, 14 char names */ |
64 | 77 | goto found; | |
65 | if (ms->s_magic == cpu_to_le16(0x2468)) { | 78 | if (ms->s_magic == cpu_to_le16(0x2478)) /* minix V2 fs, 30 char names */ |
66 | // id->type_version[0] = '2'; | ||
67 | goto found; | 79 | goto found; |
68 | } | ||
69 | 80 | ||
70 | if (ms->s_magic == cpu_to_le16(0x2478)) { | 81 | ms3 = (void*)ms; |
71 | // id->type_version[0] = '2'; | 82 | if (ms3->s_magic == cpu_to_le16(0x4d5a)) /* minix V3 fs, 60 char names */ |
72 | goto found; | 83 | goto found; |
73 | } | ||
74 | 84 | ||
75 | return -1; | 85 | return -1; |
76 | 86 | ||
77 | found: | 87 | found: |
78 | // id->type_version[1] = '\0'; | ||
79 | // volume_id_set_usage(id, VOLUME_ID_FILESYSTEM); | 88 | // volume_id_set_usage(id, VOLUME_ID_FILESYSTEM); |
80 | // id->type = "minix"; | 89 | IF_FEATURE_BLKID_TYPE(id->type = "minix";) |
81 | return 0; | 90 | return 0; |
82 | } | 91 | } |
diff --git a/util-linux/volume_id/volume_id.c b/util-linux/volume_id/volume_id.c index 5bb95994b..85315ced6 100644 --- a/util-linux/volume_id/volume_id.c +++ b/util-linux/volume_id/volume_id.c | |||
@@ -42,7 +42,6 @@ | |||
42 | #define ENABLE_FEATURE_VOLUMEID_VIARAID 0 | 42 | #define ENABLE_FEATURE_VOLUMEID_VIARAID 0 |
43 | 43 | ||
44 | /* These filesystems also have no label or uuid: */ | 44 | /* These filesystems also have no label or uuid: */ |
45 | #define ENABLE_FEATURE_VOLUMEID_MINIX 0 | ||
46 | #define ENABLE_FEATURE_VOLUMEID_HPFS 0 | 45 | #define ENABLE_FEATURE_VOLUMEID_HPFS 0 |
47 | #define ENABLE_FEATURE_VOLUMEID_UFS 0 | 46 | #define ENABLE_FEATURE_VOLUMEID_UFS 0 |
48 | 47 | ||
diff --git a/util-linux/volume_id/volume_id_internal.h b/util-linux/volume_id/volume_id_internal.h index 759a832e6..0eaea9b34 100644 --- a/util-linux/volume_id/volume_id_internal.h +++ b/util-linux/volume_id/volume_id_internal.h | |||
@@ -193,7 +193,7 @@ int FAST_FUNC volume_id_probe_luks(struct volume_id *id /*,uint64_t off*/); | |||
193 | 193 | ||
194 | //int FAST_FUNC volume_id_probe_mac_partition_map(struct volume_id *id /*,uint64_t off*/); | 194 | //int FAST_FUNC volume_id_probe_mac_partition_map(struct volume_id *id /*,uint64_t off*/); |
195 | 195 | ||
196 | //int FAST_FUNC volume_id_probe_minix(struct volume_id *id /*,uint64_t off*/); | 196 | int FAST_FUNC volume_id_probe_minix(struct volume_id *id /*, uint64_t off*/); |
197 | 197 | ||
198 | //int FAST_FUNC volume_id_probe_msdos_part_table(struct volume_id *id /*,uint64_t off*/); | 198 | //int FAST_FUNC volume_id_probe_msdos_part_table(struct volume_id *id /*,uint64_t off*/); |
199 | 199 | ||