--- linux-2.6.16/drivers/md/md.c.orig 2006-06-26 11:28:09.330393250 +0200 +++ linux-2.6.16/drivers/md/md.c 2006-06-26 11:29:11.958307250 +0200 @@ -1022,6 +1022,11 @@ if (rdev->sb_size & bmask) rdev-> sb_size = (rdev->sb_size | bmask)+1; + if (sb->level == cpu_to_le32(LEVEL_MULTIPATH)) + rdev->desc_nr = -1; + else + rdev->desc_nr = le32_to_cpu(sb->dev_number); + if (refdev == 0) ret = 1; else { @@ -1116,7 +1121,6 @@ if (mddev->level != LEVEL_MULTIPATH) { int role; - rdev->desc_nr = le32_to_cpu(sb->dev_number); role = le16_to_cpu(sb->dev_roles[rdev->desc_nr]); switch(role) { case 0xffff: /* spare */