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,
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;
}
/* 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;
__u32 size;
int rc;
- lp = lnet_find_peer(*primary_nid);
+ lp = lnet_find_peer(cfg->prcfg_prim_nid);
if (!lp) {
rc = -ENOENT;
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;
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)