Whamcloud - gitweb
git://git.whamcloud.com
/
fs
/
lustre-release.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
| inline |
side by side
LU-9120 lnet: Add ioctl to get health stats
[fs/lustre-release.git]
/
lnet
/
lnet
/
peer.c
diff --git
a/lnet/lnet/peer.c
b/lnet/lnet/peer.c
index
9d87f52
..
cb71514
100644
(file)
--- a/
lnet/lnet/peer.c
+++ b/
lnet/lnet/peer.c
@@
-3351,6
+3351,7
@@
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;
+ struct lnet_ioctl_peer_ni_hstats *lpni_hstats;
struct lnet_peer_ni_credit_info *lpni_info;
struct lnet_peer_ni *lpni;
struct lnet_peer *lp;
@@
-3366,7
+3367,7
@@
int lnet_get_peer_info(struct lnet_ioctl_peer_cfg *cfg, void __user *bulk)
}
size = sizeof(nid) + sizeof(*lpni_info) + sizeof(*lpni_stats)
- + sizeof(*lpni_msg_stats);
+ + sizeof(*lpni_msg_stats)
+ sizeof(*lpni_hstats)
;
size *= lp->lp_nnis;
if (size > cfg->prcfg_size) {
cfg->prcfg_size = size;
@@
-3392,6
+3393,9
@@
int lnet_get_peer_info(struct lnet_ioctl_peer_cfg *cfg, void __user *bulk)
LIBCFS_ALLOC(lpni_msg_stats, sizeof(*lpni_msg_stats));
if (!lpni_msg_stats)
goto out_free_stats;
+ LIBCFS_ALLOC(lpni_hstats, sizeof(*lpni_hstats));
+ if (!lpni_hstats)
+ goto out_free_msg_stats;
lpni = NULL;
@@
-3399,7
+3403,7
@@
int lnet_get_peer_info(struct lnet_ioctl_peer_cfg *cfg, void __user *bulk)
while ((lpni = lnet_get_next_peer_ni_locked(lp, NULL, lpni)) != NULL) {
nid = lpni->lpni_nid;
if (copy_to_user(bulk, &nid, sizeof(nid)))
- goto out_free_
msg_
stats;
+ goto out_free_
h
stats;
bulk += sizeof(nid);
memset(lpni_info, 0, sizeof(*lpni_info));
@@
-3418,7
+3422,7
@@
int lnet_get_peer_info(struct lnet_ioctl_peer_cfg *cfg, void __user *bulk)
lpni_info->cr_peer_min_tx_credits = lpni->lpni_mintxcredits;
lpni_info->cr_peer_tx_qnob = lpni->lpni_txqnob;
if (copy_to_user(bulk, lpni_info, sizeof(*lpni_info)))
- goto out_free_
msg_
stats;
+ goto out_free_
h
stats;
bulk += sizeof(*lpni_info);
memset(lpni_stats, 0, sizeof(*lpni_stats));
@@
-3429,15
+3433,30
@@
int lnet_get_peer_info(struct lnet_ioctl_peer_cfg *cfg, void __user *bulk)
lpni_stats->iel_drop_count = lnet_sum_stats(&lpni->lpni_stats,
LNET_STATS_TYPE_DROP);
if (copy_to_user(bulk, lpni_stats, sizeof(*lpni_stats)))
- goto out_free_
msg_
stats;
+ goto out_free_
h
stats;
bulk += sizeof(*lpni_stats);
lnet_usr_translate_stats(lpni_msg_stats, &lpni->lpni_stats);
if (copy_to_user(bulk, lpni_msg_stats, sizeof(*lpni_msg_stats)))
- goto out_free_
msg_
stats;
+ goto out_free_
h
stats;
bulk += sizeof(*lpni_msg_stats);
+ lpni_hstats->hlpni_network_timeout =
+ atomic_read(&lpni->lpni_hstats.hlt_network_timeout);
+ lpni_hstats->hlpni_remote_dropped =
+ atomic_read(&lpni->lpni_hstats.hlt_remote_dropped);
+ lpni_hstats->hlpni_remote_timeout =
+ atomic_read(&lpni->lpni_hstats.hlt_remote_timeout);
+ lpni_hstats->hlpni_remote_error =
+ atomic_read(&lpni->lpni_hstats.hlt_remote_error);
+ lpni_hstats->hlpni_health_value =
+ atomic_read(&lpni->lpni_healthv);
+ if (copy_to_user(bulk, lpni_hstats, sizeof(*lpni_hstats)))
+ goto out_free_hstats;
+ bulk += sizeof(*lpni_hstats);
}
rc = 0;
+out_free_hstats:
+ LIBCFS_FREE(lpni_hstats, sizeof(*lpni_hstats));
out_free_msg_stats:
LIBCFS_FREE(lpni_msg_stats, sizeof(*lpni_msg_stats));
out_free_stats:
@@
-3512,3
+3531,4
@@
lnet_peer_ni_set_healthv(lnet_nid_t nid, int value, bool all)
}
lnet_net_unlock(LNET_LOCK_EX);
}
+