Hi Linus, Please pull from the "bugfixes" branch of the repository at git pull git://git.linux-nfs.org/projects/trondmy/nfs-2.6.git bugfixes This will update the following files through the appended changesets. Cheers, Trond ---- fs/nfs/namespace.c | 4 +- fs/nfs/nfs4_fs.h | 1 + fs/nfs/nfs4proc.c | 118 ++++++++++++++++++++-------------------- fs/nfs/nfs4state.c | 51 ++++++++++++------ fs/nfs/nfs4xdr.c | 53 ++++++++++--------- fs/nfs/pnfs.c | 8 +++- fs/nfs/super.c | 13 ++++- fs/nfs/write.c | 4 +- include/linux/nfs_fs_sb.h | 1 + include/linux/nfs_xdr.h | 2 + include/linux/sunrpc/sched.h | 5 ++- net/sunrpc/Kconfig | 9 ++-- net/sunrpc/auth_gss/auth_gss.c | 8 ++- net/sunrpc/clnt.c | 5 ++- net/sunrpc/xprt.c | 1 + 15 files changed, 163 insertions(+), 120 deletions(-) commit 26c4c170731f00008f4317a2888a0a07ac99d90d Author: Jeff Layton <jlayton@xxxxxxxxxx> Date: Wed Apr 27 11:49:09 2011 -0400 nfs: don't lose MS_SYNCHRONOUS on remount of noac mount On a remount, the VFS layer will clear the MS_SYNCHRONOUS bit on the assumption that the flags on the mount syscall will have it set if the remounted fs is supposed to keep it. In the case of "noac" though, MS_SYNCHRONOUS is implied. A remount of such a mount will lose the MS_SYNCHRONOUS flag since "sync" isn't part of the mount options. Reported-by: Max Matveev <makc@xxxxxxxxxx> Signed-off-by: Jeff Layton <jlayton@xxxxxxxxxx> Cc: stable@xxxxxxxxxx Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 613e901e1ee0e1096663b649eee8e5d6697919f3 Author: Bryan Schumaker <bjschuma@xxxxxxxxxx> Date: Wed Apr 27 15:28:44 2011 -0400 NFS: Return meaningful status from decode_secinfo() When compiling, I was getting this warning: fs/nfs/nfs4xdr.c: In function âdecode_secinfoâ: fs/nfs/nfs4xdr.c:4839:6: warning: variable âstatusâ set but not used [-Wunused-but-set-variable] We were unconditionally returning 0 as long as there wasn't an error coming out of xdr_inline_decode(). We probably want to check the error status coming out of decode_op_hdr() and decode_secinfo_gss(), rather than assuming that everything is OK all the time. Signed-off-by: Bryan Schumaker <bjschuma@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 28331a46d88459788c8fca72dbb0415cd7f514c9 Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Wed Apr 27 13:47:52 2011 -0400 NFSv4: Ensure we request the ordinary fileid when doing readdirplus When readdir() returns a directory entry for the root of a mounted filesystem, Linux follows the old convention of returning the inode number of the covered directory (despite newer versions of POSIX declaring that this is a bug). To ensure this continues to work, the NFSv4 readdir implementation requests the 'mounted-on-fileid' from the server. However, readdirplus also needs to instantiate an inode for this entry, and for that, we also need to request the real fileid as per this patch. Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 1bd714f2a14aa4d6a5570956fcec64530b007e4a Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Sun Apr 24 14:29:33 2011 -0400 NFSv4: Ensure that clientid and session establishment can time out The following patch ensures that we do not get permanently trapped in the RPC layer when trying to establish a new client id or session. This again ensures that the state manager can finish in a timely fashion when the last filesystem to reference the nfs_client exits. Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 7494d00c7b826b6ceb79ec33892bd0ef59be5614 Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Sun Apr 24 14:28:45 2011 -0400 SUNRPC: Allow RPC calls to return ETIMEDOUT instead of EIO On occasion, it is useful for the NFS layer to distinguish between soft timeouts and other EIO errors due to (say) encoding errors, or authentication errors. The following patch ensures that the default behaviour of the RPC layer remains to return EIO on soft timeouts (until we have audited all the callers). Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit fd954ae124e8a866e9cc1bc3de9a07be5492f608 Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Sun Apr 24 14:28:18 2011 -0400 NFSv4.1: Don't loop forever in nfs4_proc_create_session If a server for some reason keeps sending NFS4ERR_DELAY errors, we can end up looping forever inside nfs4_proc_create_session, and so the usual mechanisms for detecting if the nfs_client is dead don't work. Fix this by ensuring that we loop inside the nfs4_state_manager thread instead. Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit fb8a5ba8114491467c4067ec0330e1c3dcc81d10 Author: Bryan Schumaker <bjschuma@xxxxxxxxxx> Date: Mon Apr 18 16:52:25 2011 -0400 NFSv4: Handle NFS4ERR_WRONGSEC outside of nfs4_handle_exception() I only want to try other secflavors during an initial mount if NFS4ERR_WRONGSEC is returned. nfs4_handle_exception() could potentially map other errors to EPERM, so we should handle this error specially for correctness. Signed-off-by: Bryan Schumaker <bjschuma@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 468f86134ee515234afe5c5b3f39f266c50e61a5 Author: Bryan Schumaker <bjschuma@xxxxxxxxxx> Date: Mon Apr 18 15:57:32 2011 -0400 NFSv4.1: Don't update sequence number if rpc_task is not sent If we fail to contact the gss upcall program, then no message will be sent to the server. The client still updated the sequence number, however, and this lead to NFS4ERR_SEQ_MISMATCH for the next several RPC calls. Signed-off-by: Bryan Schumaker <bjschuma@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 47c2199b6eb5fbe38ddb844db7cdbd914d304f9c Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Fri Apr 15 17:34:18 2011 -0400 NFSv4.1: Ensure state manager thread dies on last umount Currently, the state manager may continue to try recovering state forever even after the last filesystem to reference that nfs_client has umounted. Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Cc: stable@xxxxxxxxxx commit e3b2854faabd10438f5e7e34e078b099c3375577 Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Fri Apr 15 12:58:56 2011 -0400 SUNRPC: Fix the SUNRPC Kerberos V RPCSEC_GSS module dependencies Since kernel 2.6.35, the SUNRPC Kerberos support has had an implicit dependency on a number of additional crypto modules. The following patch makes that dependency explicit. Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit c3dfc2808ab82b13f8b6db62189da959c2eadeea Author: Bryan Schumaker <bjschuma@xxxxxxxxxx> Date: Wed Apr 13 14:31:31 2011 -0400 NFS: Use correct variable for page bounds checking While decoding a secinfo reply, I store the list of supported sec flavors on a page accessible through res->flavors. Before reading each new flavor, I do some math to determine if there is enough space left on this page, and I break out of my read look if there isn't. In order to perform this check correctly, I need to use the address of res->flavors, rather than the address of res. When this loop was broken early I lied to the caller and told them that the entire list had been decoded. This could lead to problems if the caller tries to use any the garbage data claiming to be a valid sec flavor. I fixed this by using res->flavors->num_flavors as a counter, incrementing it every time a sec flavor is successfully decoded. Signed-off-by: Bryan Schumaker <bjschuma@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 9b7160c55a41dd2fec3d467f979e55782d3f92ad Author: Bryan Schumaker <bjschuma@xxxxxxxxxx> Date: Wed Apr 13 14:31:30 2011 -0400 NFS: don't negotiate when user specifies sec flavor We were always attempting sec flavor negotiation, even if the user told us a specific sec flavor to use. If that sec flavor fails, we should return an error rather than continuing with sec flavor negotiation. Signed-off-by: Bryan Schumaker <bjschuma@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 801a16dc7b5c146f7980a0c61c30cef3ba93344d Author: Bryan Schumaker <bjschuma@xxxxxxxxxx> Date: Wed Apr 13 14:31:30 2011 -0400 NFS: Attempt mount with default sec flavor first nfs4_lookup_root() is already configured to use either RPC_AUTH_UNIX or a user specified flavor (through -o sec=<whatever>). We should use this flavor first, and only attempt negotiation if it fails with -EPERM. Signed-off-by: Bryan Schumaker <bjschuma@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 0fabee243a2c6edd66284a4d8948ccbe6727e3bb Author: Bryan Schumaker <bjschuma@xxxxxxxxxx> Date: Wed Apr 13 14:31:29 2011 -0400 NFS: flav_array honors NFS_MAX_SECFLAVORS NFS_MAX_SECFLAVORS should already take into account RPC_AUTH_UNIX and RPC_AUTH_NULL, so we don't need to set aside extra slots for them. Signed-off-by: Bryan Schumaker <bjschuma@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit d1a8016a2d1e75021ecc8715e3c81442d7218eb6 Author: Bryan Schumaker <bjschuma@xxxxxxxxxx> Date: Wed Apr 13 14:31:28 2011 -0400 NFS: Fix infinite loop in gss_create_upcall() There can be an infinite loop if gss_create_upcall() is called without the userspace program running. To prevent this, we return -EACCES if we notice that pipe_version hasn't changed (indicating that the pipe has not been opened). Signed-off-by: Bryan Schumaker <bjschuma@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 79a48a1f5d99ab66cf83d2d5d805e7a0e08452ed Author: Weston Andros Adamson <dros@xxxxxxxxxx> Date: Wed Apr 13 10:53:51 2011 -0400 Don't mark_inode_dirty_sync() while holding lock mark_inode_dirty_sync() grabs the same inode lock! race conditions between holding the lock in pnfs_set_layoutcommit() and in mark_inode_dirty_sync() can result in a second call to pnfs_layoutcommit_inode(), but this will be a noop as NFS_INO_LAYOUTCOMMIT won't be set in the second call Signed-off-by: Weston Andros Adamson <dros@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit c0d0e96b840dcc73f9b9d45bf8f405dbce72a079 Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Tue Apr 12 12:29:15 2011 -0400 NFS: Get rid of pointless test in nfs_commit_done Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 561f0b0ad073859a87d22845ddfd9df149b22e5f Author: Bryan Schumaker <bjschuma@xxxxxxxxxx> Date: Tue Apr 12 08:47:15 2011 -0400 NFS: Remove unused argument from nfs_find_best_sec() The inode was used in an earlier version of the code, but it isn't used anymore. Signed-off-by: Bryan Schumaker <bjschuma@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 4b38a6db01b09198f4045661815a0039c3d80660 Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Mon Apr 11 11:56:23 2011 -0400 NFS: Eliminate duplicate call to nfs_mark_request_dirty We only need to call nfs_mark_request_dirty() once in nfs_writepage_setup(). Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 160bc1604f8a33202578846c9a63e2a61105a4b7 Author: Jesper Juhl <jj@xxxxxxxxxxxxx> Date: Sun Apr 10 17:57:07 2011 +0200 NFS: Remove dead code from nfs_fs_mount() In fs/nfs/super.c::nfs_fs_mount() we test for a NULL 'data': ... if (data == NULL || mntfh == NULL) goto out_free_fh; ... and then further down in the function we test 'data' again: ... nfs_fscache_get_super_cookie( s, data ? data->fscache_uniq : NULL, NULL); ... this second check is just dead code since there is no way 'data' could possibly be NULL here. We also rely on a non-NULL 'data' in more than one location between these two tests, further proving the point that the second test is bogus. This patch removes the dead code. Signed-off-by: Jesper Juhl <jj@xxxxxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> -- Trond Myklebust Linux NFS client maintainer NetApp Trond.Myklebust@xxxxxxxxxx www.netapp.com -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html