patch-2.1.63 linux/mm/filemap.c
Next file: linux/net/ipv4/ip_fragment.c
Previous file: linux/kernel/ksyms.c
Back to the patch index
Back to the overall index
- Lines: 59
- Date:
Sat Nov 8 11:39:13 1997
- Orig file:
v2.1.62/linux/mm/filemap.c
- Orig date:
Sat Oct 25 02:44:18 1997
diff -u --recursive --new-file v2.1.62/linux/mm/filemap.c linux/mm/filemap.c
@@ -24,6 +24,7 @@
#include <linux/swap.h>
#include <linux/smp.h>
#include <linux/smp_lock.h>
+#include <linux/blkdev.h>
#include <asm/system.h>
#include <asm/pgtable.h>
@@ -445,12 +446,20 @@
#define MIN_READAHEAD PageAlignSize(4096*3)
#endif
+static inline int get_max_readahead(struct inode * inode)
+{
+ if (!inode->i_dev || !max_readahead[MAJOR(inode->i_dev)])
+ return MAX_READAHEAD;
+ return max_readahead[MAJOR(inode->i_dev)][MINOR(inode->i_dev)];
+}
+
static inline unsigned long generic_file_readahead(int reada_ok, struct file * filp, struct inode * inode,
unsigned long ppos, struct page * page,
unsigned long page_cache)
{
unsigned long max_ahead, ahead;
unsigned long raend;
+ int max_readahead = get_max_readahead(inode);
raend = filp->f_raend & PAGE_MASK;
max_ahead = 0;
@@ -534,8 +543,8 @@
filp->f_ramax += filp->f_ramax;
- if (filp->f_ramax > MAX_READAHEAD)
- filp->f_ramax = MAX_READAHEAD;
+ if (filp->f_ramax > max_readahead)
+ filp->f_ramax = max_readahead;
#ifdef PROFILE_READAHEAD
profile_readahead((reada_ok == 2), filp);
@@ -562,6 +571,7 @@
ssize_t error, read;
size_t pos, pgpos, page_cache;
int reada_ok;
+ int max_readahead = get_max_readahead(inode);
if (!access_ok(VERIFY_WRITE, buf, count))
return -EFAULT;
@@ -608,8 +618,8 @@
if (reada_ok && filp->f_ramax < MIN_READAHEAD)
filp->f_ramax = MIN_READAHEAD;
- if (filp->f_ramax > MAX_READAHEAD)
- filp->f_ramax = MAX_READAHEAD;
+ if (filp->f_ramax > max_readahead)
+ filp->f_ramax = max_readahead;
}
for (;;) {
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov