[lustre-devel] [PATCH 23/24] lustre: lnet: show peer state

James Simmons jsimmons at infradead.org
Sun Oct 14 16:52:34 PDT 2018


> From: Amir Shehata <amir.shehata at intel.com>
> 
> It is important to show the peer state when debugging.
> This patch exports the peer state from the kernel to
> user space, and is shown when the detail level requested
> in the peer show command is >= 3

Reviewed-by: James Simmons <jsimmons at infradead.org>
 
> WC-bug-id: https://jira.whamcloud.com/browse/LU-9480
> Signed-off-by: Amir Shehata <amir.shehata at intel.com>
> Signed-off-by: Olaf Weber <olaf at sgi.com>
> Reviewed-on: https://review.whamcloud.com/26130
> Reviewed-by: Olaf Weber <olaf.weber at hpe.com>
> Reviewed-by: Dmitry Eremin <dmitry.eremin at intel.com>
> Signed-off-by: NeilBrown <neilb at suse.com>
> ---
>  .../staging/lustre/include/linux/lnet/lib-lnet.h   |    4 +---
>  drivers/staging/lustre/lnet/lnet/api-ni.c          |    6 +-----
>  drivers/staging/lustre/lnet/lnet/peer.c            |   21 ++++++++++----------
>  3 files changed, 12 insertions(+), 19 deletions(-)
> 
> diff --git a/drivers/staging/lustre/include/linux/lnet/lib-lnet.h b/drivers/staging/lustre/include/linux/lnet/lib-lnet.h
> index 91980f60a50d..fcfd844e0162 100644
> --- a/drivers/staging/lustre/include/linux/lnet/lib-lnet.h
> +++ b/drivers/staging/lustre/include/linux/lnet/lib-lnet.h
> @@ -733,9 +733,7 @@ bool lnet_peer_is_pref_nid_locked(struct lnet_peer_ni *lpni, lnet_nid_t nid);
>  int lnet_peer_ni_set_non_mr_pref_nid(struct lnet_peer_ni *lpni, lnet_nid_t nid);
>  int lnet_add_peer_ni(lnet_nid_t key_nid, lnet_nid_t nid, bool mr);
>  int lnet_del_peer_ni(lnet_nid_t key_nid, lnet_nid_t nid);
> -int lnet_get_peer_info(lnet_nid_t *primary_nid, lnet_nid_t *nid,
> -		       __u32 *nnis, bool *mr, __u32 *sizep,
> -		       void __user *bulk);
> +int lnet_get_peer_info(struct lnet_ioctl_peer_cfg *cfg, void __user *bulk);
>  int lnet_get_peer_ni_info(__u32 peer_index, __u64 *nid,
>  			  char alivness[LNET_MAX_STR_LEN],
>  			  __u32 *cpt_iter, __u32 *refcount,
> diff --git a/drivers/staging/lustre/lnet/lnet/api-ni.c b/drivers/staging/lustre/lnet/lnet/api-ni.c
> index 0852118bf803..e2c86b8279e5 100644
> --- a/drivers/staging/lustre/lnet/lnet/api-ni.c
> +++ b/drivers/staging/lustre/lnet/lnet/api-ni.c
> @@ -3166,11 +3166,7 @@ LNetCtl(unsigned int cmd, void *arg)
>  			return -EINVAL;
>  
>  		mutex_lock(&the_lnet.ln_api_mutex);
> -		rc = lnet_get_peer_info(&cfg->prcfg_prim_nid,
> -					&cfg->prcfg_cfg_nid,
> -					&cfg->prcfg_count,
> -					&cfg->prcfg_mr,
> -					&cfg->prcfg_size,
> +		rc = lnet_get_peer_info(cfg,
>  					(void __user *)cfg->prcfg_bulk);
>  		mutex_unlock(&the_lnet.ln_api_mutex);
>  		return rc;
> diff --git a/drivers/staging/lustre/lnet/lnet/peer.c b/drivers/staging/lustre/lnet/lnet/peer.c
> index 03c1c34517e4..5f61fca09f44 100644
> --- a/drivers/staging/lustre/lnet/lnet/peer.c
> +++ b/drivers/staging/lustre/lnet/lnet/peer.c
> @@ -3296,9 +3296,7 @@ lnet_get_peer_ni_info(__u32 peer_index, __u64 *nid,
>  }
>  
>  /* ln_api_mutex is held, which keeps the peer list stable */
> -int lnet_get_peer_info(lnet_nid_t *primary_nid, lnet_nid_t *nidp,
> -		       __u32 *nnis, bool *mr, __u32 *sizep,
> -		       void __user *bulk)
> +int lnet_get_peer_info(struct lnet_ioctl_peer_cfg *cfg, void __user *bulk)
>  {
>  	struct lnet_ioctl_element_stats *lpni_stats;
>  	struct lnet_ioctl_element_msg_stats *lpni_msg_stats;
> @@ -3309,7 +3307,7 @@ int lnet_get_peer_info(lnet_nid_t *primary_nid, lnet_nid_t *nidp,
>  	__u32 size;
>  	int rc;
>  
> -	lp = lnet_find_peer(*primary_nid);
> +	lp = lnet_find_peer(cfg->prcfg_prim_nid);
>  
>  	if (!lp) {
>  		rc = -ENOENT;
> @@ -3319,17 +3317,18 @@ int lnet_get_peer_info(lnet_nid_t *primary_nid, lnet_nid_t *nidp,
>  	size = sizeof(nid) + sizeof(*lpni_info) + sizeof(*lpni_stats)
>  		+ sizeof(*lpni_msg_stats);
>  	size *= lp->lp_nnis;
> -	if (size > *sizep) {
> -		*sizep = size;
> +	if (size > cfg->prcfg_size) {
> +		cfg->prcfg_size = size;
>  		rc = -E2BIG;
>  		goto out_lp_decref;
>  	}
>  
> -	*primary_nid = lp->lp_primary_nid;
> -	*mr = lnet_peer_is_multi_rail(lp);
> -	*nidp = lp->lp_primary_nid;
> -	*nnis = lp->lp_nnis;
> -	*sizep = size;
> +	cfg->prcfg_prim_nid = lp->lp_primary_nid;
> +	cfg->prcfg_mr = lnet_peer_is_multi_rail(lp);
> +	cfg->prcfg_cfg_nid = lp->lp_primary_nid;
> +	cfg->prcfg_count = lp->lp_nnis;
> +	cfg->prcfg_size = size;
> +	cfg->prcfg_state = lp->lp_state;
>  
>  	/* Allocate helper buffers. */
>  	rc = -ENOMEM;
> 
> 
> 


More information about the lustre-devel mailing list