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

Reply via email to