Magellan Linux

Annotation of /trunk/hal/patches/hal-0.5.7.1-ipod-nano.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 144 - (hide annotations) (download)
Tue May 8 20:06:05 2007 UTC (17 years, 1 month ago) by niro
File size: 1411 byte(s)
-import

1 niro 144 --- hal-0.5.7.1/volume_id/via_raid.c 2006-02-21 20:15:17.000000000 +0100
2     +++ hal-0.5.7.1/volume_id/via_raid.c-new 2006-12-16 17:48:31.000000000 +0100
3     @@ -3,6 +3,9 @@
4     *
5     * Copyright (C) 2005 Kay Sievers <kay.sievers@vrfy.org>
6     *
7     + * Based on information taken from dmraid:
8     + * Copyright (C) 2004-2006 Heinz Mauelshagen, Red Hat GmbH
9     + *
10     * This program is free software; you can redistribute it and/or modify it
11     * under the terms of the GNU General Public License as published by the
12     * Free Software Foundation version 2 of the License.
13     @@ -31,7 +34,7 @@
14     uint16_t signature;
15     uint8_t version_number;
16     struct via_array {
17     - uint16_t disk_bits;
18     + uint16_t disk_bit_mask;
19     uint8_t disk_array_ex;
20     uint32_t capacity_low;
21     uint32_t capacity_high;
22     @@ -43,6 +46,17 @@
23    
24     #define VIA_SIGNATURE 0xAA55
25    
26     +/* 8 bit checksum on first 50 bytes of metadata. */
27     +static uint8_t meta_checksum(struct via_meta *via)
28     +{
29     + uint8_t i = 50, sum = 0;
30     +
31     + while (i--)
32     + sum += ((uint8_t*) via)[i];
33     +
34     + return sum == via->checksum;
35     +}
36     +
37     int volume_id_probe_via_raid(struct volume_id *id, uint64_t off, uint64_t size)
38     {
39     const uint8_t *buf;
40     @@ -68,6 +82,9 @@
41     if (via->version_number > 1)
42     return -1;
43    
44     + if (!meta_checksum(via))
45     + return -1;
46     +
47     volume_id_set_usage(id, VOLUME_ID_RAID);
48     snprintf(id->type_version, sizeof(id->type_version)-1, "%u", via->version_number);
49     id->type = "via_raid_member";