<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">
From: "H. Peter Anvin" &lt;hpa@zytor.com&gt;

This patch merges the latest change (make sure the readahead size is
always a multiple of the stripe size) from raid5.c into raid6main.c.



---

 drivers/md/raid6main.c |   12 +++++++++++-
 1 files changed, 11 insertions(+), 1 deletion(-)

diff -puN drivers/md/raid6main.c~raid6-readahead-fix drivers/md/raid6main.c
--- 25/drivers/md/raid6main.c~raid6-readahead-fix	2004-01-09 18:31:39.000000000 -0800
+++ 25-akpm/drivers/md/raid6main.c	2004-01-09 18:31:39.000000000 -0800
@@ -5,7 +5,7 @@
  *	   Copyright (C) 2002, 2003 H. Peter Anvin
  *
  * RAID-6 management functions.  This code is derived from raid5.c.
- * Last merge from raid5.c bkcvs version 1.78.
+ * Last merge from raid5.c bkcvs version 1.79 (kernel 2.6.1).
  *
  * Thanks to Penguin Computing for making the RAID-6 development possible
  * by donating a test server!
@@ -1756,6 +1756,16 @@ static int run (mddev_t *mddev)
 
 	print_raid6_conf(conf);
 
+	/* read-ahead size must cover a whole stripe, which is
+	 * (n-2) * chunksize where 'n' is the number of raid devices
+	 */
+	{
+		int stripe = (mddev-&gt;raid_disks-2) * mddev-&gt;chunk_size
+			/ PAGE_CACHE_SIZE;
+		if (mddev-&gt;queue-&gt;backing_dev_info.ra_pages &lt; stripe)
+			mddev-&gt;queue-&gt;backing_dev_info.ra_pages = stripe;
+	}
+
 	/* Ok, everything is just fine now */
 	mddev-&gt;array_size =  mddev-&gt;size * (mddev-&gt;raid_disks - 2);
 	return 0;

_
</pre></body></html>