From: Mr NeilBrown Date: Sun, 24 Nov 2019 23:00:48 +0000 (+1100) Subject: LU-12678 lnet: discard lnd_refcount X-Git-Tag: 2.13.51~74 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=6062999295090244874594db69a3dffa6f4f8a53;p=fs%2Flustre-release.git LU-12678 lnet: discard lnd_refcount The lnd_refcount in 'struct lnet_lnd' is never tested (except in an ASSERT()), so it cannot be needed. Let's remove it. Each individual lnd keeps track of how many lnet_ni are registered for that lnd e.g. ksocklnd has a counter in ksnd_nnets and o2iblnd has a linked list in kib_devs. They hold a reference on the module while there are registered devices, and the lnd is only freed (and the lnd_refcount checked) when the module is unloaded. This confirms that lnd_refcount adds no value. Signed-off-by: Mr NeilBrown Change-Id: I0d0c04051bf01a1fa77d888b00fb0a7875b09ccd Reviewed-on: https://review.whamcloud.com/36829 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Serguei Smirnov Reviewed-by: James Simmons Reviewed-by: Chris Horn Reviewed-by: Amir Shehata Reviewed-by: Oleg Drokin --- diff --git a/lnet/include/lnet/lib-types.h b/lnet/include/lnet/lib-types.h index 5590503..562dc37 100644 --- a/lnet/include/lnet/lib-types.h +++ b/lnet/include/lnet/lib-types.h @@ -250,7 +250,6 @@ struct socket; struct lnet_lnd { /* fields managed by portals */ struct list_head lnd_list; /* stash in the LND table */ - int lnd_refcount; /* # active instances */ /* fields initialized by the LND */ __u32 lnd_type; diff --git a/lnet/lnet/api-ni.c b/lnet/lnet/api-ni.c index e3aa9bf..d6e5e3d 100644 --- a/lnet/lnet/api-ni.c +++ b/lnet/lnet/api-ni.c @@ -828,7 +828,6 @@ lnet_register_lnd(struct lnet_lnd *lnd) LASSERT(lnet_find_lnd_by_type(lnd->lnd_type) == NULL); list_add_tail(&lnd->lnd_list, &the_lnet.ln_lnds); - lnd->lnd_refcount = 0; CDEBUG(D_NET, "%s LND registered\n", libcfs_lnd2str(lnd->lnd_type)); @@ -842,7 +841,6 @@ lnet_unregister_lnd(struct lnet_lnd *lnd) mutex_lock(&the_lnet.ln_lnd_mutex); LASSERT(lnet_find_lnd_by_type(lnd->lnd_type) == lnd); - LASSERT(lnd->lnd_refcount == 0); list_del(&lnd->lnd_list); CDEBUG(D_NET, "%s LND unregistered\n", libcfs_lnd2str(lnd->lnd_type)); @@ -2128,15 +2126,6 @@ lnet_shutdown_lndnet(struct lnet_net *net) /* Do peer table cleanup for this net */ lnet_peer_tables_cleanup(net); - lnet_net_lock(LNET_LOCK_EX); - /* - * decrement ref count on lnd only when the entire network goes - * away - */ - net->net_lnd->lnd_refcount--; - - lnet_net_unlock(LNET_LOCK_EX); - lnet_net_free(net); } @@ -2220,9 +2209,6 @@ lnet_startup_lndni(struct lnet_ni *ni, struct lnet_lnd_tunables *tun) if (rc != 0) { LCONSOLE_ERROR_MSG(0x105, "Error %d starting up LNI %s\n", rc, libcfs_lnd2str(net->net_lnd->lnd_type)); - lnet_net_lock(LNET_LOCK_EX); - net->net_lnd->lnd_refcount--; - lnet_net_unlock(LNET_LOCK_EX); goto failed0; } @@ -2331,10 +2317,6 @@ lnet_startup_lndnet(struct lnet_net *net, struct lnet_lnd_tunables *tun) } } - lnet_net_lock(LNET_LOCK_EX); - lnd->lnd_refcount++; - lnet_net_unlock(LNET_LOCK_EX); - net->net_lnd = lnd; mutex_unlock(&the_lnet.ln_lnd_mutex);