[GIT PULL] Please pull NFS client changes for 3.20

Trond Myklebust
2015-02-11T15:43:09Z

[-- Attachment #1.1: Type: text/plain, Size: 13176 bytes --]

Hi Linus,

The following changes since commit 2ef47eb1aee171ecf1d83311b9f7fae80f330181:

NFS: Fix use of nfs_attr_use_mounted_on_fileid() (2015-01-21 17:15:41 -0500)

are available in the git repository at:

git://git.linux-nfs.org/projects/trondmy/linux-nfs.git tags/nfs-for-3.20-1

for you to fetch changes up to c627d31ba0696cbd829437af2be2f2dee3546b1e:

SUNRPC: Cleanup to remove xs_tcp_close() (2015-02-10 11:06:04 -0500)

Please note that there is a known conflict with Jens' block tree in one
of the new files that are added as part of the flexfiles support. I've
attached a patch from Stephen that fixes this conflict up.

Cheers
Trond

----------------------------------------------------------------
NFS client updates for Linux 3.20

Highlights incluse:

Features:
- Removing the forced serialisation of open()/close() calls in NFSv4.x (x>0)
makes for a significant performance improvement in metadata intensive
workloads.
- Full support for the pNFS "flexible files" layout type
- Further RPC/RDMA client improvements from Chuck

Bugfixes:
- Stable fix: NFSv4.1 backchannel calls blocking operations with !TASK_RUNNING
- Stable fix: pnfs_generic_pg_init_read/write can be called with lseg == NULL
- Stable fix: Fix an Oopsable condition when nsm_mon_unmon is called as part
of the namespace cleanup,
- Stable fix: Ensure we reference the inode for return-on-close in delegreturn

- Use SO_REUSEPORT to ensure that NFSv3 TCP connections can rebind to the
same source address/port combination during a disconnect/reconnect event.
This is a requirement imposed by most NFSv3 server duplicate reply cache
implementations.

Optimisations:
- Ask for no NFSv4.1 delegations on OPEN if using O_DIRECT

Other:
- Add Anna Schumaker as co-maintainer for the NFS client

----------------------------------------------------------------
Chuck Lever (22):
xprtrdma: human-readable completion status
xprtrdma: Modernize htonl and ntohl
xprtrdma: Display XIDs in host byte order
xprtrdma: Clean up hdrlen
xprtrdma: Rename "xprt" and "rdma_connect" fields in struct rpcrdma_xprt
xprtrdma: Remove rpcrdma_ep::rep_ia
xprtrdma: Remove rl_mr field, and the mr_chunk union
xprtrdma: Move credit update to RPC reply handler
xprtrdma: Remove rpcrdma_ep::rep_func and ::rep_xprt
xprtrdma: Free the pd if ib_query_qp() fails
xprtrdma: Take struct ib_device_attr off the stack
xprtrdma: Take struct ib_qp_attr and ib_qp_init_attr off the stack
xprtrdma: Simplify synopsis of rpcrdma_buffer_create()
xprtrdma: Refactor rpcrdma_buffer_create() and rpcrdma_buffer_destroy()
xprtrdma: Add struct rpcrdma_regbuf and helpers
xprtrdma: Allocate RPC send buffer separately from struct rpcrdma_req
xprtrdma: Allocate RPC/RDMA send buffer separately from struct rpcrdma_req
xprtrdma: Allocate RPC/RDMA receive buffer separately from struct rpcrdma_rep
xprtrdma: Allocate zero pad separately from rpcrdma_buffer
xprtrdma: Clean up after adding regbuf management
xprtrdma: Update the GFP flags used in xprt_rdma_allocate()
xprtrdma: Address sparse complaint in rpcr_to_rdmar()

Dan Carpenter (2):
NFS: a couple off by ones
pnfs: delete an unintended goto

Jeff Layton (1):
nfs: don't call blocking operations while !TASK_RUNNING

Omar Sandoval (1):
nfs: prevent truncate on active swapfile

Peng Tao (37):
nfs41: pull data server cache from file layout to generic pnfs
nfs41: pull decode_ds_addr from file layout to generic pnfs
nfs41: pull nfs4_ds_connect from file layout to generic pnfs
nfs41: allow LD to choose DS connection auth flavor
nfs41: move file layout macros to generic pnfs
nfsv3: introduce nfs3_set_ds_client
nfs41: allow LD to choose DS connection version/minor_version
nfs41: create NFSv3 DS connection if specified
nfs: allow different protocol in nfs_initiate_commit
nfs4: pass slot table to nfs40_setup_sequence
nfs4: export nfs4_sequence_done
nfs: allow to specify cred in nfs_initiate_pgio
nfs: set hostname when creating nfsv3 ds connection
nfs/flexclient: export pnfs_layoutcommit_inode
nfs41: close a small race window when adding new layout to global list
nfs41: serialize first layoutget of a file
nfs: save server READ/WRITE/COMMIT status
nfs41: pass iomode through layoutreturn args
nfs41: make a helper function to send layoutreturn
nfs41: add a helper to mark layout for return
nfs41: don't use a layout if it is marked for returning
nfs41: send layoutreturn in last put_lseg
nfs41: clear NFS_LAYOUT_RETURN if layoutreturn is sent or failed to send
nfs/filelayout: use pnfs_error_mark_layout_for_return
nfs41: add a debug warning if we destroy an unempty layout
nfs: only reset desc->pg_mirror_idx when mirroring is supported
nfs: add nfs_pgio_current_mirror helper
pnfs: allow LD to ask to resend read through pnfs
nfs41: add range to layoutreturn args
nfs41: allow async version layoutreturn
nfs41: introduce NFS_LAYOUT_RETURN_BEFORE_CLOSE
nfs/flexfiles: send layoutreturn before freeing lseg
nfs41: add NFS_LAYOUT_RETRY_LAYOUTGET to layout header flags
nfs: add a helper to set NFS_ODIRECT_RESCHED_WRITES to direct writes
nfs41: wait for LAYOUTRETURN before retrying LAYOUTGET
nfs: count DIO good bytes correctly with mirroring
nfs41: .init_read and .init_write can be called with valid pg_lseg

Tom Haynes (6):
pnfs: Prepare for flexfiles by pulling out common code
pnfs: Do not grab the commit_info lock twice when rescheduling writes
pnfs: Add nfs_rpc_ops in calls to nfs_initiate_pgio
pnfs/flexfiles: Add the FlexFile Layout Driver
pnfs: Update documentation on the Layout Drivers
pnfs/flexfiles: Do not dprintk after the free

Trond Myklebust (43):
NFSv4: Fix an atomicity problem in CLOSE
NFSv4: More CLOSE/OPEN races
NFSv4: Convert nfs_alloc_seqid() to return an ERR_PTR() if allocation fails
NFSv4: Check for NULL argument in nfs_*_seqid() functions
NFSv4.1: Allow parallel OPEN/OPEN_DOWNGRADE/CLOSE
NFSv4: Fix atomicity problems with lock stateid updates
NFSv4: Always do open_to_lock_owner if the lock stateid is uninitialised
NFSv4: Fix lock on-wire reordering issues
NFSv4: Update of VFS byte range lock must be atomic with the stateid update
NFSv4.1: Allow parallel LOCK/LOCKU calls
NFSv4.1: Optimise layout return-on-close
SUNRPC: Adjust rpciod workqueue parameters
SUNRPC: Allow waiting on memory allocation
NFSv4.1: Replace usage of nfs_client->cl_addr in encode_create_session
NFSv4: Deal with atomic upgrades of an existing delegation
Merge tag 'nfs-rdma-for-3.20' of git://git.linux-nfs.org/projects/anna/nfs-rdma
NFSv4.1/NFSv3: Add pNFS callbacks for nfs3_(read|write|commit)_done()
Merge branch 'flexfiles'
SUNRPC: NULL utsname dereference on NFS umount during namespace cleanup
NFS: Add Anna Schumaker as co-maintainer for the NFS client
NFSv4.1: Ask for no delegation on OPEN if using O_DIRECT
NFSv4: Ensure we reference the inode for return-on-close in delegreturn
NFSv4.1: Pin the inode and super block in asynchronous layoutcommit
NFSv4.1: Pin the inode and super block in asynchronous layoutreturns
NFSv4.1: pnfs_send_layoutreturn should use GFP_NOFS
NFSv4.1: Fix pnfs_put_lseg races
Merge tag 'nfs-rdma-for-3.20-part-2' of git://git.linux-nfs.org/projects/anna/nfs-rdma
SUNRPC: Set SO_REUSEPORT socket option for TCP connections
SUNRPC: Handle EADDRINUSE on connect
SUNRPC: Do not clear the source port in xs_reset_transport
SUNRPC: Ensure xs_reset_transport() resets the close connection flags
SUNRPC: Add helpers to prevent socket create from racing
SUNRPC: TCP/UDP always close the old socket before reconnecting
SUNRPC: Remove TCP client connection reset hack
SUNRPC: Remove TCP socket linger code
SUNRPC: Cleanup to remove remaining uses of XPRT_CONNECTION_ABORT
SUNRPC: Ensure xs_tcp_shutdown() requests a full close of the connection
SUNRPC: Make xs_tcp_close() do a socket shutdown rather than a sock_release
SUNRPC: Remove the redundant XPRT_CONNECTION_CLOSE flag
SUNRPC: Handle connection reset more efficiently.
SUNRPC: Define xs_tcp_fin_timeout only if CONFIG_SUNRPC_DEBUG
SUNRPC: Fix stupid typo in xs_sock_set_reuseport
SUNRPC: Cleanup to remove xs_tcp_close()

Weston Andros Adamson (10):
sunrpc: add rpc_count_iostats_idx
nfs: introduce pg_cleanup op for pgio descriptors
pnfs: release lseg in pnfs_generic_pg_cleanup
nfs: handle overlapping reqs in lock_and_join
nfs: rename pgio header ds_idx to ds_commit_idx
pnfs: pass ds_commit_idx through the commit path
nfs: add mirroring support to pgio layer
nfs: mirroring support for direct io
pnfs: fail comparison when bucket verifier not set
pnfs: lookup new lseg at lseg boundary

Documentation/filesystems/nfs/pnfs.txt | 13 +-
MAINTAINERS | 1 +
fs/lockd/mon.c | 13 +-
fs/nfs/Kconfig | 5 +
fs/nfs/Makefile | 3 +-
fs/nfs/blocklayout/blocklayout.c | 2 +
fs/nfs/callback.c | 8 +-
fs/nfs/delegation.c | 20 +-
fs/nfs/direct.c | 112 +-
fs/nfs/filelayout/filelayout.c | 315 +-----
fs/nfs/filelayout/filelayout.h | 40 -
fs/nfs/filelayout/filelayoutdev.c | 469 +--------
fs/nfs/flexfilelayout/Makefile | 5 +
fs/nfs/flexfilelayout/flexfilelayout.c | 1574 +++++++++++++++++++++++++++++
fs/nfs/flexfilelayout/flexfilelayout.h | 155 +++
fs/nfs/flexfilelayout/flexfilelayoutdev.c | 552 ++++++++++
fs/nfs/idmap.c | 3 +-
fs/nfs/inode.c | 7 +-
fs/nfs/internal.h | 53 +-
fs/nfs/nfs2xdr.c | 10 +-
fs/nfs/nfs3_fs.h | 2 +
fs/nfs/nfs3client.c | 41 +
fs/nfs/nfs3proc.c | 9 +
fs/nfs/nfs3super.c | 2 +-
fs/nfs/nfs3xdr.c | 3 +
fs/nfs/nfs4_fs.h | 9 +
fs/nfs/nfs4client.c | 7 +-
fs/nfs/nfs4proc.c | 315 +++---
fs/nfs/nfs4state.c | 31 +-
fs/nfs/nfs4super.c | 3 +
fs/nfs/nfs4xdr.c | 113 ++-
fs/nfs/nfsroot.c | 4 +-
fs/nfs/objlayout/objio_osd.c | 5 +-
fs/nfs/pagelist.c | 294 +++++-
fs/nfs/pnfs.c | 471 +++++++--
fs/nfs/pnfs.h | 135 ++-
fs/nfs/pnfs_nfs.c | 840 +++++++++++++++
fs/nfs/read.c | 33 +-
fs/nfs/super.c | 9 +-
fs/nfs/write.c | 52 +-
include/linux/nfs4.h | 1 +
include/linux/nfs_fs_sb.h | 9 +-
include/linux/nfs_idmap.h | 2 +
include/linux/nfs_page.h | 22 +-
include/linux/nfs_xdr.h | 19 +-
include/linux/sunrpc/clnt.h | 3 +-
include/linux/sunrpc/metrics.h | 4 +
include/linux/sunrpc/rpc_rdma.h | 14 +-
include/linux/sunrpc/svc_rdma.h | 2 -
include/linux/sunrpc/xprt.h | 6 +-
net/sunrpc/clnt.c | 15 +-
net/sunrpc/rpcb_clnt.c | 8 +-
net/sunrpc/sched.c | 7 +-
net/sunrpc/stats.c | 26 +-
net/sunrpc/xprt.c | 38 +-
net/sunrpc/xprtrdma/rpc_rdma.c | 108 +-
net/sunrpc/xprtrdma/transport.c | 182 ++--
net/sunrpc/xprtrdma/verbs.c | 411 +++++---
net/sunrpc/xprtrdma/xprt_rdma.h | 112 +-
net/sunrpc/xprtsock.c | 238 ++---
60 files changed, 5236 insertions(+), 1729 deletions(-)
create mode 100644 fs/nfs/flexfilelayout/Makefile
create mode 100644 fs/nfs/flexfilelayout/flexfilelayout.c
create mode 100644 fs/nfs/flexfilelayout/flexfilelayout.h
create mode 100644 fs/nfs/flexfilelayout/flexfilelayoutdev.c
create mode 100644 fs/nfs/pnfs_nfs.c

--
Trond Myklebust
Linux NFS client maintainer, PrimaryData
trond.myklebust@primarydata.com

[-- Attachment #1.2: Forwarded message - linux-next: build failure after merge of the block tree --]
[-- Type: message/rfc822, Size: 5715 bytes --]

[-- Attachment #1.2.1.1: Type: text/plain, Size: 1842 bytes --]

Hi Jens,

After merging the block tree, today's linux-next build (x86_64 allmodconfig)
failed like this:

fs/nfs/flexfilelayout/flexfilelayout.c: In function 'ff_layout_mark_request_commit':
fs/nfs/flexfilelayout/flexfilelayout.c:1369:47: error: 'struct address_space' has no member named 'backing_dev_info'
inc_bdi_stat(page_file_mapping(req->wb_page)->backing_dev_info,
^

Caused by commit b83ae6d42143 ("fs: remove mapping->backing_dev_info")
interacting with commit d67ae825a59d ("pnfs/flexfiles: Add the FlexFile
Layout Driver") from the nfs tree.

I have added this merge fix patch (assuming it is correct, someone
needs to tell Linus about this when the trees get merged):

From: Stephen Rothwell <sfr@canb.auug.org.au>
Date: Mon, 9 Feb 2015 15:20:12 +1100
Subject: [PATCH] pnfs/flexfiles: fix FlexFile Layout Driver for removal
mapping->backing_dev_info

Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
---
fs/nfs/flexfilelayout/flexfilelayout.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/nfs/flexfilelayout/flexfilelayout.c b/fs/nfs/flexfilelayout/flexfilelayout.c
index f29fb7d7e8f8..c22ecaa86c1c 100644
--- a/fs/nfs/flexfilelayout/flexfilelayout.c
+++ b/fs/nfs/flexfilelayout/flexfilelayout.c
@@ -1366,7 +1366,7 @@ ff_layout_mark_request_commit(struct nfs_page *req,
spin_unlock(cinfo->lock);
if (!cinfo->dreq) {
inc_zone_page_state(req->wb_page, NR_UNSTABLE_NFS);
- inc_bdi_stat(page_file_mapping(req->wb_page)->backing_dev_info,
+ inc_bdi_stat(inode_to_bdi(page_file_mapping(req->wb_page)->host),
BDI_RECLAIMABLE);
__mark_inode_dirty(req->wb_context->dentry->d_inode,
I_DIRTY_DATASYNC);
--
2.1.4

--
Cheers,
Stephen Rothwell sfr@canb.auug.org.au

[-- Attachment #1.2.1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 819 bytes --]