Whamcloud - gitweb
LU-9480 lnet: show peer state 30/26130/21
authorAmir Shehata <amir.shehata@intel.com>
Wed, 22 Mar 2017 20:34:23 +0000 (13:34 -0700)
committerAmir Shehata <amir.shehata@intel.com>
Tue, 22 Aug 2017 16:29:00 +0000 (16:29 +0000)
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

Test-Parameters: trivial
Signed-off-by: Amir Shehata <amir.shehata@intel.com>
Signed-off-by: Olaf Weber <olaf@sgi.com>
Change-Id: I1e169b2b7bf80671ea302f04c6fb948bbcbbb245
Reviewed-on: https://review.whamcloud.com/26130
Reviewed-by: Olaf Weber <olaf.weber@hpe.com>
Reviewed-by: Dmitry Eremin <dmitry.eremin@intel.com>
lnet/include/lnet/lib-lnet.h
lnet/lnet/api-ni.c
lnet/lnet/peer.c
lnet/utils/lnetconfig/liblnetconfig.c

index 8228e55..4e3f09c 100644 (file)
@@ -888,9 +888,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,
index 63eeaca..a9b1839 100644 (file)
@@ -3238,11 +3238,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;
index eb78fc7..507fcbe 100644 (file)
@@ -3299,9 +3299,7 @@ int 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;
@@ -3312,7 +3310,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;
@@ -3322,17 +3320,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;
index f172698..c32a494 100644 (file)
@@ -2512,6 +2512,16 @@ int lustre_lnet_show_peer(char *knid, int detail, int seq_no,
                                        peer_info.prcfg_mr ? "True" : "False")
                    == NULL)
                        goto out;
+               /*
+                * print out the state of the peer only if details are
+                * requested
+                */
+               if (detail >= 3) {
+                       if (cYAML_create_number(peer, "peer state",
+                                               peer_info.prcfg_state)
+                               == NULL)
+                               goto out;
+               }
 
                tmp = cYAML_create_seq(peer, "peer ni");
                if (tmp == NULL)