I'm trying to do s/w raid-5 on top of h/w raid-0 and used this patch http://www.dandelion.com/Linux/DAC960.patch-2.2.10 to patch a vanilla 2.2.10 and get support for the eXtremeRAID 1100. Afterwards, the s/w raid patch raid/alpha/raid0145-19990724-2.2.10.gz gave 3 rejects, which I didn't really mind except for the add_partition change to add an extra parameter to the function call. Can I safely ignore? I ended up settling on an add_partition of: ######### static void add_partition (struct gendisk *hd, int minor, int start, int size, int type) { char buf[MAX_DISKNAME_LEN]; struct hd_struct *p = hd->part+minor; p->start_sect = start; p->nr_sects = size; p->type = type; if (hd->major >= DAC960_MAJOR+0 && hd->major <= DAC960_MAJOR+7) printk(" p%d", (minor & ((1 << hd->minor_shift) - 1))); else printk(" %s", disk_name(hd, minor, buf)); } ######### and here's the reject for drivers/block/genhd.c: ######### *************** *** 115,125 **** return buf; } - static void add_partition (struct gendisk *hd, int minor, int start, int size) { - char buf[8]; - hd->part[minor].start_sect = start; - hd->part[minor].nr_sects = size; printk(" %s", disk_name(hd, minor, buf)); } --- 120,135 ---- return buf; } + static void add_partition (struct gendisk *hd, int minor, + int start, int size, int type) { + char buf[MAX_DISKNAME_LEN]; + struct hd_struct *p = hd->part+minor; + + p->start_sect = start; + p->nr_sects = size; + p->type = type; + printk(" %s", disk_name(hd, minor, buf)); } *************** *** 1236,1242 **** { static int first_time = 1; unsigned long first_sector; - char buf[8]; if (first_time) printk("Partition check:\n"); --- 1259,1265 ---- { static int first_time = 1; unsigned long first_sector; + char buf[MAX_DISKNAME_LEN]; if (first_time) printk("Partition check:\n"); ######### Thanks, James
