diff -urN ref/drivers/block/blkpg.c read_ahead/drivers/block/blkpg.c --- ref/drivers/block/blkpg.c Mon May 7 19:24:01 2001 +++ read_ahead/drivers/block/blkpg.c Mon May 7 19:00:20 2001 @@ -224,7 +224,7 @@ case BLKRASET: if(!capable(CAP_SYS_ADMIN)) return -EACCES; - if(!dev || arg > 0xff) + if(!dev || (int) arg > 0) return -EINVAL; read_ahead[MAJOR(dev)] = arg; return 0; diff -urN ref/drivers/md/lvm.c read_ahead/drivers/md/lvm.c --- ref/drivers/md/lvm.c Mon May 7 19:24:01 2001 +++ read_ahead/drivers/md/lvm.c Mon May 7 19:23:26 2001 @@ -243,9 +243,13 @@ #include "lvm-internal.h" -#define LVM_CORRECT_READ_AHEAD( a) \ - if ( a < LVM_MIN_READ_AHEAD || \ - a > LVM_MAX_READ_AHEAD) a = LVM_MAX_READ_AHEAD; +#define LVM_CORRECT_READ_AHEAD(a) \ +do { \ + if ((a) < LVM_MIN_READ_AHEAD || \ + (a) > LVM_MAX_READ_AHEAD) \ + (a) = LVM_DEFAULT_READ_AHEAD; \ + read_ahead[MAJOR_NR] = (a); \ +} while(0) #ifndef WRITEA # define WRITEA WRITE @@ -935,6 +939,7 @@ (long) arg > LVM_MAX_READ_AHEAD) return -EINVAL; lv_ptr->lv_read_ahead = (long) arg; + read_ahead[MAJOR_NR] = lv_ptr->lv_read_ahead; break; diff -urN ref/include/linux/lvm.h read_ahead/include/linux/lvm.h --- ref/include/linux/lvm.h Mon May 7 19:24:01 2001 +++ read_ahead/include/linux/lvm.h Mon May 7 19:22:51 2001 @@ -307,8 +307,9 @@ #define LVM_MAX_STRIPES 128 /* max # of stripes */ #define LVM_MAX_SIZE ( 1024LU * 1024 / SECTOR_SIZE * 1024 * 1024) /* 1TB[sectors] */ #define LVM_MAX_MIRRORS 2 /* future use */ -#define LVM_MIN_READ_AHEAD 2 /* minimum read ahead sectors */ -#define LVM_MAX_READ_AHEAD 120 /* maximum read ahead sectors */ +#define LVM_MIN_READ_AHEAD 0 /* minimum read ahead sectors */ +#define LVM_DEFAULT_READ_AHEAD 1024 /* default read ahead sectors for 512k scsi segments */ +#define LVM_MAX_READ_AHEAD 10000 /* maximum read ahead sectors */ #define LVM_MAX_LV_IO_TIMEOUT 60 /* seconds I/O timeout (future use) */ #define LVM_PARTITION 0xfe /* LVM partition id */ #define LVM_NEW_PARTITION 0x8e /* new LVM partition id (10/09/1999) */