diff --git a/lnet/klnds/iiblnd/iiblnd_cb.c b/lnet/klnds/iiblnd/iiblnd_cb.c index c3142a1de6e4c30de6c8d3e1e2c64131b20e1949..b9ca6778d76f29ede2488e843a1871b7711861c8 100644 --- a/lnet/klnds/iiblnd/iiblnd_cb.c +++ b/lnet/klnds/iiblnd/iiblnd_cb.c @@ -1777,9 +1777,9 @@ kibnal_close_conn_locked (kib_conn_t *conn, int error) atomic_inc (&conn->ibc_refcount); } - if (list_empty (&peer->ibp_conns) && - peer->ibp_persistence == 0) { - /* Non-persistent peer with no more conns... */ + if (list_empty (&peer->ibp_conns) && /* no more conns */ + peer->ibp_persistence == 0 && /* non-persistent peer */ + kibnal_peer_active(peer)) { /* still in peer table */ kibnal_unlink_peer_locked (peer); } diff --git a/lnet/klnds/openiblnd/openiblnd_cb.c b/lnet/klnds/openiblnd/openiblnd_cb.c index c2929ba7074a0b81197fa944624d86e9b31df73b..0f7a37132078d8e2bcf0f00e681d6809d2f29905 100644 --- a/lnet/klnds/openiblnd/openiblnd_cb.c +++ b/lnet/klnds/openiblnd/openiblnd_cb.c @@ -1484,9 +1484,9 @@ kibnal_close_conn_locked (kib_conn_t *conn, int error) atomic_inc (&conn->ibc_refcount); } - if (list_empty (&peer->ibp_conns) && - peer->ibp_persistence == 0) { - /* Non-persistent peer with no more conns... */ + if (list_empty (&peer->ibp_conns) && /* no more conns */ + peer->ibp_persistence == 0 && /* non-persistent peer */ + kibnal_peer_active(peer)) { /* still in peer table */ kibnal_unlink_peer_locked (peer); } diff --git a/lnet/klnds/viblnd/viblnd_cb.c b/lnet/klnds/viblnd/viblnd_cb.c index c3f496ca6f7a01a55e10f4f99a8cd1e3e60a1293..ba021bf58e00868d63d3d552a5f3e28b2caa6994 100644 --- a/lnet/klnds/viblnd/viblnd_cb.c +++ b/lnet/klnds/viblnd/viblnd_cb.c @@ -1772,9 +1772,9 @@ kibnal_close_conn_locked (kib_conn_t *conn, int error) /* connd takes ibc_list's ref */ list_del (&conn->ibc_list); - if (list_empty (&peer->ibp_conns) && - peer->ibp_persistence == 0) { - /* Non-persistent peer with no more conns... */ + if (list_empty (&peer->ibp_conns) && /* no more conns */ + peer->ibp_persistence == 0 && /* non-persistent peer */ + kibnal_peer_active(peer)) { /* still in peer table */ kibnal_unlink_peer_locked (peer); }