aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/nfs4proc.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2014-12-10 18:13:13 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2014-12-10 18:13:13 -0500
commite20db597b6264de55ea6636fc79b1e4aaa89d129 (patch)
treefa650cb9cfad4b22598ae9867ca92baf57491a9d /fs/nfs/nfs4proc.c
parent3a5dc1fafb016560315fe45bb4ef8bde259dd1bc (diff)
parent388f0c776781fe64ce951701bfe712b2182a31f2 (diff)
Merge tag 'nfs-for-3.19-1' of git://git.linux-nfs.org/projects/trondmy/linux-nfs
Pull NFS client updates from Trond Myklebust: "Highlights include: Features: - NFSv4.2 client support for hole punching and preallocation. - Further RPC/RDMA client improvements. - Add more RPC transport debugging tracepoints. - Add RPC debugging tools in debugfs. Bugfixes: - Stable fix for layoutget error handling - Fix a change in COMMIT behaviour resulting from the recent io code updates" * tag 'nfs-for-3.19-1' of git://git.linux-nfs.org/projects/trondmy/linux-nfs: (28 commits) sunrpc: add a debugfs rpc_xprt directory with an info file in it sunrpc: add debugfs file for displaying client rpc_task queue nfs: Add DEALLOCATE support nfs: Add ALLOCATE support NFS: Clean up nfs4_init_callback() NFS: SETCLIENTID XDR buffer sizes are incorrect SUNRPC: serialize iostats updates xprtrdma: Display async errors xprtrdma: Enable pad optimization xprtrdma: Re-write rpcrdma_flush_cqs() xprtrdma: Refactor tasklet scheduling xprtrdma: unmap all FMRs during transport disconnect xprtrdma: Cap req_cqinit xprtrdma: Return an errno from rpcrdma_register_external() nfs: define nfs_inc_fscache_stats and using it as possible nfs: replace nfs_add_stats with nfs_inc_stats when add one NFS: Deletion of unnecessary checks before the function call "nfs_put_client" sunrpc: eliminate RPC_TRACEPOINTS sunrpc: eliminate RPC_DEBUG lockd: eliminate LOCKD_DEBUG ...
Diffstat (limited to 'fs/nfs/nfs4proc.c')
-rw-r--r--fs/nfs/nfs4proc.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index 69dc20a743f9..e7f8d5ff2581 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -158,8 +158,6 @@ static int nfs4_map_errors(int err)
158 return -EACCES; 158 return -EACCES;
159 case -NFS4ERR_MINOR_VERS_MISMATCH: 159 case -NFS4ERR_MINOR_VERS_MISMATCH:
160 return -EPROTONOSUPPORT; 160 return -EPROTONOSUPPORT;
161 case -NFS4ERR_ACCESS:
162 return -EACCES;
163 case -NFS4ERR_FILE_OPEN: 161 case -NFS4ERR_FILE_OPEN:
164 return -EBUSY; 162 return -EBUSY;
165 default: 163 default:
@@ -344,7 +342,7 @@ static int nfs4_delay(struct rpc_clnt *clnt, long *timeout)
344/* This is the error handling routine for processes that are allowed 342/* This is the error handling routine for processes that are allowed
345 * to sleep. 343 * to sleep.
346 */ 344 */
347static int nfs4_handle_exception(struct nfs_server *server, int errorcode, struct nfs4_exception *exception) 345int nfs4_handle_exception(struct nfs_server *server, int errorcode, struct nfs4_exception *exception)
348{ 346{
349 struct nfs_client *clp = server->nfs_client; 347 struct nfs_client *clp = server->nfs_client;
350 struct nfs4_state *state = exception->state; 348 struct nfs4_state *state = exception->state;
@@ -7704,6 +7702,9 @@ nfs4_proc_layoutget(struct nfs4_layoutget *lgp, gfp_t gfp_flags)
7704 7702
7705 dprintk("--> %s\n", __func__); 7703 dprintk("--> %s\n", __func__);
7706 7704
7705 /* nfs4_layoutget_release calls pnfs_put_layout_hdr */
7706 pnfs_get_layout_hdr(NFS_I(inode)->layout);
7707
7707 lgp->args.layout.pages = nfs4_alloc_pages(max_pages, gfp_flags); 7708 lgp->args.layout.pages = nfs4_alloc_pages(max_pages, gfp_flags);
7708 if (!lgp->args.layout.pages) { 7709 if (!lgp->args.layout.pages) {
7709 nfs4_layoutget_release(lgp); 7710 nfs4_layoutget_release(lgp);
@@ -7716,9 +7717,6 @@ nfs4_proc_layoutget(struct nfs4_layoutget *lgp, gfp_t gfp_flags)
7716 lgp->res.seq_res.sr_slot = NULL; 7717 lgp->res.seq_res.sr_slot = NULL;
7717 nfs4_init_sequence(&lgp->args.seq_args, &lgp->res.seq_res, 0); 7718 nfs4_init_sequence(&lgp->args.seq_args, &lgp->res.seq_res, 0);
7718 7719
7719 /* nfs4_layoutget_release calls pnfs_put_layout_hdr */
7720 pnfs_get_layout_hdr(NFS_I(inode)->layout);
7721
7722 task = rpc_run_task(&task_setup_data); 7720 task = rpc_run_task(&task_setup_data);
7723 if (IS_ERR(task)) 7721 if (IS_ERR(task))
7724 return ERR_CAST(task); 7722 return ERR_CAST(task);
@@ -8426,6 +8424,8 @@ static const struct nfs4_minor_version_ops nfs_v4_2_minor_ops = {
8426 | NFS_CAP_POSIX_LOCK 8424 | NFS_CAP_POSIX_LOCK
8427 | NFS_CAP_STATEID_NFSV41 8425 | NFS_CAP_STATEID_NFSV41
8428 | NFS_CAP_ATOMIC_OPEN_V1 8426 | NFS_CAP_ATOMIC_OPEN_V1
8427 | NFS_CAP_ALLOCATE
8428 | NFS_CAP_DEALLOCATE
8429 | NFS_CAP_SEEK, 8429 | NFS_CAP_SEEK,
8430 .init_client = nfs41_init_client, 8430 .init_client = nfs41_init_client,
8431 .shutdown_client = nfs41_shutdown_client, 8431 .shutdown_client = nfs41_shutdown_client,