Magellan Linux

Annotation of /trunk/mkinitrd-magellan/busybox/util-linux/volume_id/unused_silicon_raid.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 984 - (hide annotations) (download)
Sun May 30 11:32:42 2010 UTC (14 years ago) by niro
File MIME type: text/plain
File size: 2121 byte(s)
-updated to busybox-1.16.1 and enabled blkid/uuid support in default config
1 niro 816 /*
2     * volume_id - reads filesystem label and uuid
3     *
4     * Copyright (C) 2005 Kay Sievers <kay.sievers@vrfy.org>
5     *
6     * This library is free software; you can redistribute it and/or
7     * modify it under the terms of the GNU Lesser General Public
8     * License as published by the Free Software Foundation; either
9     * version 2.1 of the License, or (at your option) any later version.
10     *
11     * This library is distributed in the hope that it will be useful,
12     * but WITHOUT ANY WARRANTY; without even the implied warranty of
13     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14     * Lesser General Public License for more details.
15     *
16     * You should have received a copy of the GNU Lesser General Public
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
19     */
20    
21     #include "volume_id_internal.h"
22    
23     struct silicon_meta {
24     uint8_t unknown0[0x2E];
25     uint8_t ascii_version[0x36 - 0x2E];
26     uint8_t diskname[0x56 - 0x36];
27     uint8_t unknown1[0x60 - 0x56];
28     uint32_t magic;
29     uint32_t unknown1a[0x6C - 0x64];
30     uint32_t array_sectors_low;
31     uint32_t array_sectors_high;
32     uint8_t unknown2[0x78 - 0x74];
33     uint32_t thisdisk_sectors;
34     uint8_t unknown3[0x100 - 0x7C];
35     uint8_t unknown4[0x104 - 0x100];
36     uint16_t product_id;
37     uint16_t vendor_id;
38     uint16_t minor_ver;
39     uint16_t major_ver;
40 niro 984 } PACKED;
41 niro 816
42     #define SILICON_MAGIC 0x2F000000
43    
44 niro 984 int FAST_FUNC volume_id_probe_silicon_medley_raid(struct volume_id *id, uint64_t off, uint64_t size)
45 niro 816 {
46     uint64_t meta_off;
47     struct silicon_meta *sil;
48    
49     dbg("probing at offset 0x%llx, size 0x%llx",
50     (unsigned long long) off, (unsigned long long) size);
51    
52     if (size < 0x10000)
53     return -1;
54    
55     meta_off = ((size / 0x200)-1) * 0x200;
56     sil = volume_id_get_buffer(id, off + meta_off, 0x200);
57     if (sil == NULL)
58     return -1;
59    
60     if (sil->magic != cpu_to_le32(SILICON_MAGIC))
61     return -1;
62    
63     // volume_id_set_usage(id, VOLUME_ID_RAID);
64     // snprintf(id->type_version, sizeof(id->type_version)-1, "%u.%u",
65     // le16_to_cpu(sil->major_ver), le16_to_cpu(sil->minor_ver));
66     // id->type = "silicon_medley_raid_member";
67    
68     return 0;
69     }