

For CONFIG_LBD=n case it was passing a u32 into do_div().



 drivers/block/as-iosched.c |    7 ++++---
 include/linux/blkdev.h     |    4 ++--
 2 files changed, 6 insertions(+), 5 deletions(-)

diff -puN drivers/block/as-iosched.c~as-do_div-fix drivers/block/as-iosched.c
--- 25/drivers/block/as-iosched.c~as-do_div-fix	2003-07-14 19:29:10.000000000 -0700
+++ 25-akpm/drivers/block/as-iosched.c	2003-07-14 19:29:50.000000000 -0700
@@ -834,10 +834,11 @@ static void as_update_iohist(struct as_i
 							+ 2*1024*64);
 
 		aic->seek_samples += 256;
-		aic->seek_total += 256*seek_dist;
+		aic->seek_total += (u64)256*seek_dist;
 		if (aic->seek_samples) {
-			aic->seek_mean = aic->seek_total + 128;
-			sector_div(aic->seek_mean, aic->seek_samples);
+			u64 total = aic->seek_total + (aic->seek_samples>>1);
+			do_div(total, aic->seek_samples);
+			aic->seek_mean = (sector_t)total;
 		}
 		aic->seek_samples = (aic->seek_samples>>1)
 					+ (aic->seek_samples>>2);
diff -puN include/linux/blkdev.h~as-do_div-fix include/linux/blkdev.h
--- 25/include/linux/blkdev.h~as-do_div-fix	2003-07-14 19:29:10.000000000 -0700
+++ 25-akpm/include/linux/blkdev.h	2003-07-14 19:29:10.000000000 -0700
@@ -44,9 +44,9 @@ struct as_io_context {
 	unsigned long ttime_samples;
 	unsigned long ttime_mean;
 	/* Layout pattern */
-	long seek_samples;
+	unsigned int seek_samples;
 	sector_t last_request_pos;
-	sector_t seek_total;
+	u64 seek_total;
 	sector_t seek_mean;
 };
 

_
