[lustre-devel] [PATCH 02/34] lnet: Create struct lnet_net

James Simmons jsimmons at infradead.org
Mon Sep 10 16:23:49 PDT 2018


> This will contain some fields from lnet_ni, to be shared
> between multiple ni on the one network.
> 
> For now, only tunables are moved across, using
>  struct lnet_ioctl_config_lnd_cmn_tunables
> which is changed to use signed values so -1 can be stored.
> -1 means "no value"
> If the tunables haven't been initialised, then net_tunables_set is
> false.  Previously a NULL pointer had this meaning.
> 
> A 'struct lnet_net' is allocated as part of lnet_ni_alloc(), and freed
> by lnet_ni_free().

Acked-by: James Simmons <jsimmons at infradead.org>

The below needs fixing based on response to cover letter.

> This is part of
>     8cbb8cd3e771e7f7e0f99cafc19fad32770dc015
>        LU-7734 lnet: Multi-Rail local NI split
> 
> Signed-off-by: NeilBrown <neilb at suse.com>
> ---
>  .../staging/lustre/include/linux/lnet/lib-types.h  |   25 ++++++--
>  .../lustre/include/uapi/linux/lnet/lnet-dlc.h      |    8 +--
>  .../staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c    |    2 -
>  .../lustre/lnet/klnds/o2iblnd/o2iblnd_modparams.c  |   61 +++++++++++---------
>  .../staging/lustre/lnet/klnds/socklnd/socklnd.c    |   19 ++++--
>  drivers/staging/lustre/lnet/lnet/api-ni.c          |   45 +++++++++------
>  drivers/staging/lustre/lnet/lnet/config.c          |   24 ++++++--
>  drivers/staging/lustre/lnet/lnet/lib-move.c        |    5 +-
>  drivers/staging/lustre/lnet/lnet/peer.c            |    9 ++-
>  drivers/staging/lustre/lnet/lnet/router.c          |    8 ++-
>  drivers/staging/lustre/lnet/lnet/router_proc.c     |    6 +-
>  11 files changed, 129 insertions(+), 83 deletions(-)
> 
> diff --git a/drivers/staging/lustre/include/linux/lnet/lib-types.h b/drivers/staging/lustre/include/linux/lnet/lib-types.h
> index 078bc97a9ebf..ead8a4e1125a 100644
> --- a/drivers/staging/lustre/include/linux/lnet/lib-types.h
> +++ b/drivers/staging/lustre/include/linux/lnet/lib-types.h
> @@ -43,6 +43,7 @@
>  
>  #include <uapi/linux/lnet/lnet-types.h>
>  #include <uapi/linux/lnet/lnetctl.h>
> +#include <uapi/linux/lnet/lnet-dlc.h>
>  
>  /* Max payload size */
>  #define LNET_MAX_PAYLOAD      CONFIG_LNET_MAX_PAYLOAD
> @@ -252,17 +253,22 @@ struct lnet_tx_queue {
>  	struct list_head	tq_delayed;	/* delayed TXs */
>  };
>  
> +struct lnet_net {
> +	/* network tunables */
> +	struct lnet_ioctl_config_lnd_cmn_tunables net_tunables;
> +
> +	/*
> +	 * boolean to indicate that the tunables have been set and
> +	 * shouldn't be reset
> +	 */
> +	bool			  net_tunables_set;
> +};
> +
>  struct lnet_ni {
>  	spinlock_t		  ni_lock;
>  	struct list_head	  ni_list;	/* chain on ln_nis */
>  	struct list_head	  ni_cptlist;	/* chain on ln_nis_cpt */
> -	int			  ni_maxtxcredits; /* # tx credits  */
> -	/* # per-peer send credits */
> -	int			  ni_peertxcredits;
> -	/* # per-peer router buffer credits */
> -	int			  ni_peerrtrcredits;
> -	/* seconds to consider peer dead */
> -	int			  ni_peertimeout;
> +
>  	/* number of CPTs */
>  	int			ni_ncpts;
>  
> @@ -286,6 +292,9 @@ struct lnet_ni {
>  	/* when I was last alive */
>  	time64_t		ni_last_alive;
>  
> +	/* pointer to parent network */
> +	struct lnet_net		*ni_net;
> +
>  	/* my health status */
>  	struct lnet_ni_status	*ni_status;
>  
> @@ -397,7 +406,7 @@ struct lnet_peer_table {
>   * lnet_ni::ni_peertimeout has been set to a positive value
>   */
>  #define lnet_peer_aliveness_enabled(lp) (the_lnet.ln_routing && \
> -					 (lp)->lp_ni->ni_peertimeout > 0)
> +					 (lp)->lp_ni->ni_net->net_tunables.lct_peer_timeout > 0)
>  
>  struct lnet_route {
>  	struct list_head	 lr_list;	/* chain on net */
> diff --git a/drivers/staging/lustre/include/uapi/linux/lnet/lnet-dlc.h b/drivers/staging/lustre/include/uapi/linux/lnet/lnet-dlc.h
> index c1619f411d81..a8eb3b8f9fd7 100644
> --- a/drivers/staging/lustre/include/uapi/linux/lnet/lnet-dlc.h
> +++ b/drivers/staging/lustre/include/uapi/linux/lnet/lnet-dlc.h
> @@ -39,10 +39,10 @@
>  
>  struct lnet_ioctl_config_lnd_cmn_tunables {
>  	__u32 lct_version;
> -	__u32 lct_peer_timeout;
> -	__u32 lct_peer_tx_credits;
> -	__u32 lct_peer_rtr_credits;
> -	__u32 lct_max_tx_credits;
> +	__s32 lct_peer_timeout;
> +	__s32 lct_peer_tx_credits;
> +	__s32 lct_peer_rtr_credits;
> +	__s32 lct_max_tx_credits;
>  };
>  
>  struct lnet_ioctl_config_o2iblnd_tunables {
> diff --git a/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c b/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c
> index f496e6fcc416..0d17e22c4401 100644
> --- a/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c
> +++ b/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c
> @@ -337,7 +337,7 @@ int kiblnd_create_peer(struct lnet_ni *ni, struct kib_peer **peerp,
>  	peer->ibp_error = 0;
>  	peer->ibp_last_alive = 0;
>  	peer->ibp_max_frags = kiblnd_cfg_rdma_frags(peer->ibp_ni);
> -	peer->ibp_queue_depth = ni->ni_peertxcredits;
> +	peer->ibp_queue_depth = ni->ni_net->net_tunables.lct_peer_tx_credits;
>  	atomic_set(&peer->ibp_refcount, 1);  /* 1 ref for caller */
>  
>  	INIT_LIST_HEAD(&peer->ibp_list);     /* not in the peer table yet */
> diff --git a/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_modparams.c b/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_modparams.c
> index 39d07926d603..a1aca4dda38f 100644
> --- a/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_modparams.c
> +++ b/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_modparams.c
> @@ -171,7 +171,7 @@ int kiblnd_msg_queue_size(int version, struct lnet_ni *ni)
>  	if (version == IBLND_MSG_VERSION_1)
>  		return IBLND_MSG_QUEUE_SIZE_V1;
>  	else if (ni)
> -		return ni->ni_peertxcredits;
> +		return ni->ni_net->net_tunables.lct_peer_tx_credits;
>  	else
>  		return peer_credits;
>  }
> @@ -179,6 +179,7 @@ int kiblnd_msg_queue_size(int version, struct lnet_ni *ni)
>  int kiblnd_tunables_setup(struct lnet_ni *ni)
>  {
>  	struct lnet_ioctl_config_o2iblnd_tunables *tunables;
> +	struct lnet_ioctl_config_lnd_cmn_tunables *net_tunables;
>  
>  	/*
>  	 * if there was no tunables specified, setup the tunables to be
> @@ -204,35 +205,39 @@ int kiblnd_tunables_setup(struct lnet_ni *ni)
>  		return -EINVAL;
>  	}
>  
> -	if (!ni->ni_peertimeout)
> -		ni->ni_peertimeout = peer_timeout;
> +	net_tunables = &ni->ni_net->net_tunables;
>  
> -	if (!ni->ni_maxtxcredits)
> -		ni->ni_maxtxcredits = credits;
> +	if (net_tunables->lct_peer_timeout == -1)
> +		net_tunables->lct_peer_timeout = peer_timeout;
>  
> -	if (!ni->ni_peertxcredits)
> -		ni->ni_peertxcredits = peer_credits;
> +	if (net_tunables->lct_max_tx_credits == -1)
> +		net_tunables->lct_max_tx_credits = credits;
>  
> -	if (!ni->ni_peerrtrcredits)
> -		ni->ni_peerrtrcredits = peer_buffer_credits;
> +	if (net_tunables->lct_peer_tx_credits == -1)
> +		net_tunables->lct_peer_tx_credits = peer_credits;
>  
> -	if (ni->ni_peertxcredits < IBLND_CREDITS_DEFAULT)
> -		ni->ni_peertxcredits = IBLND_CREDITS_DEFAULT;
> +	if (net_tunables->lct_peer_rtr_credits == -1)
> +		net_tunables->lct_peer_rtr_credits = peer_buffer_credits;
>  
> -	if (ni->ni_peertxcredits > IBLND_CREDITS_MAX)
> -		ni->ni_peertxcredits = IBLND_CREDITS_MAX;
> +	if (net_tunables->lct_peer_tx_credits < IBLND_CREDITS_DEFAULT)
> +		net_tunables->lct_peer_tx_credits = IBLND_CREDITS_DEFAULT;
>  
> -	if (ni->ni_peertxcredits > credits)
> -		ni->ni_peertxcredits = credits;
> +	if (net_tunables->lct_peer_tx_credits > IBLND_CREDITS_MAX)
> +		net_tunables->lct_peer_tx_credits = IBLND_CREDITS_MAX;
> +
> +	if (net_tunables->lct_peer_tx_credits >
> +	    net_tunables->lct_max_tx_credits)
> +		net_tunables->lct_peer_tx_credits =
> +			net_tunables->lct_max_tx_credits;
>  
>  	if (!tunables->lnd_peercredits_hiw)
>  		tunables->lnd_peercredits_hiw = peer_credits_hiw;
>  
> -	if (tunables->lnd_peercredits_hiw < ni->ni_peertxcredits / 2)
> -		tunables->lnd_peercredits_hiw = ni->ni_peertxcredits / 2;
> +	if (tunables->lnd_peercredits_hiw < net_tunables->lct_peer_tx_credits / 2)
> +		tunables->lnd_peercredits_hiw = net_tunables->lct_peer_tx_credits / 2;
>  
> -	if (tunables->lnd_peercredits_hiw >= ni->ni_peertxcredits)
> -		tunables->lnd_peercredits_hiw = ni->ni_peertxcredits - 1;
> +	if (tunables->lnd_peercredits_hiw >= net_tunables->lct_peer_tx_credits)
> +		tunables->lnd_peercredits_hiw = net_tunables->lct_peer_tx_credits - 1;
>  
>  	if (tunables->lnd_map_on_demand <= 0 ||
>  	    tunables->lnd_map_on_demand > IBLND_MAX_RDMA_FRAGS) {
> @@ -252,21 +257,23 @@ int kiblnd_tunables_setup(struct lnet_ni *ni)
>  		if (tunables->lnd_map_on_demand > 0 &&
>  		    tunables->lnd_map_on_demand <= IBLND_MAX_RDMA_FRAGS / 8) {
>  			tunables->lnd_concurrent_sends =
> -						ni->ni_peertxcredits * 2;
> +					net_tunables->lct_peer_tx_credits * 2;
>  		} else {
> -			tunables->lnd_concurrent_sends = ni->ni_peertxcredits;
> +			tunables->lnd_concurrent_sends =
> +				net_tunables->lct_peer_tx_credits;
>  		}
>  	}
>  
> -	if (tunables->lnd_concurrent_sends > ni->ni_peertxcredits * 2)
> -		tunables->lnd_concurrent_sends = ni->ni_peertxcredits * 2;
> +	if (tunables->lnd_concurrent_sends > net_tunables->lct_peer_tx_credits * 2)
> +		tunables->lnd_concurrent_sends = net_tunables->lct_peer_tx_credits * 2;
>  
> -	if (tunables->lnd_concurrent_sends < ni->ni_peertxcredits / 2)
> -		tunables->lnd_concurrent_sends = ni->ni_peertxcredits / 2;
> +	if (tunables->lnd_concurrent_sends < net_tunables->lct_peer_tx_credits / 2)
> +		tunables->lnd_concurrent_sends = net_tunables->lct_peer_tx_credits / 2;
>  
> -	if (tunables->lnd_concurrent_sends < ni->ni_peertxcredits) {
> +	if (tunables->lnd_concurrent_sends < net_tunables->lct_peer_tx_credits) {
>  		CWARN("Concurrent sends %d is lower than message queue size: %d, performance may drop slightly.\n",
> -		      tunables->lnd_concurrent_sends, ni->ni_peertxcredits);
> +		      tunables->lnd_concurrent_sends,
> +		      net_tunables->lct_peer_tx_credits);
>  	}
>  
>  	if (!tunables->lnd_fmr_pool_size)
> diff --git a/drivers/staging/lustre/lnet/klnds/socklnd/socklnd.c b/drivers/staging/lustre/lnet/klnds/socklnd/socklnd.c
> index 4dde158451ea..4ad885f10235 100644
> --- a/drivers/staging/lustre/lnet/klnds/socklnd/socklnd.c
> +++ b/drivers/staging/lustre/lnet/klnds/socklnd/socklnd.c
> @@ -2739,12 +2739,19 @@ ksocknal_startup(struct lnet_ni *ni)
>  		goto fail_0;
>  
>  	spin_lock_init(&net->ksnn_lock);
> -	net->ksnn_incarnation = ktime_get_real_ns();
> -	ni->ni_data = net;
> -	ni->ni_peertimeout    = *ksocknal_tunables.ksnd_peertimeout;
> -	ni->ni_maxtxcredits   = *ksocknal_tunables.ksnd_credits;
> -	ni->ni_peertxcredits  = *ksocknal_tunables.ksnd_peertxcredits;
> -	ni->ni_peerrtrcredits = *ksocknal_tunables.ksnd_peerrtrcredits;
> +        net->ksnn_incarnation = ktime_get_real_ns();
> +        ni->ni_data = net;
> +	if (!ni->ni_net->net_tunables_set) {
> +		ni->ni_net->net_tunables.lct_peer_timeout =
> +			*ksocknal_tunables.ksnd_peertimeout;
> +		ni->ni_net->net_tunables.lct_max_tx_credits =
> +			*ksocknal_tunables.ksnd_credits;
> +		ni->ni_net->net_tunables.lct_peer_tx_credits =
> +			*ksocknal_tunables.ksnd_peertxcredits;
> +		ni->ni_net->net_tunables.lct_peer_rtr_credits =
> +			*ksocknal_tunables.ksnd_peerrtrcredits;
> +		ni->ni_net->net_tunables_set = true;
> +	}
>  
>  	net->ksnn_ninterfaces = 0;
>  	if (!ni->ni_interfaces[0]) {
> diff --git a/drivers/staging/lustre/lnet/lnet/api-ni.c b/drivers/staging/lustre/lnet/lnet/api-ni.c
> index f9fcce2a5643..cd4189fa7acb 100644
> --- a/drivers/staging/lustre/lnet/lnet/api-ni.c
> +++ b/drivers/staging/lustre/lnet/lnet/api-ni.c
> @@ -1036,11 +1036,11 @@ lnet_ni_tq_credits(struct lnet_ni *ni)
>  	LASSERT(ni->ni_ncpts >= 1);
>  
>  	if (ni->ni_ncpts == 1)
> -		return ni->ni_maxtxcredits;
> +		return ni->ni_net->net_tunables.lct_max_tx_credits;
>  
> -	credits = ni->ni_maxtxcredits / ni->ni_ncpts;
> -	credits = max(credits, 8 * ni->ni_peertxcredits);
> -	credits = min(credits, ni->ni_maxtxcredits);
> +	credits = ni->ni_net->net_tunables.lct_max_tx_credits / ni->ni_ncpts;
> +	credits = max(credits, 8 * ni->ni_net->net_tunables.lct_peer_tx_credits);
> +	credits = min(credits, ni->ni_net->net_tunables.lct_max_tx_credits);
>  
>  	return credits;
>  }
> @@ -1271,16 +1271,16 @@ lnet_startup_lndni(struct lnet_ni *ni, struct lnet_ioctl_config_data *conf)
>  	 */
>  	if (conf) {
>  		if (conf->cfg_config_u.cfg_net.net_peer_rtr_credits >= 0)
> -			ni->ni_peerrtrcredits =
> +			ni->ni_net->net_tunables.lct_peer_rtr_credits =
>  				conf->cfg_config_u.cfg_net.net_peer_rtr_credits;
>  		if (conf->cfg_config_u.cfg_net.net_peer_timeout >= 0)
> -			ni->ni_peertimeout =
> +			ni->ni_net->net_tunables.lct_peer_timeout =
>  				conf->cfg_config_u.cfg_net.net_peer_timeout;
>  		if (conf->cfg_config_u.cfg_net.net_peer_tx_credits != -1)
> -			ni->ni_peertxcredits =
> +			ni->ni_net->net_tunables.lct_peer_tx_credits =
>  				conf->cfg_config_u.cfg_net.net_peer_tx_credits;
>  		if (conf->cfg_config_u.cfg_net.net_max_tx_credits >= 0)
> -			ni->ni_maxtxcredits =
> +			ni->ni_net->net_tunables.lct_max_tx_credits =
>  				conf->cfg_config_u.cfg_net.net_max_tx_credits;
>  	}
>  
> @@ -1297,8 +1297,6 @@ lnet_startup_lndni(struct lnet_ni *ni, struct lnet_ioctl_config_data *conf)
>  		goto failed0;
>  	}
>  
> -	LASSERT(ni->ni_peertimeout <= 0 || lnd->lnd_query);
> -
>  	lnet_net_lock(LNET_LOCK_EX);
>  	/* refcount for ln_nis */
>  	lnet_ni_addref_locked(ni, 0);
> @@ -1314,13 +1312,18 @@ lnet_startup_lndni(struct lnet_ni *ni, struct lnet_ioctl_config_data *conf)
>  		lnet_ni_addref(ni);
>  		LASSERT(!the_lnet.ln_loni);
>  		the_lnet.ln_loni = ni;
> +		ni->ni_net->net_tunables.lct_peer_tx_credits = 0;
> +		ni->ni_net->net_tunables.lct_peer_rtr_credits = 0;
> +		ni->ni_net->net_tunables.lct_max_tx_credits = 0;
> +		ni->ni_net->net_tunables.lct_peer_timeout = 0;
>  		return 0;
>  	}
>  
> -	if (!ni->ni_peertxcredits || !ni->ni_maxtxcredits) {
> +	if (!ni->ni_net->net_tunables.lct_peer_tx_credits ||
> +	    !ni->ni_net->net_tunables.lct_max_tx_credits) {
>  		LCONSOLE_ERROR_MSG(0x107, "LNI %s has no %scredits\n",
>  				   libcfs_lnd2str(lnd->lnd_type),
> -				   !ni->ni_peertxcredits ?
> +				   !ni->ni_net->net_tunables.lct_peer_tx_credits ?
>  				   "" : "per-peer ");
>  		/*
>  		 * shutdown the NI since if we get here then it must've already
> @@ -1343,9 +1346,11 @@ lnet_startup_lndni(struct lnet_ni *ni, struct lnet_ioctl_config_data *conf)
>  	add_device_randomness(&seed, sizeof(seed));
>  
>  	CDEBUG(D_LNI, "Added LNI %s [%d/%d/%d/%d]\n",
> -	       libcfs_nid2str(ni->ni_nid), ni->ni_peertxcredits,
> +	       libcfs_nid2str(ni->ni_nid),
> +		ni->ni_net->net_tunables.lct_peer_tx_credits,
>  	       lnet_ni_tq_credits(ni) * LNET_CPT_NUMBER,
> -	       ni->ni_peerrtrcredits, ni->ni_peertimeout);
> +	       ni->ni_net->net_tunables.lct_peer_rtr_credits,
> +		ni->ni_net->net_tunables.lct_peer_timeout);
>  
>  	return 0;
>  failed0:
> @@ -1667,10 +1672,14 @@ lnet_fill_ni_info(struct lnet_ni *ni, struct lnet_ioctl_config_data *config)
>  	}
>  
>  	config->cfg_nid = ni->ni_nid;
> -	config->cfg_config_u.cfg_net.net_peer_timeout = ni->ni_peertimeout;
> -	config->cfg_config_u.cfg_net.net_max_tx_credits = ni->ni_maxtxcredits;
> -	config->cfg_config_u.cfg_net.net_peer_tx_credits = ni->ni_peertxcredits;
> -	config->cfg_config_u.cfg_net.net_peer_rtr_credits = ni->ni_peerrtrcredits;
> +	config->cfg_config_u.cfg_net.net_peer_timeout =
> +		ni->ni_net->net_tunables.lct_peer_timeout;
> +	config->cfg_config_u.cfg_net.net_max_tx_credits =
> +		ni->ni_net->net_tunables.lct_max_tx_credits;
> +	config->cfg_config_u.cfg_net.net_peer_tx_credits =
> +		ni->ni_net->net_tunables.lct_peer_tx_credits;
> +	config->cfg_config_u.cfg_net.net_peer_rtr_credits =
> +		ni->ni_net->net_tunables.lct_peer_rtr_credits;
>  
>  	net_config->ni_status = ni->ni_status->ns_status;
>  
> diff --git a/drivers/staging/lustre/lnet/lnet/config.c b/drivers/staging/lustre/lnet/lnet/config.c
> index 091c4f714e84..86a53854e427 100644
> --- a/drivers/staging/lustre/lnet/lnet/config.c
> +++ b/drivers/staging/lustre/lnet/lnet/config.c
> @@ -114,29 +114,38 @@ lnet_ni_free(struct lnet_ni *ni)
>  	if (ni->ni_net_ns)
>  		put_net(ni->ni_net_ns);
>  
> +	kvfree(ni->ni_net);
>  	kfree(ni);
>  }
>  
>  struct lnet_ni *
> -lnet_ni_alloc(__u32 net, struct cfs_expr_list *el, struct list_head *nilist)
> +lnet_ni_alloc(__u32 net_id, struct cfs_expr_list *el, struct list_head *nilist)
>  {
>  	struct lnet_tx_queue *tq;
>  	struct lnet_ni *ni;
>  	int rc;
>  	int i;
> +	struct lnet_net		*net;
>  
> -	if (!lnet_net_unique(net, nilist)) {
> +	if (!lnet_net_unique(net_id, nilist)) {
>  		LCONSOLE_ERROR_MSG(0x111, "Duplicate network specified: %s\n",
> -				   libcfs_net2str(net));
> +				   libcfs_net2str(net_id));
>  		return NULL;
>  	}
>  
>  	ni = kzalloc(sizeof(*ni), GFP_NOFS);
> -	if (!ni) {
> +	net = kzalloc(sizeof(*net), GFP_NOFS);
> +	if (!ni || !net) {
> +		kfree(ni); kfree(net);
>  		CERROR("Out of memory creating network %s\n",
> -		       libcfs_net2str(net));
> +		       libcfs_net2str(net_id));
>  		return NULL;
>  	}
> +	/* initialize global paramters to undefiend */
> +	net->net_tunables.lct_peer_timeout = -1;
> +	net->net_tunables.lct_max_tx_credits = -1;
> +	net->net_tunables.lct_peer_tx_credits = -1;
> +	net->net_tunables.lct_peer_rtr_credits = -1;
>  
>  	spin_lock_init(&ni->ni_lock);
>  	INIT_LIST_HEAD(&ni->ni_cptlist);
> @@ -160,7 +169,7 @@ lnet_ni_alloc(__u32 net, struct cfs_expr_list *el, struct list_head *nilist)
>  		rc = cfs_expr_list_values(el, LNET_CPT_NUMBER, &ni->ni_cpts);
>  		if (rc <= 0) {
>  			CERROR("Failed to set CPTs for NI %s: %d\n",
> -			       libcfs_net2str(net), rc);
> +			       libcfs_net2str(net_id), rc);
>  			goto failed;
>  		}
>  
> @@ -173,8 +182,9 @@ lnet_ni_alloc(__u32 net, struct cfs_expr_list *el, struct list_head *nilist)
>  		ni->ni_ncpts = rc;
>  	}
>  
> +	ni->ni_net = net;
>  	/* LND will fill in the address part of the NID */
> -	ni->ni_nid = LNET_MKNID(net, 0);
> +	ni->ni_nid = LNET_MKNID(net_id, 0);
>  
>  	/* Store net namespace in which current ni is being created */
>  	if (current->nsproxy->net_ns)
> diff --git a/drivers/staging/lustre/lnet/lnet/lib-move.c b/drivers/staging/lustre/lnet/lnet/lib-move.c
> index edcafac055ed..f186e6a16d34 100644
> --- a/drivers/staging/lustre/lnet/lnet/lib-move.c
> +++ b/drivers/staging/lustre/lnet/lnet/lib-move.c
> @@ -524,7 +524,8 @@ lnet_peer_is_alive(struct lnet_peer *lp, unsigned long now)
>  	    lp->lp_timestamp >= lp->lp_last_alive)
>  		return 0;
>  
> -	deadline = lp->lp_last_alive + lp->lp_ni->ni_peertimeout;
> +	deadline = lp->lp_last_alive +
> +		lp->lp_ni->ni_net->net_tunables.lct_peer_timeout;
>  	alive = deadline > now;
>  
>  	/* Update obsolete lp_alive except for routers assumed to be dead
> @@ -569,7 +570,7 @@ lnet_peer_alive_locked(struct lnet_peer *lp)
>  				      libcfs_nid2str(lp->lp_nid),
>  				      now, next_query,
>  				      lnet_queryinterval,
> -				      lp->lp_ni->ni_peertimeout);
> +				      lp->lp_ni->ni_net->net_tunables.lct_peer_timeout);
>  			return 0;
>  		}
>  	}
> diff --git a/drivers/staging/lustre/lnet/lnet/peer.c b/drivers/staging/lustre/lnet/lnet/peer.c
> index d9452c322e4d..b76ac3e051d9 100644
> --- a/drivers/staging/lustre/lnet/lnet/peer.c
> +++ b/drivers/staging/lustre/lnet/lnet/peer.c
> @@ -342,8 +342,8 @@ lnet_nid2peer_locked(struct lnet_peer **lpp, lnet_nid_t nid, int cpt)
>  		goto out;
>  	}
>  
> -	lp->lp_txcredits = lp->lp_ni->ni_peertxcredits;
> -	lp->lp_mintxcredits = lp->lp_ni->ni_peertxcredits;
> +	lp->lp_txcredits = lp->lp_ni->ni_net->net_tunables.lct_peer_tx_credits;
> +	lp->lp_mintxcredits = lp->lp_ni->ni_net->net_tunables.lct_peer_tx_credits;
>  	lp->lp_rtrcredits = lnet_peer_buffer_credits(lp->lp_ni);
>  	lp->lp_minrtrcredits = lnet_peer_buffer_credits(lp->lp_ni);
>  
> @@ -383,7 +383,7 @@ lnet_debug_peer(lnet_nid_t nid)
>  
>  	CDEBUG(D_WARNING, "%-24s %4d %5s %5d %5d %5d %5d %5d %ld\n",
>  	       libcfs_nid2str(lp->lp_nid), lp->lp_refcount,
> -	       aliveness, lp->lp_ni->ni_peertxcredits,
> +	       aliveness, lp->lp_ni->ni_net->net_tunables.lct_peer_tx_credits,
>  	       lp->lp_rtrcredits, lp->lp_minrtrcredits,
>  	       lp->lp_txcredits, lp->lp_mintxcredits, lp->lp_txqnob);
>  
> @@ -438,7 +438,8 @@ lnet_get_peer_info(__u32 peer_index, __u64 *nid,
>  
>  			*nid = lp->lp_nid;
>  			*refcount = lp->lp_refcount;
> -			*ni_peer_tx_credits = lp->lp_ni->ni_peertxcredits;
> +			*ni_peer_tx_credits =
> +				lp->lp_ni->ni_net->net_tunables.lct_peer_tx_credits;
>  			*peer_tx_credits = lp->lp_txcredits;
>  			*peer_rtr_credits = lp->lp_rtrcredits;
>  			*peer_min_rtr_credits = lp->lp_mintxcredits;
> diff --git a/drivers/staging/lustre/lnet/lnet/router.c b/drivers/staging/lustre/lnet/lnet/router.c
> index 02241fbc9eaa..7d61c5d71426 100644
> --- a/drivers/staging/lustre/lnet/lnet/router.c
> +++ b/drivers/staging/lustre/lnet/lnet/router.c
> @@ -57,9 +57,11 @@ MODULE_PARM_DESC(auto_down, "Automatically mark peers down on comms error");
>  int
>  lnet_peer_buffer_credits(struct lnet_ni *ni)
>  {
> +	struct lnet_net *net = ni->ni_net;
> +
>  	/* NI option overrides LNet default */
> -	if (ni->ni_peerrtrcredits > 0)
> -		return ni->ni_peerrtrcredits;
> +	if (net->net_tunables.lct_peer_rtr_credits > 0)
> +		return net->net_tunables.lct_peer_rtr_credits;
>  	if (peer_buffer_credits > 0)
>  		return peer_buffer_credits;
>  
> @@ -67,7 +69,7 @@ lnet_peer_buffer_credits(struct lnet_ni *ni)
>  	 * As an approximation, allow this peer the same number of router
>  	 * buffers as it is allowed outstanding sends
>  	 */
> -	return ni->ni_peertxcredits;
> +	return net->net_tunables.lct_peer_tx_credits;
>  }
>  
>  /* forward ref's */
> diff --git a/drivers/staging/lustre/lnet/lnet/router_proc.c b/drivers/staging/lustre/lnet/lnet/router_proc.c
> index 31f4982f7f17..19cea7076057 100644
> --- a/drivers/staging/lustre/lnet/lnet/router_proc.c
> +++ b/drivers/staging/lustre/lnet/lnet/router_proc.c
> @@ -489,7 +489,7 @@ static int proc_lnet_peers(struct ctl_table *table, int write,
>  			int nrefs = peer->lp_refcount;
>  			time64_t lastalive = -1;
>  			char *aliveness = "NA";
> -			int maxcr = peer->lp_ni->ni_peertxcredits;
> +			int maxcr = peer->lp_ni->ni_net->net_tunables.lct_peer_tx_credits;
>  			int txcr = peer->lp_txcredits;
>  			int mintxcr = peer->lp_mintxcredits;
>  			int rtrcr = peer->lp_rtrcredits;
> @@ -704,8 +704,8 @@ static int proc_lnet_nis(struct ctl_table *table, int write,
>  					      "%-24s %6s %5lld %4d %4d %4d %5d %5d %5d\n",
>  					      libcfs_nid2str(ni->ni_nid), stat,
>  					      last_alive, *ni->ni_refs[i],
> -					      ni->ni_peertxcredits,
> -					      ni->ni_peerrtrcredits,
> +					      ni->ni_net->net_tunables.lct_peer_tx_credits,
> +					      ni->ni_net->net_tunables.lct_peer_rtr_credits,
>  					      tq->tq_credits_max,
>  					      tq->tq_credits,
>  					      tq->tq_credits_min);
> 
> 
> 


More information about the lustre-devel mailing list