patch-2.4.21 linux-2.4.21/fs/nfs/read.c
Next file: linux-2.4.21/fs/nfs/symlink.c
Previous file: linux-2.4.21/fs/nfs/pagelist.c
Back to the patch index
Back to the overall index
- Lines: 56
- Date:
2003-06-13 07:51:37.000000000 -0700
- Orig file:
linux-2.4.20/fs/nfs/read.c
- Orig date:
2002-11-28 15:53:15.000000000 -0800
diff -urN linux-2.4.20/fs/nfs/read.c linux-2.4.21/fs/nfs/read.c
@@ -171,11 +171,16 @@
struct nfs_page *new;
new = nfs_create_request(nfs_file_cred(file), inode, page, 0, PAGE_CACHE_SIZE);
- if (IS_ERR(new))
+ if (IS_ERR(new)) {
+ SetPageError(page);
+ NFS_ClearPageSync(page);
+ UnlockPage(page);
return PTR_ERR(new);
+ }
nfs_mark_request_read(new);
- if (inode->u.nfs_i.nread >= NFS_SERVER(inode)->rpages ||
+ if (NFS_TestClearPageSync(page) ||
+ inode->u.nfs_i.nread >= NFS_SERVER(inode)->rpages ||
page_index(page) == (inode->i_size + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT)
nfs_pagein_inode(inode, 0, 0);
return 0;
@@ -222,6 +227,7 @@
req = nfs_list_entry(head->next);
page = req->wb_page;
nfs_list_remove_request(req);
+ NFS_ClearPageSync(page);
SetPageError(page);
UnlockPage(page);
nfs_clear_request(req);
@@ -418,17 +424,13 @@
memset(p + count, 0, PAGE_CACHE_SIZE - count);
kunmap(page);
count = 0;
- if (data->res.eof)
- SetPageUptodate(page);
- else
- SetPageError(page);
- } else {
+ } else
count -= PAGE_CACHE_SIZE;
- SetPageUptodate(page);
- }
+ SetPageUptodate(page);
} else
SetPageError(page);
flush_dcache_page(page);
+ NFS_ClearPageSync(page);
UnlockPage(page);
dprintk("NFS: read (%x/%Ld %d@%Ld)\n",
@@ -482,6 +484,7 @@
return error;
out_error:
+ NFS_ClearPageSync(page);
UnlockPage(page);
goto out;
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)