diff mbox series

[06/34] lnet: introduce lnet_find_peer_ni_locked()

Message ID 153783763508.32103.13303107512736711408.stgit@noble (mailing list archive)
State New, archived
Headers show
Series lustre: remainder of multi-rail series. | expand

Commit Message

NeilBrown Sept. 25, 2018, 1:07 a.m. UTC
Use in place of lnet_find_peer_locked()

This is part of
    Commit: 58091af960fe ("LU-7734 lnet: Multi-Rail peer split")
from upstream lustre, where it is marked:
    Signed-off-by: Amir Shehata <amir.shehata@intel.com>
    WC-bug-id: https://jira.whamcloud.com/browse/LU-7734
    Reviewed-on: http://review.whamcloud.com/18293
    Reviewed-by: Olaf Weber <olaf@sgi.com>
    Reviewed-by: Doug Oucharek <doug.s.oucharek@intel.com>

Signed-off-by: NeilBrown <neilb@suse.com>
---
 .../staging/lustre/include/linux/lnet/lib-lnet.h   |    1 +
 drivers/staging/lustre/lnet/lnet/peer.c            |   31 ++++++++++++++++++++
 drivers/staging/lustre/lnet/lnet/router.c          |    2 +
 3 files changed, 33 insertions(+), 1 deletion(-)

Comments

James Simmons Sept. 29, 2018, 10:48 p.m. UTC | #1
> Use in place of lnet_find_peer_locked()
> 
> This is part of
>     Commit: 58091af960fe ("LU-7734 lnet: Multi-Rail peer split")
> from upstream lustre, where it is marked:
>     Signed-off-by: Amir Shehata <amir.shehata@intel.com>
>     WC-bug-id: https://jira.whamcloud.com/browse/LU-7734
>     Reviewed-on: http://review.whamcloud.com/18293
>     Reviewed-by: Olaf Weber <olaf@sgi.com>
>     Reviewed-by: Doug Oucharek <doug.s.oucharek@intel.com>

Reviewed-by: James Simmons <jsimmons@infradead.org>
 
