[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