|
|
@@ -29,7 +29,6 @@
|
|
|
#include <linux/pagevec.h>
|
|
|
#include <linux/blkdev.h>
|
|
|
#include <linux/security.h>
|
|
|
-#include <linux/syscalls.h>
|
|
|
#include <linux/cpuset.h>
|
|
|
#include <linux/hardirq.h> /* for BUG_ON(!in_atomic()) only */
|
|
|
#include <linux/memcontrol.h>
|
|
|
@@ -1478,44 +1477,6 @@ generic_file_aio_read(struct kiocb *iocb, const struct iovec *iov,
|
|
|
}
|
|
|
EXPORT_SYMBOL(generic_file_aio_read);
|
|
|
|
|
|
-static ssize_t
|
|
|
-do_readahead(struct address_space *mapping, struct file *filp,
|
|
|
- pgoff_t index, unsigned long nr)
|
|
|
-{
|
|
|
- if (!mapping || !mapping->a_ops || !mapping->a_ops->readpage)
|
|
|
- return -EINVAL;
|
|
|
-
|
|
|
- force_page_cache_readahead(mapping, filp, index, nr);
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
-SYSCALL_DEFINE(readahead)(int fd, loff_t offset, size_t count)
|
|
|
-{
|
|
|
- ssize_t ret;
|
|
|
- struct file *file;
|
|
|
-
|
|
|
- ret = -EBADF;
|
|
|
- file = fget(fd);
|
|
|
- if (file) {
|
|
|
- if (file->f_mode & FMODE_READ) {
|
|
|
- struct address_space *mapping = file->f_mapping;
|
|
|
- pgoff_t start = offset >> PAGE_CACHE_SHIFT;
|
|
|
- pgoff_t end = (offset + count - 1) >> PAGE_CACHE_SHIFT;
|
|
|
- unsigned long len = end - start + 1;
|
|
|
- ret = do_readahead(mapping, file, start, len);
|
|
|
- }
|
|
|
- fput(file);
|
|
|
- }
|
|
|
- return ret;
|
|
|
-}
|
|
|
-#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
|
|
|
-asmlinkage long SyS_readahead(long fd, loff_t offset, long count)
|
|
|
-{
|
|
|
- return SYSC_readahead((int) fd, offset, (size_t) count);
|
|
|
-}
|
|
|
-SYSCALL_ALIAS(sys_readahead, SyS_readahead);
|
|
|
-#endif
|
|
|
-
|
|
|
#ifdef CONFIG_MMU
|
|
|
/**
|
|
|
* page_cache_read - adds requested page to the page cache if not already there
|