> Signed-off-by: NeilBrown <neilb@suse.com>
> ---
>  .../staging/lustre/include/linux/lnet/lib-lnet.h   |    1 +
>  drivers/staging/lustre/lnet/lnet/peer.c            |   31 ++++++++++++++++++++
>  drivers/staging/lustre/lnet/lnet/router.c          |    2 +
>  3 files changed, 33 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/staging/lustre/include/linux/lnet/lib-lnet.h b/drivers/staging/lustre/include/linux/lnet/lib-lnet.h
> index f925e3cd64ca..656177b64336 100644
> --- a/drivers/staging/lustre/include/linux/lnet/lib-lnet.h
> +++ b/drivers/staging/lustre/include/linux/lnet/lib-lnet.h
> @@ -639,6 +639,7 @@ bool lnet_ni_unique_net(struct list_head *nilist, char *iface);
>  int lnet_nid2peerni_locked(struct lnet_peer_ni **lpp, lnet_nid_t nid, int cpt);
>  struct lnet_peer_ni *lnet_find_peer_locked(struct lnet_peer_table *ptable,
>  					   lnet_nid_t nid);
> +struct lnet_peer_ni *lnet_find_peer_ni_locked(lnet_nid_t nid, int cpt);
>  void lnet_peer_tables_cleanup(struct lnet_ni *ni);
>  void lnet_peer_tables_destroy(void);
>  int lnet_peer_tables_create(void);
> diff --git a/drivers/staging/lustre/lnet/lnet/peer.c b/drivers/staging/lustre/lnet/lnet/peer.c
> index fcfad77b9f2c..53b0ca0a2021 100644
> --- a/drivers/staging/lustre/lnet/lnet/peer.c
> +++ b/drivers/staging/lustre/lnet/lnet/peer.c
> @@ -216,6 +216,37 @@ lnet_peer_tables_cleanup(struct lnet_ni *ni)
>  	}
>  }
>  
> +static struct lnet_peer_ni *
> +lnet_get_peer_ni_locked(struct lnet_peer_table *ptable, lnet_nid_t nid)
> +{
> +	struct list_head	*peers;
> +	struct lnet_peer_ni	*lp;
> +
> +	LASSERT(!the_lnet.ln_shutdown);
> +
> +	peers = &ptable->pt_hash[lnet_nid2peerhash(nid)];
> +	list_for_each_entry(lp, peers, lpni_hashlist) {
> +		if (lp->lpni_nid == nid) {
> +			lnet_peer_ni_addref_locked(lp);
> +			return lp;
> +		}
> +	}
> +
> +	return NULL;
> +}
> +
> +struct lnet_peer_ni *
> +lnet_find_peer_ni_locked(lnet_nid_t nid, int cpt)
> +{
> +	struct lnet_peer_ni *lpni;
> +	struct lnet_peer_table *ptable;
> +
> +	ptable = the_lnet.ln_peer_tables[cpt];
> +	lpni = lnet_get_peer_ni_locked(ptable, nid);
> +
> +	return lpni;
> +}
> +
>  void
>  lnet_destroy_peer_ni_locked(struct lnet_peer_ni *lp)
>  {
> diff --git a/drivers/staging/lustre/lnet/lnet/router.c b/drivers/staging/lustre/lnet/lnet/router.c
> index ba2b2b930576..de037a77671d 100644
> --- a/drivers/staging/lustre/lnet/lnet/router.c
> +++ b/drivers/staging/lustre/lnet/lnet/router.c
> @@ -1734,7 +1734,7 @@ lnet_notify(struct lnet_ni *ni, lnet_nid_t nid, int alive, time64_t when)
>  		return -ESHUTDOWN;
>  	}
>  
> -	lp = lnet_find_peer_locked(the_lnet.ln_peer_tables[cpt], nid);
> +	lp = lnet_find_peer_ni_locked(nid, cpt);
>  	if (!lp) {
>  		/* nid not found */
>  		lnet_net_unlock(cpt);
> 
> 
>
diff mbox series

Patch

diff --git a/drivers/staging/lustre/include/linux/lnet/lib-lnet.h b/drivers/staging/lustre/include/linux/lnet/lib-lnet.h
index f925e3cd64ca..656177b64336 100644
--- a/drivers/staging/lustre/include/linux/lnet/lib-lnet.h
+++ b/drivers/staging/lustre/include/linux/lnet/lib-lnet.h
@@ -639,6 +639,7 @@  bool lnet_ni_unique_net(struct list_head *nilist, char *iface);
 int lnet_nid2peerni_locked(struct lnet_peer_ni **lpp, lnet_nid_t nid, int cpt);
 struct lnet_peer_ni *lnet_find_peer_locked(struct lnet_peer_table *ptable,
 					   lnet_nid_t nid);
+struct lnet_peer_ni *lnet_find_peer_ni_locked(lnet_nid_t nid, int cpt);
 void lnet_peer_tables_cleanup(struct lnet_ni *ni);
 void lnet_peer_tables_destroy(void);
 int lnet_peer_tables_create(void);
diff --git a/drivers/staging/lustre/lnet/lnet/peer.c b/drivers/staging/lustre/lnet/lnet/peer.c
index fcfad77b9f2c..53b0ca0a2021 100644
--- a/drivers/staging/lustre/lnet/lnet/peer.c
+++ b/drivers/staging/lustre/lnet/lnet/peer.c
@@ -216,6 +216,37 @@  lnet_peer_tables_cleanup(struct lnet_ni *ni)
 	}
 }
 
+static struct lnet_peer_ni *
+lnet_get_peer_ni_locked(struct lnet_peer_table *ptable, lnet_nid_t nid)
+{
+	struct list_head	*peers;
+	struct lnet_peer_ni	*lp;
+
+	LASSERT(!the_lnet.ln_shutdown);
+
+	peers = &ptable->pt_hash[lnet_nid2peerhash(nid)];
+	list_for_each_entry(lp, peers, lpni_hashlist) {
+		if (lp->lpni_nid == nid) {
+			lnet_peer_ni_addref_locked(lp);
+			return lp;
+		}
+	}
+
+	return NULL;
+}
+
+struct lnet_peer_ni *
+lnet_find_peer_ni_locked(lnet_nid_t nid, int cpt)
+{
+	struct lnet_peer_ni *lpni;
+	struct lnet_peer_table *ptable;
+
+	ptable = the_lnet.ln_peer_tables[cpt];
+	lpni = lnet_get_peer_ni_locked(ptable, nid);
+
+	return lpni;
+}
+
 void
 lnet_destroy_peer_ni_locked(struct lnet_peer_ni *lp)
 {
diff --git a/drivers/staging/lustre/lnet/lnet/router.c b/drivers/staging/lustre/lnet/lnet/router.c
index ba2b2b930576..de037a77671d 100644
--- a/drivers/staging/lustre/lnet/lnet/router.c
+++ b/drivers/staging/lustre/lnet/lnet/router.c
@@ -1734,7 +1734,7 @@  lnet_notify(struct lnet_ni *ni, lnet_nid_t nid, int alive, time64_t when)
 		return -ESHUTDOWN;
 	}
 
-	lp = lnet_find_peer_locked(the_lnet.ln_peer_tables[cpt], nid);
+	lp = lnet_find_peer_ni_locked(nid, cpt);
 	if (!lp) {
 		/* nid not found */
 		lnet_net_unlock(cpt);