diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-11-09 21:11:22 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-11-09 21:11:22 -0500 |
commit | e6604ecb70d4b1dbc0372c6518b51c25c4b135a1 (patch) | |
tree | 2d12c51b84c3ba8472e59ddbe37da034e2c5251f /fs/nfs/pnfs.c | |
parent | 9d74288ca79249af4b906215788b37d52263b58b (diff) | |
parent | 941c3ff3102ccce440034d59cf9e4e9cc10b720d (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.c | 12 |
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 | */ |
1913 | void pnfs_ld_write_done(struct nfs_pgio_header *hdr) | 1913 | void 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 | */ |
2029 | void pnfs_ld_read_done(struct nfs_pgio_header *hdr) | 2030 | void 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 | } |