diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-12-10 18:13:13 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-12-10 18:13:13 -0500 |
commit | e20db597b6264de55ea6636fc79b1e4aaa89d129 (patch) | |
tree | fa650cb9cfad4b22598ae9867ca92baf57491a9d /fs/nfs/nfs4proc.c | |
parent | 3a5dc1fafb016560315fe45bb4ef8bde259dd1bc (diff) | |
parent | 388f0c776781fe64ce951701bfe712b2182a31f2 (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.c | 12 |
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 | */ |
347 | static int nfs4_handle_exception(struct nfs_server *server, int errorcode, struct nfs4_exception *exception) | 345 | int 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, |