summaryrefslogtreecommitdiffstats
path: root/fs/nfs/pnfs.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2015-11-09 21:11:22 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2015-11-09 21:11:22 -0500
commite6604ecb70d4b1dbc0372c6518b51c25c4b135a1 (patch)
tree2d12c51b84c3ba8472e59ddbe37da034e2c5251f /fs/nfs/pnfs.c
parent9d74288ca79249af4b906215788b37d52263b58b (diff)
parent941c3ff3102ccce440034d59cf9e4e9cc10b720d (diff)
Merge tag 'nfs-for-4.4-1' of git://git.linux-nfs.org/projects/trondmy/linux-nfs
Pull NFS client updates from Trond Myklebust: "Highlights include: New features: - RDMA client backchannel from Chuck - Support for NFSv4.2 file CLONE using the btrfs ioctl Bugfixes + cleanups: - Move socket data receive out of the bottom halves and into a workqueue - Refactor NFSv4 error handling so synchronous and asynchronous RPC handles errors identically. - Fix a panic when blocks or object layouts reads return a bad data length - Fix nfsroot so it can handle a 1024 byte long path. - Fix bad usage of page offset in bl_read_pagelist - Various NFSv4 callback cleanups+fixes - Fix GETATTR bitmap verification - Support hexadecimal number for sunrpc debug sysctl files" * tag 'nfs-for-4.4-1' of git://git.linux-nfs.org/projects/trondmy/linux-nfs: (53 commits) Sunrpc: Supports hexadecimal number for sysctl files of sunrpc debug nfs: Fix GETATTR bitmap verification nfs: Remove unused xdr page offsets in getacl/setacl arguments fs/nfs: remove unnecessary new_valid_dev check SUNRPC: fix variable type NFS: Enable client side NFSv4.1 backchannel to use other transports pNFS/flexfiles: Add support for FF_FLAGS_NO_IO_THRU_MDS pNFS/flexfiles: When mirrored, retry failed reads by switching mirrors SUNRPC: Remove the TCP-only restriction in bc_svc_process() svcrdma: Add backward direction service for RPC/RDMA transport xprtrdma: Handle incoming backward direction RPC calls xprtrdma: Add support for sending backward direction RPC replies xprtrdma: Pre-allocate Work Requests for backchannel xprtrdma: Pre-allocate backward rpc_rqst and send/receive buffers SUNRPC: Abstract backchannel operations xprtrdma: Saving IRQs no longer needed for rb_lock xprtrdma: Remove reply tasklet xprtrdma: Use workqueue to process RPC/RDMA replies xprtrdma: Replace send and receive arrays xprtrdma: Refactor reply handler error handling ...
Diffstat (limited to 'fs/nfs/pnfs.c')
-rw-r--r--fs/nfs/pnfs.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c
index 8abe27165ad0..93496c059837 100644
--- a/fs/nfs/pnfs.c
+++ b/fs/nfs/pnfs.c
@@ -1912,12 +1912,13 @@ static void pnfs_ld_handle_write_error(struct nfs_pgio_header *hdr)
1912 */ 1912 */
1913void pnfs_ld_write_done(struct nfs_pgio_header *hdr) 1913void pnfs_ld_write_done(struct nfs_pgio_header *hdr)
1914{ 1914{
1915 trace_nfs4_pnfs_write(hdr, hdr->pnfs_error); 1915 if (likely(!hdr->pnfs_error)) {
1916 if (!hdr->pnfs_error) {
1917 pnfs_set_layoutcommit(hdr->inode, hdr->lseg, 1916 pnfs_set_layoutcommit(hdr->inode, hdr->lseg,
1918 hdr->mds_offset + hdr->res.count); 1917 hdr->mds_offset + hdr->res.count);
1919 hdr->mds_ops->rpc_call_done(&hdr->task, hdr); 1918 hdr->mds_ops->rpc_call_done(&hdr->task, hdr);
1920 } else 1919 }
1920 trace_nfs4_pnfs_write(hdr, hdr->pnfs_error);
1921 if (unlikely(hdr->pnfs_error))
1921 pnfs_ld_handle_write_error(hdr); 1922 pnfs_ld_handle_write_error(hdr);
1922 hdr->mds_ops->rpc_release(hdr); 1923 hdr->mds_ops->rpc_release(hdr);
1923} 1924}
@@ -2028,11 +2029,12 @@ static void pnfs_ld_handle_read_error(struct nfs_pgio_header *hdr)
2028 */ 2029 */
2029void pnfs_ld_read_done(struct nfs_pgio_header *hdr) 2030void pnfs_ld_read_done(struct nfs_pgio_header *hdr)
2030{ 2031{
2031 trace_nfs4_pnfs_read(hdr, hdr->pnfs_error);
2032 if (likely(!hdr->pnfs_error)) { 2032 if (likely(!hdr->pnfs_error)) {
2033 __nfs4_read_done_cb(hdr); 2033 __nfs4_read_done_cb(hdr);
2034 hdr->mds_ops->rpc_call_done(&hdr->task, hdr); 2034 hdr->mds_ops->rpc_call_done(&hdr->task, hdr);
2035 } else 2035 }
2036 trace_nfs4_pnfs_read(hdr, hdr->pnfs_error);
2037 if (unlikely(hdr->pnfs_error))
2036 pnfs_ld_handle_read_error(hdr); 2038 pnfs_ld_handle_read_error(hdr);
2037 hdr->mds_ops->rpc_release(hdr); 2039 hdr->mds_ops->rpc_release(hdr);
2038} 2040}