### Comments for ChangeSet stripe to be effective. This patch sets ra_pages appropriately. ----------- Diffstat output ------------ ./drivers/md/raid0.c | 16 ++++++++++++++++ ./drivers/md/raid5.c | 10 ++++++++++ 2 files changed, 26 insertions(+) diff ./drivers/md/raid0.c~current~ ./drivers/md/raid0.c --- ./drivers/md/raid0.c~current~ 2003-11-21 14:10:24.000000000 +1100 +++ ./drivers/md/raid0.c 2003-11-21 14:15:45.000000000 +1100 @@ -311,6 +311,22 @@ static int raid0_run (mddev_t *mddev) conf->hash_spacing++; } + /* calculate the max read-ahead size. + * For read-ahead of large files to be effective, we need to + * readahead at least a whole stripe. i.e. number of devices + * multiplied by chunk size. + * If an individual device has an ra_pages greater than the + * chunk size, then we will not drive that device as hard as it + * wants. We consider this a configuration error: a larger + * chunksize should be used in that case. + */ + { + int stripe = mddev->raid_disks * mddev->chunk_size / PAGE_CACHE_SIZE; + if (mddev->queue->backing_dev_info.ra_pages < stripe) + mddev->queue->backing_dev_info.ra_pages = stripe; + } + + blk_queue_merge_bvec(mddev->queue, raid0_mergeable_bvec); return 0; diff ./drivers/md/raid5.c~current~ ./drivers/md/raid5.c --- ./drivers/md/raid5.c~current~ 2003-11-21 13:59:18.000000000 +1100 +++ ./drivers/md/raid5.c 2003-11-21 14:16:52.000000000 +1100 @@ -1571,6 +1571,16 @@ memory = conf->max_nr_stripes * (sizeof( print_raid5_conf(conf); + /* read-ahead size must cover a whole stripe, which is + * (n-1) * chunksize where 'n' is the number of raid devices + */ + { + int stripe = (mddev->raid_disks-1) * mddev->chunk_size + / PAGE_CACHE_SIZE; + if (mddev->queue->backing_dev_info.ra_pages < stripe) + mddev->queue->backing_dev_info.ra_pages = stripe; + } + /* Ok, everything is just fine now */ mddev->array_size = mddev->size * (mddev->raid_disks - 1); return 0; - To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html