I've just ifdef'd out the sanity check. It does work this way but remember, this check is a feature, not a bug ;-) It detects broken raid bioses which assign an erroneous number of blocks (not divisible). So, if you fill up a filesystem up to a non existing block, you will get an I/O error and data is lost on that sector. My nvidia raid bios is broken in such away, but I have not encountered any problems with the below fix, for many months running with it. In the long run, dmraid should truncate the target length, so that it will be divisible by the chunk size, to work around broken bioses. rc11 should do this allready, at least from what I've hard. Some people who report problems with rc11 may have forgotten to rebuild their initramfs. So I'm unshure if rc11 is still broken or not. In any case the below fix will make it usable.
Locate <kernel-source-dir>drivers/md/dm-stripe.c and surround the sanity check starting at line 108 with #if 0 #endif Save and recompile your kernel and maybe update your initramfs. It should look like this: #if 0 if (ti->len & (chunk_size - 1)) { ti->error = "Target length not divisible by " "chunk size"; /* return -EINVAL;*/ } width = ti->len; if (sector_div(width, stripes)) { ti->error = "Target length not divisible by " "number of stripes"; /* return -EINVAL;*/ } #endif -- DMRAID stopped to work in kernels > 2.6.15 https://launchpad.net/bugs/54246 -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs