Client needs to handle session trunking group membership changes that occur when a particular server leaves an established trunked group. This results in a server sending a NFS4ERR_BAD_SESSION because that server no longer has session's state. This series proposes to deal with that situation in two fold. First on DESTROY_SESSION, the client will offline all trunked connections it has established to the server. Then on CREATE_SESSION it will iterate thru offlined connections only and probe them again for session trunking. If session trunking conditions still hold then such transport would be made active again otherwise it will be deleted from the trunked group. v3: -- fixed documentation for the rpc_xprt_switch_remove_xprt() function Olga Kornievskaia (11): SUNRPC expose functions for offline remote xprt functionality SUNRPC add function to offline remove trunkable transports NFSv4.1 offline trunkable transports on DESTROY_SESSION SUNRPC create an iterator to list only OFFLINE xprts SUNRPC enable back offline transports in trunking discovery SUNRPC create an rpc function that allows xprt removal from rpc_clnt NFSv4.1 remove xprt from xprt_switch if session trunking test fails SUNRPC restructure rpc_clnt_setup_test_and_add_xprt SUNRPC export xprt_iter_rewind function SUNRPC create a function that probes only offline transports NFSv4.1 probe offline transports for trunking on session creation fs/nfs/nfs4proc.c | 12 ++ include/linux/sunrpc/clnt.h | 5 + include/linux/sunrpc/xprt.h | 3 + include/linux/sunrpc/xprtmultipath.h | 7 +- net/sunrpc/clnt.c | 204 +++++++++++++++++++++++---- net/sunrpc/sysfs.c | 28 +--- net/sunrpc/xprt.c | 32 +++++ net/sunrpc/xprtmultipath.c | 111 ++++++++++++--- 8 files changed, 338 insertions(+), 64 deletions(-) -- 2.27.0