diff options
Diffstat (limited to 'fs/cifs/file.c')
| -rw-r--r-- | fs/cifs/file.c | 13 |
1 files changed, 3 insertions, 10 deletions
diff --git a/fs/cifs/file.c b/fs/cifs/file.c index 9b11a8f56f3a..1361d67f68f3 100644 --- a/fs/cifs/file.c +++ b/fs/cifs/file.c | |||
| @@ -1931,8 +1931,7 @@ int cifs_file_mmap(struct file *file, struct vm_area_struct *vma) | |||
| 1931 | 1931 | ||
| 1932 | 1932 | ||
| 1933 | static void cifs_copy_cache_pages(struct address_space *mapping, | 1933 | static void cifs_copy_cache_pages(struct address_space *mapping, |
| 1934 | struct list_head *pages, int bytes_read, char *data, | 1934 | struct list_head *pages, int bytes_read, char *data) |
| 1935 | struct pagevec *plru_pvec) | ||
| 1936 | { | 1935 | { |
| 1937 | struct page *page; | 1936 | struct page *page; |
| 1938 | char *target; | 1937 | char *target; |
| @@ -1944,7 +1943,7 @@ static void cifs_copy_cache_pages(struct address_space *mapping, | |||
| 1944 | page = list_entry(pages->prev, struct page, lru); | 1943 | page = list_entry(pages->prev, struct page, lru); |
| 1945 | list_del(&page->lru); | 1944 | list_del(&page->lru); |
| 1946 | 1945 | ||
| 1947 | if (add_to_page_cache(page, mapping, page->index, | 1946 | if (add_to_page_cache_lru(page, mapping, page->index, |
| 1948 | GFP_KERNEL)) { | 1947 | GFP_KERNEL)) { |
| 1949 | page_cache_release(page); | 1948 | page_cache_release(page); |
| 1950 | cFYI(1, ("Add page cache failed")); | 1949 | cFYI(1, ("Add page cache failed")); |
| @@ -1970,8 +1969,6 @@ static void cifs_copy_cache_pages(struct address_space *mapping, | |||
| 1970 | flush_dcache_page(page); | 1969 | flush_dcache_page(page); |
| 1971 | SetPageUptodate(page); | 1970 | SetPageUptodate(page); |
| 1972 | unlock_page(page); | 1971 | unlock_page(page); |
| 1973 | if (!pagevec_add(plru_pvec, page)) | ||
| 1974 | __pagevec_lru_add_file(plru_pvec); | ||
| 1975 | data += PAGE_CACHE_SIZE; | 1972 | data += PAGE_CACHE_SIZE; |
| 1976 | } | 1973 | } |
| 1977 | return; | 1974 | return; |
| @@ -1990,7 +1987,6 @@ static int cifs_readpages(struct file *file, struct address_space *mapping, | |||
| 1990 | unsigned int read_size, i; | 1987 | unsigned int read_size, i; |
| 1991 | char *smb_read_data = NULL; | 1988 | char *smb_read_data = NULL; |
| 1992 | struct smb_com_read_rsp *pSMBr; | 1989 | struct smb_com_read_rsp *pSMBr; |
| 1993 | struct pagevec lru_pvec; | ||
| 1994 | struct cifsFileInfo *open_file; | 1990 | struct cifsFileInfo *open_file; |
| 1995 | int buf_type = CIFS_NO_BUFFER; | 1991 | int buf_type = CIFS_NO_BUFFER; |
| 1996 | 1992 | ||
| @@ -2004,7 +2000,6 @@ static int cifs_readpages(struct file *file, struct address_space *mapping, | |||
| 2004 | cifs_sb = CIFS_SB(file->f_path.dentry->d_sb); | 2000 | cifs_sb = CIFS_SB(file->f_path.dentry->d_sb); |
| 2005 | pTcon = cifs_sb->tcon; | 2001 | pTcon = cifs_sb->tcon; |
| 2006 | 2002 | ||
| 2007 | pagevec_init(&lru_pvec, 0); | ||
| 2008 | cFYI(DBG2, ("rpages: num pages %d", num_pages)); | 2003 | cFYI(DBG2, ("rpages: num pages %d", num_pages)); |
| 2009 | for (i = 0; i < num_pages; ) { | 2004 | for (i = 0; i < num_pages; ) { |
| 2010 | unsigned contig_pages; | 2005 | unsigned contig_pages; |
| @@ -2073,7 +2068,7 @@ static int cifs_readpages(struct file *file, struct address_space *mapping, | |||
| 2073 | pSMBr = (struct smb_com_read_rsp *)smb_read_data; | 2068 | pSMBr = (struct smb_com_read_rsp *)smb_read_data; |
| 2074 | cifs_copy_cache_pages(mapping, page_list, bytes_read, | 2069 | cifs_copy_cache_pages(mapping, page_list, bytes_read, |
| 2075 | smb_read_data + 4 /* RFC1001 hdr */ + | 2070 | smb_read_data + 4 /* RFC1001 hdr */ + |
| 2076 | le16_to_cpu(pSMBr->DataOffset), &lru_pvec); | 2071 | le16_to_cpu(pSMBr->DataOffset)); |
| 2077 | 2072 | ||
| 2078 | i += bytes_read >> PAGE_CACHE_SHIFT; | 2073 | i += bytes_read >> PAGE_CACHE_SHIFT; |
| 2079 | cifs_stats_bytes_read(pTcon, bytes_read); | 2074 | cifs_stats_bytes_read(pTcon, bytes_read); |
| @@ -2106,8 +2101,6 @@ static int cifs_readpages(struct file *file, struct address_space *mapping, | |||
| 2106 | bytes_read = 0; | 2101 | bytes_read = 0; |
| 2107 | } | 2102 | } |
| 2108 | 2103 | ||
| 2109 | pagevec_lru_add_file(&lru_pvec); | ||
| 2110 | |||
| 2111 | /* need to free smb_read_data buf before exit */ | 2104 | /* need to free smb_read_data buf before exit */ |
| 2112 | if (smb_read_data) { | 2105 | if (smb_read_data) { |
| 2113 | if (buf_type == CIFS_SMALL_BUFFER) | 2106 | if (buf_type == CIFS_SMALL_BUFFER) |
