From 0d816af574b7063c0ce339b67d2066b229d20f59 Mon Sep 17 00:00:00 2001 From: Mr NeilBrown Date: Tue, 28 Jan 2020 11:31:31 +1100 Subject: [PATCH 1/1] LU-11300 lnet: remove lnd_query interface. The ->lnd_query interface is completely unused, and has been since commit 8e498d3f23ea ("LU-11300 lnet: peer aliveness") So remove all mention of it. Fixes: 8e498d3f23ea ("LU-11300 lnet: peer aliveness") Test-Parameters: trivial Signed-off-by: Mr NeilBrown Change-Id: Iff11652283b371519cf31bf66b9ba08e024d3193 Reviewed-on: https://review.whamcloud.com/37337 Reviewed-by: Chris Horn Tested-by: jenkins Reviewed-by: Serguei Smirnov Tested-by: Maloo Reviewed-by: James Simmons Reviewed-by: Oleg Drokin --- lnet/include/lnet/lib-types.h | 3 -- lnet/klnds/gnilnd/gnilnd.c | 72 ----------------------------------------- lnet/klnds/gnilnd/gnilnd.h | 1 - lnet/klnds/o2iblnd/o2iblnd.c | 31 ------------------ lnet/klnds/o2iblnd/o2iblnd_cb.c | 11 ++++--- lnet/klnds/socklnd/socklnd.c | 64 ------------------------------------ lnet/lnet/api-ni.c | 3 -- 7 files changed, 6 insertions(+), 179 deletions(-) diff --git a/lnet/include/lnet/lib-types.h b/lnet/include/lnet/lib-types.h index f41971c..5b8b8d8 100644 --- a/lnet/include/lnet/lib-types.h +++ b/lnet/include/lnet/lib-types.h @@ -297,9 +297,6 @@ struct lnet_lnd { /* notification of peer down */ void (*lnd_notify_peer_down)(lnet_nid_t peer); - /* query of peer aliveness */ - void (*lnd_query)(struct lnet_ni *ni, lnet_nid_t peer, time64_t *when); - /* accept a new connection */ int (*lnd_accept)(struct lnet_ni *ni, struct socket *sock); }; diff --git a/lnet/klnds/gnilnd/gnilnd.c b/lnet/klnds/gnilnd/gnilnd.c index a197c99..bcbc0ac 100644 --- a/lnet/klnds/gnilnd/gnilnd.c +++ b/lnet/klnds/gnilnd/gnilnd.c @@ -33,7 +33,6 @@ const struct lnet_lnd the_kgnilnd = { .lnd_send = kgnilnd_send, .lnd_recv = kgnilnd_recv, .lnd_eager_recv = kgnilnd_eager_recv, - .lnd_query = kgnilnd_query, }; kgn_data_t kgnilnd_data; @@ -1922,77 +1921,6 @@ kgnilnd_ctl(struct lnet_ni *ni, unsigned int cmd, void *arg) return rc; } -void -kgnilnd_query(struct lnet_ni *ni, lnet_nid_t nid, time64_t *when) -{ - kgn_net_t *net = ni->ni_data; - kgn_tx_t *tx; - kgn_peer_t *peer = NULL; - kgn_conn_t *conn = NULL; - struct lnet_process_id id = { - .nid = nid, - .pid = LNET_PID_LUSTRE, - }; - ENTRY; - - /* I expect to find him, so only take a read lock */ - read_lock(&kgnilnd_data.kgn_peer_conn_lock); - peer = kgnilnd_find_peer_locked(nid); - if (peer != NULL) { - /* LIE if in a quiesce - we will update the timeouts after, - * but we don't want sends failing during it */ - if (kgnilnd_data.kgn_quiesce_trigger) { - *when = ktime_get_seconds(); - read_unlock(&kgnilnd_data.kgn_peer_conn_lock); - GOTO(out, 0); - } - - /* Update to best guess, might refine on later checks */ - *when = peer->gnp_last_alive; - - /* we have a peer, how about a conn? */ - conn = kgnilnd_find_conn_locked(peer); - - if (conn == NULL) { - /* if there is no conn, check peer last errno to see if clean disconnect - * - if it was, we lie to LNet because we believe a TX would complete - * on reconnect */ - if (kgnilnd_conn_clean_errno(peer->gnp_last_errno)) { - *when = ktime_get_seconds(); - } - /* we still want to fire a TX and new conn in this case */ - } else { - /* gnp_last_alive is valid, run for the hills */ - read_unlock(&kgnilnd_data.kgn_peer_conn_lock); - GOTO(out, 0); - } - } - /* if we get here, either we have no peer or no conn for him, so fire off - * new TX to trigger conn setup */ - read_unlock(&kgnilnd_data.kgn_peer_conn_lock); - - /* if we couldn't find him, we'll fire up a TX and get connected - - * if we don't do this, after ni_peer_timeout, LNet will declare him dead. - * So really we treat kgnilnd_query as a bit of a 'connect now' type - * event because it'll only do this when it wants to send - * - * Use a real TX for this to get the proper gnp_tx_queue behavior, etc - * normally we'd use kgnilnd_send_ctlmsg for this, but we don't really - * care that this goes out quickly since we already know we need a new conn - * formed */ - if (CFS_FAIL_CHECK(CFS_FAIL_GNI_NOOP_SEND)) - return; - - tx = kgnilnd_new_tx_msg(GNILND_MSG_NOOP, ni->ni_nid); - if (tx != NULL) { - kgnilnd_launch_tx(tx, net, &id); - } -out: - CDEBUG(D_NETTRACE, "peer 0x%p->%s when %lld\n", peer, - libcfs_nid2str(nid), *when); - EXIT; -} - int kgnilnd_dev_init(kgn_device_t *dev) { diff --git a/lnet/klnds/gnilnd/gnilnd.h b/lnet/klnds/gnilnd/gnilnd.h index 2c4968a..0389887 100644 --- a/lnet/klnds/gnilnd/gnilnd.h +++ b/lnet/klnds/gnilnd/gnilnd.h @@ -1782,7 +1782,6 @@ void kgnilnd_unmap_fma_blocks(kgn_device_t *device); void kgnilnd_free_phys_fmablk(kgn_device_t *device); int kgnilnd_ctl(struct lnet_ni *ni, unsigned int cmd, void *arg); -void kgnilnd_query(struct lnet_ni *ni, lnet_nid_t nid, time64_t *when); int kgnilnd_send(struct lnet_ni *ni, void *private, struct lnet_msg *lntmsg); int kgnilnd_eager_recv(struct lnet_ni *ni, void *private, struct lnet_msg *lntmsg, void **new_private); diff --git a/lnet/klnds/o2iblnd/o2iblnd.c b/lnet/klnds/o2iblnd/o2iblnd.c index a183506..68de736 100644 --- a/lnet/klnds/o2iblnd/o2iblnd.c +++ b/lnet/klnds/o2iblnd/o2iblnd.c @@ -1224,36 +1224,6 @@ kiblnd_ctl(struct lnet_ni *ni, unsigned int cmd, void *arg) } static void -kiblnd_query(struct lnet_ni *ni, lnet_nid_t nid, time64_t *when) -{ - time64_t last_alive = 0; - time64_t now = ktime_get_seconds(); - rwlock_t *glock = &kiblnd_data.kib_global_lock; - struct kib_peer_ni *peer_ni; - unsigned long flags; - - read_lock_irqsave(glock, flags); - - peer_ni = kiblnd_find_peer_locked(ni, nid); - if (peer_ni != NULL) - last_alive = peer_ni->ibp_last_alive; - - read_unlock_irqrestore(glock, flags); - - if (last_alive != 0) - *when = last_alive; - - /* peer_ni is not persistent in hash, trigger peer_ni creation - * and connection establishment with a NULL tx */ - if (peer_ni == NULL) - kiblnd_launch_tx(ni, NULL, nid); - - CDEBUG(D_NET, "peer_ni %s %p, alive %lld secs ago\n", - libcfs_nid2str(nid), peer_ni, - last_alive ? now - last_alive : -1); -} - -static void kiblnd_free_pages(struct kib_pages *p) { int npages = p->ibp_npages; @@ -3460,7 +3430,6 @@ static const struct lnet_lnd the_o2iblnd = { .lnd_startup = kiblnd_startup, .lnd_shutdown = kiblnd_shutdown, .lnd_ctl = kiblnd_ctl, - .lnd_query = kiblnd_query, .lnd_send = kiblnd_send, .lnd_recv = kiblnd_recv, }; diff --git a/lnet/klnds/o2iblnd/o2iblnd_cb.c b/lnet/klnds/o2iblnd/o2iblnd_cb.c index d842943..82c4509 100644 --- a/lnet/klnds/o2iblnd/o2iblnd_cb.c +++ b/lnet/klnds/o2iblnd/o2iblnd_cb.c @@ -2751,11 +2751,12 @@ kiblnd_check_reconnect(struct kib_conn *conn, int version, } write_lock_irqsave(glock, flags); - /* retry connection if it's still needed and no other connection - * attempts (active or passive) are in progress - * NB: reconnect is still needed even when ibp_tx_queue is - * empty if ibp_version != version because reconnect may be - * initiated by kiblnd_query() */ + /* retry connection if it's still needed and no other connection + * attempts (active or passive) are in progress + * NB: reconnect is still needed even when ibp_tx_queue is + * empty if ibp_version != version because reconnect may be + * initiated. + */ reconnect = (!list_empty(&peer_ni->ibp_tx_queue) || peer_ni->ibp_version != version) && peer_ni->ibp_connecting && diff --git a/lnet/klnds/socklnd/socklnd.c b/lnet/klnds/socklnd/socklnd.c index 00ed04c..364fb54 100644 --- a/lnet/klnds/socklnd/socklnd.c +++ b/lnet/klnds/socklnd/socklnd.c @@ -1777,69 +1777,6 @@ ksocknal_notify_gw_down(lnet_nid_t gw_nid) * if we have autroutes, and these connect on demand. */ } -void -ksocknal_query(struct lnet_ni *ni, lnet_nid_t nid, time64_t *when) -{ - int connect = 1; - time64_t last_alive = 0; - time64_t now = ktime_get_seconds(); - struct ksock_peer_ni *peer_ni = NULL; - rwlock_t *glock = &ksocknal_data.ksnd_global_lock; - struct lnet_process_id id = { - .nid = nid, - .pid = LNET_PID_LUSTRE, - }; - - read_lock(glock); - - peer_ni = ksocknal_find_peer_locked(ni, id); - if (peer_ni != NULL) { - struct list_head *tmp; - struct ksock_conn *conn; - int bufnob; - - list_for_each(tmp, &peer_ni->ksnp_conns) { - conn = list_entry(tmp, struct ksock_conn, ksnc_list); - bufnob = conn->ksnc_sock->sk->sk_wmem_queued; - - if (bufnob < conn->ksnc_tx_bufnob) { - /* something got ACKed */ - conn->ksnc_tx_deadline = ktime_get_seconds() + - lnet_get_lnd_timeout(); - peer_ni->ksnp_last_alive = now; - conn->ksnc_tx_bufnob = bufnob; - } - } - - last_alive = peer_ni->ksnp_last_alive; - if (ksocknal_find_connectable_route_locked(peer_ni) == NULL) - connect = 0; - } - - read_unlock(glock); - - if (last_alive != 0) - *when = last_alive; - - CDEBUG(D_NET, "peer_ni %s %p, alive %lld secs ago, connect %d\n", - libcfs_nid2str(nid), peer_ni, - last_alive ? now - last_alive : -1, - connect); - - if (!connect) - return; - - ksocknal_add_peer(ni, id, LNET_NIDADDR(nid), lnet_acceptor_port()); - - write_lock_bh(glock); - - peer_ni = ksocknal_find_peer_locked(ni, id); - if (peer_ni != NULL) - ksocknal_launch_all_connections_locked(peer_ni); - - write_unlock_bh(glock); -} - static void ksocknal_push_peer(struct ksock_peer_ni *peer_ni) { @@ -2768,7 +2705,6 @@ static const struct lnet_lnd the_ksocklnd = { .lnd_send = ksocknal_send, .lnd_recv = ksocknal_recv, .lnd_notify_peer_down = ksocknal_notify_gw_down, - .lnd_query = ksocknal_query, .lnd_accept = ksocknal_accept, }; diff --git a/lnet/lnet/api-ni.c b/lnet/lnet/api-ni.c index c3956d7..545685a 100644 --- a/lnet/lnet/api-ni.c +++ b/lnet/lnet/api-ni.c @@ -2386,9 +2386,6 @@ lnet_startup_lndnet(struct lnet_net *net, struct lnet_lnd_tunables *tun) if (rc < 0) goto failed1; - LASSERT(ni->ni_net->net_tunables.lct_peer_timeout <= 0 || - ni->ni_net->net_lnd->lnd_query != NULL); - lnet_ni_addref(ni); list_add_tail(&ni->ni_netlist, &local_ni_list); -- 1.8.3.1