On 07/05/12 16:04, Bernd Schubert wrote:
> I think you need something like this. I thought there already went
> something in in recent kernel, will check it later on today.
>
>
>
> Index: 2.6.32.13/drivers/md/raid0.c
> ===================================================================
> --- 2.6.32.13.orig/drivers/md/raid0.c
> +++ 2.6.32.13/drivers/md/raid0.c
> @@ -96,6 +96,7 @@ static int create_strip_zones(mddev_t *m
> int cnt;
> char b[BDEVNAME_SIZE];
> raid0_conf_t *conf = kzalloc(sizeof(*conf), GFP_KERNEL);
> + unsigned int opt_io_size;
>
> if (!conf)
> return -ENOMEM;
> @@ -256,9 +257,16 @@ static int create_strip_zones(mddev_t *m
> goto abort;
> }
>
> + /*
> + * To send large IOs to the drives we need sufficient segments
> + * for our own queue first.
> + */
> + opt_io_size = (mddev->chunk_sectors << 9) * mddev->raid_disks;
> + blk_queue_max_phys_segments(mddev->queue, opt_io_size >> PAGE_SHIFT);
> + blk_queue_max_hw_segments(mddev->queue, opt_io_size >> PAGE_SHIFT);
> +
> blk_queue_io_min(mddev->queue, mddev->chunk_sectors << 9);
> - blk_queue_io_opt(mddev->queue,
> - (mddev->chunk_sectors << 9) * mddev->raid_disks);
> + blk_queue_io_opt(mddev->queue, opt_io_size);
>
> printk(KERN_INFO "raid0: done.\n");
> mddev->private = conf;
>
>
> Cheers,
> Bernd
>
Thanks for your answer, Bernd!
I've tested 3.3 and 3.4-rc1 and there it works. Now, I'll test latest
linux-3.2.y from linux-stable. Perhaps I'll start a "git bisect" later
on if the fix commit isn't that obvious.
Cheers,
Sebastian
--
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
[ATA RAID]
[Linux SCSI Target Infrastructure]
[Managing RAID on Linux]
[Linux IDE]
[Linux SCSI]
[Linux Hams]
[Device-Mapper]
[Kernel]
[Linux Books]
[Linux Admin]
[Linux Net]
[GFS]
[RPM]
[git]
[Photos]
[Yosemite Photos]
[Yosemite News]
[AMD 64]
[Linux Networking]