SUNRPC keep track of number of transports to unique addresses
authorOlga Kornievskaia <kolga@netapp.com>
Fri, 27 Aug 2021 18:37:14 +0000 (14:37 -0400)
committerAnna Schumaker <Anna.Schumaker@Netapp.com>
Fri, 27 Aug 2021 20:36:53 +0000 (16:36 -0400)
Currently, xprt_switch keeps a number of all xprts (xps_nxprts)
that were added to the switch regardless of whethere it's an
nconnect transport or a transport to a trunkable address.
Introduce a new counter to keep track of transports to unique
destination addresses per xprt_switch.

Signed-off-by: Olga Kornievskaia <kolga@netapp.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
include/linux/sunrpc/xprtmultipath.h
net/sunrpc/clnt.c
net/sunrpc/xprtmultipath.c

index b19addc..bbb8a5f 100644 (file)
@@ -18,6 +18,7 @@ struct rpc_xprt_switch {
        unsigned int            xps_id;
        unsigned int            xps_nxprts;
        unsigned int            xps_nactive;
+       unsigned int            xps_nunique_destaddr_xprts;
        atomic_long_t           xps_queuelen;
        struct list_head        xps_xprt_list;
 
index a5b7f6e..451ac7d 100644 (file)
@@ -2799,7 +2799,7 @@ int rpc_clnt_test_and_add_xprt(struct rpc_clnt *clnt,
 
        task = rpc_call_null_helper(clnt, xprt, NULL, RPC_TASK_ASYNC,
                        &rpc_cb_add_xprt_call_ops, data);
-
+       data->xps->xps_nunique_destaddr_xprts++;
        rpc_put_task(task);
 success:
        return 1;
index c60820e..1693f81 100644 (file)
@@ -139,6 +139,7 @@ struct rpc_xprt_switch *xprt_switch_alloc(struct rpc_xprt *xprt,
                xps->xps_iter_ops = &rpc_xprt_iter_singular;
                rpc_sysfs_xprt_switch_setup(xps, xprt, gfp_flags);
                xprt_switch_add_xprt_locked(xps, xprt);
+               xps->xps_nunique_destaddr_xprts = 1;
                rpc_sysfs_xprt_setup(xps, xprt, gfp_flags);
        }