Linus (et al) There is a bug in the code which sets up the hash table for finding devices in a "linear" mode RAID array. If the last device is the same size as the smallest device, then hash table that is allocated to store pointers to devices is overflowed. This has manifested in a repeatable Oops at boot time for Roberto Ragusa <[EMAIL PROTECTED]>. I think it can be fixed simply by just removing the final "table->dev1 = NULL" as that is what causes the problem, and I don't think that it is ever necessary. However, this patch does a little more and tidies up the code a bit, in particular removing an exit from the middle of a loop (which should be avoided where possible). patch against 2.4.0-test12-pre8 NeilBrown --- ./drivers/md/linear.c 2000/12/10 22:37:18 1.3 +++ ./drivers/md/linear.c 2000/12/10 22:38:14 1.4 @@ -84,21 +84,19 @@ dev_info_t *disk = conf->disks + j; if (size < 0) { - table->dev1 = disk; - table++; + table[-1].dev1 = disk; } size += disk->size; - while (size) { + while (size>0) { table->dev0 = disk; - size -= conf->smallest->size; - if (size < 0) - break; table->dev1 = NULL; + size -= conf->smallest->size; table++; } } - table->dev1 = NULL; + if (table-conf->hash_table != nb_zone) + BUG(); return 0; - To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to [EMAIL PROTECTED]