<br><font size=2 face="sans-serif">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:</font>
<br>
<br><font size=2 face="sans-serif">dmraid -s -vv</font>
<br><font size=2 face="sans-serif">ERROR: pdc: device /dev/hde broken in
RAID set "pdc_acdgjjgge" [1/2]</font>
<br><font size=2 face="sans-serif">ERROR: keeping degraded mirror set "pdc_acdgjjgge"</font>
<br><font size=2 face="sans-serif">ERROR: pdc: device /dev/hdg broken in
RAID set "pdc_bdbachbhfh" [1/2]</font>
<br><font size=2 face="sans-serif">ERROR: keeping degraded mirror set "pdc_bdbachbhfh"</font>
<br><font size=2 face="sans-serif">*** Set</font>
<br><font size=2 face="sans-serif">name   : pdc_acdgjjgge</font>
<br><font size=2 face="sans-serif">size   : 78150656</font>
<br><font size=2 face="sans-serif">stride : 128</font>
<br><font size=2 face="sans-serif">type   : mirror</font>
<br><font size=2 face="sans-serif">status : broken</font>
<br><font size=2 face="sans-serif">subsets: 0</font>
<br><font size=2 face="sans-serif">devs   : 1</font>
<br><font size=2 face="sans-serif">spares : 0</font>
<br><font size=2 face="sans-serif">*** Set</font>
<br><font size=2 face="sans-serif">name   : pdc_bdbachbhfh</font>
<br><font size=2 face="sans-serif">size   : 78150656</font>
<br><font size=2 face="sans-serif">stride : 128</font>
<br><font size=2 face="sans-serif">type   : mirror</font>
<br><font size=2 face="sans-serif">status : broken</font>
<br><font size=2 face="sans-serif">subsets: 0</font>
<br><font size=2 face="sans-serif">devs   : 1</font>
<br><font size=2 face="sans-serif">spares : 0 </font>
<br>
<br>
<br><font size=2 face="sans-serif">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.</font>
<br>
<br><font size=2 face="sans-serif">I modify the way of name the raid set,
use all the disk magic number, and tested successfully in my computer.</font>
<br>
<br><font size=2 face="sans-serif">The following is the patch:</font>
<br>
<br><font size=2 face="sans-serif">--- lib/format/ataraid/pdc.c.orig  
     2004-12-23 21:19:47.000000000 +0800</font>
<br><font size=2 face="sans-serif">+++ lib/format/ataraid/pdc.c  
     2004-12-23 21:56:42.334972696 +0800</font>
<br><font size=2 face="sans-serif">@@ -24,7 +24,14 @@ static const char
*handler = HANDLER;</font>
<br><font size=2 face="sans-serif"> /* FIXME: better name ? */</font>
<br><font size=2 face="sans-serif"> static size_t _name(struct pdc
*pdc, char *str, size_t len)</font>
<br><font size=2 face="sans-serif"> {</font>
<br><font size=2 face="sans-serif">-        return
snprintf(str, len, "pdc_%u", pdc->magic_1) + 1;</font>
<br><font size=2 face="sans-serif">+        int
i, ret;</font>
<br><font size=2 face="sans-serif">+</font>
<br><font size=2 face="sans-serif">+        ret
= snprintf(str, len, "pdc");</font>
<br><font size=2 face="sans-serif">+        for
(i = 0; i < pdc->raid.total_disks; i++) {</font>
<br><font size=2 face="sans-serif">+        
       ret += snprintf(str + ret, len == 0
? 0 : len - ret, "_%8x", </font>
<br><font size=2 face="sans-serif">+        
               
       pdc->raid.disk[i].magic_0);</font>
<br><font size=2 face="sans-serif">+        }</font>
<br><font size=2 face="sans-serif">+        return
ret + 1;</font>
<br><font size=2 face="sans-serif"> }</font>
<br><font size=2 face="sans-serif"> </font>
<br><font size=2 face="sans-serif"> static char *name(struct lib_context
*lc, struct pdc *pdc, int type)</font>
<br>
<br>
<br>
<br><font size=2 face="sans-serif">  Merry Christmas.</font>
<br>