]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - fs/nfs/file.c
Merge branch 'akpm-current/current'
[karo-tx-linux.git] / fs / nfs / file.c
index c0f9b1ed12b9eb281909926f2befacd13db1a026..93e236429c5d785a1711d643d0b4676dfe4396cf 100644 (file)
@@ -473,8 +473,8 @@ static int nfs_release_page(struct page *page, gfp_t gfp)
        dfprintk(PAGECACHE, "NFS: release_page(%p)\n", page);
 
        /* Always try to initiate a 'commit' if relevant, but only
-        * wait for it if __GFP_WAIT is set.  Even then, only wait 1
-        * second and only if the 'bdi' is not congested.
+        * wait for it if the caller allows blocking.  Even then,
+        * only wait 1 second and only if the 'bdi' is not congested.
         * Waiting indefinitely can cause deadlocks when the NFS
         * server is on this machine, when a new TCP connection is
         * needed and in other rare cases.  There is no particular
@@ -484,7 +484,7 @@ static int nfs_release_page(struct page *page, gfp_t gfp)
        if (mapping) {
                struct nfs_server *nfss = NFS_SERVER(mapping->host);
                nfs_commit_inode(mapping->host, 0);
-               if ((gfp & __GFP_WAIT) &&
+               if (gfpflags_allow_blocking(gfp) &&
                    !bdi_write_congested(&nfss->backing_dev_info)) {
                        wait_on_page_bit_killable_timeout(page, PG_private,
                                                          HZ);
@@ -738,18 +738,7 @@ out_noconflict:
 
 static int do_vfs_lock(struct file *file, struct file_lock *fl)
 {
-       int res = 0;
-       switch (fl->fl_flags & (FL_POSIX|FL_FLOCK)) {
-               case FL_POSIX:
-                       res = posix_lock_file_wait(file, fl);
-                       break;
-               case FL_FLOCK:
-                       res = flock_lock_file_wait(file, fl);
-                       break;
-               default:
-                       BUG();
-       }
-       return res;
+       return locks_lock_file_wait(file, fl);
 }
 
 static int