On Wednesday October 18, estair@xxxxxxx wrote: > > > I've provided the requested info, attached as two files (typescript > output): Thanks for persisting with this. There is one bug in mdadm that is causing all of these problems. It only affect the 'offset' layout with raid10. The fix is http://neil.brown.name/git?p=mdadm;a=commitdiff;h=702b557b1c9 and is included below. You might like to grab the latest source from git://neil.brown.name/mdadm and compile that, or just apply the patch. Thanks again, NeilBrown ------------------------- Fix bugs related to raid10 and the new offset layout. Need to mask of bits above the bottom 16 when calculating number of copies. ### Diffstat output ./ChangeLog | 1 + ./Create.c | 2 +- ./util.c | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff .prev/ChangeLog ./ChangeLog --- .prev/ChangeLog 2006-10-19 16:38:07.000000000 +1000 +++ ./ChangeLog 2006-10-19 16:38:24.000000000 +1000 @@ -13,6 +13,7 @@ Changes Prior to this release initramfs, but device doesn't yet exist in /dev. - When --assemble --scan is run, if all arrays that could be found have already been started, don't report an error. + - Fix a couple of bugs related to raid10 and the new 'offset' layout. Changes Prior to 2.5.4 release - When creating devices in /dev/md/ create matching symlinks diff .prev/Create.c ./Create.c --- .prev/Create.c 2006-10-19 16:38:07.000000000 +1000 +++ ./Create.c 2006-10-19 16:38:24.000000000 +1000 @@ -363,7 +363,7 @@ int Create(struct supertype *st, char *m * which is array.size * raid_disks / ncopies; * .. but convert to sectors. */ - int ncopies = (layout>>8) * (layout & 255); + int ncopies = ((layout>>8) & 255) * (layout & 255); bitmapsize = (unsigned long long)size * raiddisks / ncopies * 2; /* printf("bms=%llu as=%d rd=%d nc=%d\n", bitmapsize, size, raiddisks, ncopies);*/ } else diff .prev/util.c ./util.c --- .prev/util.c 2006-10-19 16:38:07.000000000 +1000 +++ ./util.c 2006-10-19 16:38:24.000000000 +1000 @@ -179,7 +179,7 @@ int enough(int level, int raid_disks, in /* This is the tricky one - we need to check * which actual disks are present. */ - copies = (layout&255)* (layout>>8); + copies = (layout&255)* ((layout>>8) & 255); first=0; do { /* there must be one of the 'copies' form 'first' */ - To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html