A patch for Promise RAID1 broken

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




I have a Promise FastTrak100 raid card, and I have configured a RAID 1 driver without spare disk, and installed a Fedora Core 3 in another hard disk. When I use the dmraid, it report find two raid 1 drivers, but both are broken, the following is the error message:

dmraid -s -vv
ERROR: pdc: device /dev/hde broken in RAID set "pdc_acdgjjgge" [1/2]
ERROR: keeping degraded mirror set "pdc_acdgjjgge"
ERROR: pdc: device /dev/hdg broken in RAID set "pdc_bdbachbhfh" [1/2]
ERROR: keeping degraded mirror set "pdc_bdbachbhfh"
*** Set
name   : pdc_acdgjjgge
size   : 78150656
stride : 128
type   : mirror
status : broken
subsets: 0
devs   : 1
spares : 0
*** Set
name   : pdc_bdbachbhfh
size   : 78150656
stride : 128
type   : mirror
status : broken
subsets: 0
devs   : 1
spares : 0


I checked the code, and found that the name of raid driver is named by the magic number of the raid disk, but the RAID1 contain two disks, have different magic numbers, and the dmraid use the name to find the disks in the same raid set, so the dmraid found two raid set, but both broken.

I modify the way of name the raid set, use all the disk magic number, and tested successfully in my computer.

The following is the patch:

--- lib/format/ataraid/pdc.c.orig        2004-12-23 21:19:47.000000000 +0800
+++ lib/format/ataraid/pdc.c        2004-12-23 21:56:42.334972696 +0800
@@ -24,7 +24,14 @@ static const char *handler = HANDLER;
 /* FIXME: better name ? */
 static size_t _name(struct pdc *pdc, char *str, size_t len)
 {
-        return snprintf(str, len, "pdc_%u", pdc->magic_1) + 1;
+        int i, ret;
+
+        ret = snprintf(str, len, "pdc");
+        for (i = 0; i < pdc->raid.total_disks; i++) {
+                ret += snprintf(str + ret, len == 0 ? 0 : len - ret, "_%8x",
+                                pdc->raid.disk[i].magic_0);
+        }
+        return ret + 1;
 }
 
 static char *name(struct lib_context *lc, struct pdc *pdc, int type)



  Merry Christmas.

[Index of Archives]     [Linux RAID]     [Linux Device Mapper]     [Linux IDE]     [Linux SCSI]     [Kernel]     [Linux Books]     [Linux Admin]     [GFS]     [RPM]     [Yosemite Campgrounds]     [AMD 64]

  Powered by Linux