NFS: Use SEEK_END instead of hardcoded value
[sfrench/cifs-2.6.git] / fs / nfs / file.c
index cc2b874ad5a4c38f4c63c0fe4b24028bbec6b030..be997d649127376d515193ec5460ab61ee46e4d8 100644 (file)
@@ -111,7 +111,7 @@ nfs_file_open(struct inode *inode, struct file *filp)
 
        nfs_inc_stats(inode, NFSIOS_VFSOPEN);
        lock_kernel();
-       res = NFS_SERVER(inode)->rpc_ops->file_open(inode, filp);
+       res = NFS_PROTO(inode)->file_open(inode, filp);
        unlock_kernel();
        return res;
 }
@@ -157,7 +157,7 @@ force_reval:
 static loff_t nfs_file_llseek(struct file *filp, loff_t offset, int origin)
 {
        /* origin == SEEK_END => we must revalidate the cached file length */
-       if (origin == 2) {
+       if (origin == SEEK_END) {
                struct inode *inode = filp->f_mapping->host;
                int retval = nfs_revalidate_file_size(inode, filp);
                if (retval < 0)
@@ -312,7 +312,13 @@ static void nfs_invalidate_page(struct page *page, unsigned long offset)
 
 static int nfs_release_page(struct page *page, gfp_t gfp)
 {
-       return !nfs_wb_page(page->mapping->host, page);
+       if (gfp & __GFP_FS)
+               return !nfs_wb_page(page->mapping->host, page);
+       else
+               /*
+                * Avoid deadlock on nfs_wait_on_request().
+                */
+               return 0;
 }
 
 const struct address_space_operations nfs_file_aops = {