patch-2.4.0-test7 linux/drivers/block/md.c

Next file: linux/drivers/block/raid0.c
Previous file: linux/drivers/block/ll_rw_blk.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.4.0-test6/linux/drivers/block/md.c linux/drivers/block/md.c
@@ -1520,22 +1520,22 @@
 		md_size[mdidx(mddev)] = sb->size * data_disks;
 
 	readahead = MD_READAHEAD;
-	if ((sb->level == 0) || (sb->level == 4) || (sb->level == 5))
-		readahead = mddev->sb->chunk_size * 4 * data_disks;
-		if (readahead < data_disks * MAX_SECTORS*512*2)
-			readahead = data_disks * MAX_SECTORS*512*2;
-	else {
+	if ((sb->level == 0) || (sb->level == 4) || (sb->level == 5)) {
+		readahead = (mddev->sb->chunk_size>>PAGE_SHIFT) * 4 * data_disks;
+		if (readahead < data_disks * (MAX_SECTORS>>(PAGE_SHIFT-9))*2)
+			readahead = data_disks * (MAX_SECTORS>>(PAGE_SHIFT-9))*2;
+	} else {
 		if (sb->level == -3)
 			readahead = 0;
 	}
 	md_maxreadahead[mdidx(mddev)] = readahead;
 
-	printk(KERN_INFO "md%d: max total readahead window set to %dk\n",
-		mdidx(mddev), readahead/1024);
+	printk(KERN_INFO "md%d: max total readahead window set to %ldk\n",
+		mdidx(mddev), readahead*(PAGE_SIZE/1024));
 
 	printk(KERN_INFO
-		"md%d: %d data-disks, max readahead per data-disk: %dk\n",
-			mdidx(mddev), data_disks, readahead/data_disks/1024);
+		"md%d: %d data-disks, max readahead per data-disk: %ldk\n",
+			mdidx(mddev), data_disks, readahead/data_disks*(PAGE_SIZE/1024));
 	return 0;
 abort:
 	return 1;
@@ -3318,7 +3318,7 @@
 	/*
 	 * Tune reconstruction:
 	 */
-	window = md_maxreadahead[mdidx(mddev)]/1024;
+	window = MAX_READAHEAD*(PAGE_SIZE/1024);
 	printk(KERN_INFO "md: using %dk window, over a total of %d blocks.\n",window,max_blocks);
 
 	atomic_set(&mddev->recovery_active, 0);

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)