Merge tag 'nfs-for-4.12-1' of git://git.linux-nfs.org/projects/trondmy/linux-nfs
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 10 May 2017 20:03:38 +0000 (13:03 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 10 May 2017 20:03:38 +0000 (13:03 -0700)
Pull NFS client updates from Trond Myklebust:
 "Highlights include:

  Stable bugfixes:
   - Fix use after free in write error path
   - Use GFP_NOIO for two allocations in writeback
   - Fix a hang in OPEN related to server reboot
   - Check the result of nfs4_pnfs_ds_connect
   - Fix an rcu lock leak

  Features:
   - Removal of the unmaintained and unused OSD pNFS layout
   - Cleanup and removal of lots of unnecessary dprintk()s
   - Cleanup and removal of some memory failure paths now that GFP_NOFS
     is guaranteed to never fail.
   - Remove the v3-only data server limitation on pNFS/flexfiles

  Bugfixes:
   - RPC/RDMA connection handling bugfixes
   - Copy offload: fixes to ensure the copied data is COMMITed to disk.
   - Readdir: switch back to using the ->iterate VFS interface
   - File locking fixes from Ben Coddington
   - Various use-after-free and deadlock issues in pNFS
   - Write path bugfixes"

* tag 'nfs-for-4.12-1' of git://git.linux-nfs.org/projects/trondmy/linux-nfs: (89 commits)
  pNFS/flexfiles: Always attempt to call layoutstats when flexfiles is enabled
  NFSv4.1: Work around a Linux server bug...
  NFS append COMMIT after synchronous COPY
  NFSv4: Fix exclusive create attributes encoding
  NFSv4: Fix an rcu lock leak
  nfs: use kmap/kunmap directly
  NFS: always treat the invocation of nfs_getattr as cache hit when noac is on
  Fix nfs_client refcounting if kmalloc fails in nfs4_proc_exchange_id and nfs4_proc_async_renew
  NFSv4.1: RECLAIM_COMPLETE must handle NFS4ERR_CONN_NOT_BOUND_TO_SESSION
  pNFS: Fix NULL dereference in pnfs_generic_alloc_ds_commits
  pNFS: Fix a typo in pnfs_generic_alloc_ds_commits
  pNFS: Fix a deadlock when coalescing writes and returning the layout
  pNFS: Don't clear the layout return info if there are segments to return
  pNFS: Ensure we commit the layout if it has been invalidated
  pNFS: Don't send COMMITs to the DSes if the server invalidated our layout
  pNFS/flexfiles: Fix up the ff_layout_write_pagelist failure path
  pNFS: Ensure we check layout validity before marking it for return
  NFS4.1 handle interrupted slot reuse from ERR_DELAY
  NFSv4: check return value of xdr_inline_decode
  nfs/filelayout: fix NULL pointer dereference in fl_pnfs_update_layout()
  ...

1  2 
Documentation/admin-guide/kernel-parameters.txt
fs/fuse/file.c
fs/nfs/client.c
fs/nfs/direct.c
fs/nfs/write.c
include/linux/fs.h
include/linux/nfs_fs_sb.h

index 4e0654b56aefad77c4f84c64d7e140b58df86fb3,17156d66b1241a82db3b529ad4fd1bc3c4393471..238bd211f36576efacd83bf2104aa8002825b92e
                        and gids from such clients.  This is intended to ease
                        migration from NFSv2/v3.
  
-       objlayoutdriver.osd_login_prog=
-                       [NFS] [OBJLAYOUT] sets the pathname to the program which
-                       is used to automatically discover and login into new
-                       osd-targets. Please see:
-                       Documentation/filesystems/pnfs.txt for more explanations
 -      nmi_debug=      [KNL,AVR32,SH] Specify one or more actions to take
 +      nmi_debug=      [KNL,SH] Specify one or more actions to take
                        when a NMI is triggered.
                        Format: [state][,regs][,debounce][,die]
  
diff --cc fs/fuse/file.c
index aa93f09ae6e67ae759efd7377c2ed01c9fac589d,995da8957f6fd760dfca75105640c69a1292e537..3ee4fdc3da9ec359ad847afa36354240329a2da6
@@@ -2177,13 -2168,10 +2177,13 @@@ static int fuse_setlk(struct file *file
        }
  
        /* Unlock on close is handled by the flush method */
-       if (fl->fl_flags & FL_CLOSE)
+       if ((fl->fl_flags & FL_CLOSE_POSIX) == FL_CLOSE_POSIX)
                return 0;
  
 -      fuse_lk_fill(&args, file, fl, opcode, pid, flock, &inarg);
 +      if (pid && pid_nr == 0)
 +              return -EOVERFLOW;
 +
 +      fuse_lk_fill(&args, file, fl, opcode, pid_nr, flock, &inarg);
        err = fuse_simple_request(fc, &args);
  
        /* locking is restartable */
diff --cc fs/nfs/client.c
index 04d15a0045e37173c124f78771243f8b444f3dce,e0302101e18afd93471fa810014f9a16d8b14513..ee5ddbd36088e66d21b2900fddb9c7ded0d17f9a
@@@ -944,9 -921,9 +912,8 @@@ void nfs_free_server(struct nfs_server 
        ida_destroy(&server->lockowner_id);
        ida_destroy(&server->openowner_id);
        nfs_free_iostats(server->io_stats);
 -      bdi_destroy(&server->backing_dev_info);
        kfree(server);
        nfs_release_automount_timer();
-       dprintk("<-- nfs_free_server()\n");
  }
  EXPORT_SYMBOL_GPL(nfs_free_server);
  
diff --cc fs/nfs/direct.c
Simple merge
diff --cc fs/nfs/write.c
Simple merge
Simple merge
Simple merge