mbox series

[v2,00/11] Handling session trunking group membership

Message ID 20220721220714.22620-1-olga.kornievskaia@gmail.com (mailing list archive)
Headers show
Series Handling session trunking group membership | expand

Message

Olga Kornievskaia July 21, 2022, 10:07 p.m. UTC
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.

v2:
-- added documentation to new rpc functions called by NFS layer
-- removed rpc_xprt_offline_destroy() and left only rpc_xprt_offline
-- created a different function for going through transports and 
checking each valid one for session trunking ability.

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           | 110 ++++++++++++---
 8 files changed, 337 insertions(+), 64 deletions(-)