Re: 2.6.0, SiI3112, md raid1 problem: bio too big device (128 > 15)

From: Neil Brown
Date: Wed Dec 24 2003 - 05:52:05 EST


On Tuesday December 23, jim+linux-kernel@xxxxxxxxxxxxx wrote:
> Hi all,
>
> I am having trouble creating a raid1 array under 2.6.0. I am able to
> create raid0 and raid5 mds, but raid1s fail with "bio too big device hde3
> (128 > 15)", which doesn't tell me a lot. I can see it's in
> drivers/block/ll_rw_blk.c, right at the boundary with the device driver,
> but I'm not enough of a kernel wonk to find out a lot more.

This is a raid1 bug.
Some block devices have limits on the sizes of io requests that they
can handle, and advertise these limits with ->max_sectors and
->merge_bvec_fn (and a few others). Any device MUST be able to accept
a single page IO at any offset.

When raid1 does a 'resync' it does all IO in 64K requests, ignoring
the restrictions.
Getting raid1 resync to handle the restrictions is non-trivial (I have
code, but it is still buggy).

A simple interim fix is to replace

#define RESYNC_BLOCK_SIZE (64*1024)

with

#define RESYNC_BLOCK_SIZE PAGE_SIZE

NeilBrown
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/