Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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

1 --- 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";