mbox series

[v1,00/12] Handling session trunking group membership

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

Message

Olga Kornievskaia June 20, 2022, 3:23 p.m. UTC
From: Olga Kornievskaia <kolga@netapp.com>

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.

Olga Kornievskaia (12):
  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 parameterize rpc_clnt_iterate_for_each_xprt with iterator init
    function
  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                    |  18 ++-
 include/linux/sunrpc/clnt.h          |   7 +-
 include/linux/sunrpc/xprt.h          |   3 +
 include/linux/sunrpc/xprtmultipath.h |   7 +-
 net/sunrpc/clnt.c                    | 204 ++++++++++++++++++++++-----
 net/sunrpc/debugfs.c                 |   3 +-
 net/sunrpc/stats.c                   |   2 +-
 net/sunrpc/sysfs.c                   |  28 +---
 net/sunrpc/xprt.c                    |  35 +++++
 net/sunrpc/xprtmultipath.c           | 109 +++++++++++---
 10 files changed, 338 insertions(+), 78 deletions(-)