[lustre-devel] [PATCH 03/34] lnet: Change lpni_refcount to atomic_t

James Simmons jsimmons at infradead.org
Sat Sep 29 15:47:33 PDT 2018


> 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 at intel.com>
>     WC-bug-id: https://jira.whamcloud.com/browse/LU-7734
>     Reviewed-on: http://review.whamcloud.com/18293
>     Reviewed-by: Olaf Weber <olaf at sgi.com>
>     Reviewed-by: Doug Oucharek <doug.s.oucharek at intel.com>

Reviewed-by: James Simmons <jsimmons at infradead.org>
 
> Signed-off-by: NeilBrown <neilb at suse.com>
> ---
>  .../staging/lustre/include/linux/lnet/lib-lnet.h   |   10 +++++-----
>  .../staging/lustre/include/linux/lnet/lib-types.h  |    2 +-
>  drivers/staging/lustre/lnet/lnet/peer.c            |    8 ++++----
>  drivers/staging/lustre/lnet/lnet/router.c          |    4 ++--
>  drivers/staging/lustre/lnet/lnet/router_proc.c     |    4 ++--
>  5 files changed, 14 insertions(+), 14 deletions(-)
> 
> diff --git a/drivers/staging/lustre/include/linux/lnet/lib-lnet.h b/drivers/staging/lustre/include/linux/lnet/lib-lnet.h
> index ef53638e20f6..88e010aa3f68 100644
> --- a/drivers/staging/lustre/include/linux/lnet/lib-lnet.h
> +++ b/drivers/staging/lustre/include/linux/lnet/lib-lnet.h
> @@ -313,8 +313,8 @@ lnet_handle2me(struct lnet_handle_me *handle)
>  static inline void
>  lnet_peer_addref_locked(struct lnet_peer_ni *lp)
>  {
> -	LASSERT(lp->lpni_refcount > 0);
> -	lp->lpni_refcount++;
> +	LASSERT(atomic_read(&lp->lpni_refcount) > 0);
> +	atomic_inc(&lp->lpni_refcount);
>  }
>  
>  void lnet_destroy_peer_locked(struct lnet_peer_ni *lp);
> @@ -322,9 +322,9 @@ void lnet_destroy_peer_locked(struct lnet_peer_ni *lp);
>  static inline void
>  lnet_peer_decref_locked(struct lnet_peer_ni *lp)
>  {
> -	LASSERT(lp->lpni_refcount > 0);
> -	lp->lpni_refcount--;
> -	if (!lp->lpni_refcount)
> +	LASSERT(atomic_read(&lp->lpni_refcount) > 0);
> +	atomic_dec(&lp->lpni_refcount);
> +	if (atomic_read(&lp->lpni_refcount) == 0)
>  		lnet_destroy_peer_locked(lp);
>  }
>  
> diff --git a/drivers/staging/lustre/include/linux/lnet/lib-types.h b/drivers/staging/lustre/include/linux/lnet/lib-types.h
> index 4b26801d7d29..9a2cf319dba9 100644
> --- a/drivers/staging/lustre/include/linux/lnet/lib-types.h
> +++ b/drivers/staging/lustre/include/linux/lnet/lib-types.h
> @@ -429,7 +429,7 @@ struct lnet_peer_ni {
>  	/* peer's NID */
>  	lnet_nid_t		 lpni_nid;
>  	/* # refs */
> -	int			 lpni_refcount;
> +	atomic_t		 lpni_refcount;
>  	/* CPT this peer attached on */
>  	int			 lpni_cpt;
>  	/* # refs from lnet_route::lr_gateway */
> diff --git a/drivers/staging/lustre/lnet/lnet/peer.c b/drivers/staging/lustre/lnet/lnet/peer.c
> index 67614309f242..7475678ea184 100644
> --- a/drivers/staging/lustre/lnet/lnet/peer.c
> +++ b/drivers/staging/lustre/lnet/lnet/peer.c
> @@ -221,7 +221,7 @@ lnet_destroy_peer_locked(struct lnet_peer_ni *lp)
>  {
>  	struct lnet_peer_table *ptable;
>  
> -	LASSERT(!lp->lpni_refcount);
> +	LASSERT(atomic_read(&lp->lpni_refcount) == 0);
>  	LASSERT(!lp->lpni_rtr_refcount);
>  	LASSERT(list_empty(&lp->lpni_txq));
>  	LASSERT(list_empty(&lp->lpni_hashlist));
> @@ -320,7 +320,7 @@ lnet_nid2peer_locked(struct lnet_peer_ni **lpp, lnet_nid_t nid, int cpt)
>  	lp->lpni_ping_feats = LNET_PING_FEAT_INVAL;
>  	lp->lpni_nid = nid;
>  	lp->lpni_cpt = cpt2;
> -	lp->lpni_refcount = 2;	/* 1 for caller; 1 for hash */
> +	atomic_set(&lp->lpni_refcount, 2);	/* 1 for caller; 1 for hash */
>  	lp->lpni_rtr_refcount = 0;
>  
>  	lnet_net_lock(cpt);
> @@ -378,7 +378,7 @@ lnet_debug_peer(lnet_nid_t nid)
>  		aliveness = lp->lpni_alive ? "up" : "down";
>  
>  	CDEBUG(D_WARNING, "%-24s %4d %5s %5d %5d %5d %5d %5d %ld\n",
> -	       libcfs_nid2str(lp->lpni_nid), lp->lpni_refcount,
> +	       libcfs_nid2str(lp->lpni_nid), atomic_read(&lp->lpni_refcount),
>  	       aliveness, lp->lpni_net->net_tunables.lct_peer_tx_credits,
>  	       lp->lpni_rtrcredits, lp->lpni_minrtrcredits,
>  	       lp->lpni_txcredits, lp->lpni_mintxcredits, lp->lpni_txqnob);
> @@ -433,7 +433,7 @@ lnet_get_peer_info(__u32 peer_index, __u64 *nid,
>  					 lp->lpni_alive ? "up" : "down");
>  
>  			*nid = lp->lpni_nid;
> -			*refcount = lp->lpni_refcount;
> +			*refcount = atomic_read(&lp->lpni_refcount);
>  			*ni_peer_tx_credits =
>  				lp->lpni_net->net_tunables.lct_peer_tx_credits;
>  			*peer_tx_credits = lp->lpni_txcredits;
> diff --git a/drivers/staging/lustre/lnet/lnet/router.c b/drivers/staging/lustre/lnet/lnet/router.c
> index 31685406dcc3..bfd4b22cc28a 100644
> --- a/drivers/staging/lustre/lnet/lnet/router.c
> +++ b/drivers/staging/lustre/lnet/lnet/router.c
> @@ -172,7 +172,7 @@ lnet_ni_notify_locked(struct lnet_ni *ni, struct lnet_peer_ni *lp)
>  static void
>  lnet_rtr_addref_locked(struct lnet_peer_ni *lp)
>  {
> -	LASSERT(lp->lpni_refcount > 0);
> +	LASSERT(atomic_read(&lp->lpni_refcount) > 0);
>  	LASSERT(lp->lpni_rtr_refcount >= 0);
>  
>  	/* lnet_net_lock must be exclusively locked */
> @@ -200,7 +200,7 @@ lnet_rtr_addref_locked(struct lnet_peer_ni *lp)
>  static void
>  lnet_rtr_decref_locked(struct lnet_peer_ni *lp)
>  {
> -	LASSERT(lp->lpni_refcount > 0);
> +	LASSERT(atomic_read(&lp->lpni_refcount) > 0);
>  	LASSERT(lp->lpni_rtr_refcount > 0);
>  
>  	/* lnet_net_lock must be exclusively locked */
> diff --git a/drivers/staging/lustre/lnet/lnet/router_proc.c b/drivers/staging/lustre/lnet/lnet/router_proc.c
> index d0340707feaa..12a4b1708d3c 100644
> --- a/drivers/staging/lustre/lnet/lnet/router_proc.c
> +++ b/drivers/staging/lustre/lnet/lnet/router_proc.c
> @@ -320,7 +320,7 @@ static int proc_lnet_routers(struct ctl_table *table, int write,
>  			lnet_nid_t nid = peer->lpni_nid;
>  			time64_t now = ktime_get_seconds();
>  			time64_t deadline = peer->lpni_ping_deadline;
> -			int nrefs = peer->lpni_refcount;
> +			int nrefs = atomic_read(&peer->lpni_refcount);
>  			int nrtrrefs = peer->lpni_rtr_refcount;
>  			int alive_cnt = peer->lpni_alive_count;
>  			int alive = peer->lpni_alive;
> @@ -486,7 +486,7 @@ static int proc_lnet_peers(struct ctl_table *table, int write,
>  
>  		if (peer) {
>  			lnet_nid_t nid = peer->lpni_nid;
> -			int nrefs = peer->lpni_refcount;
> +			int nrefs = atomic_read(&peer->lpni_refcount);
>  			time64_t lastalive = -1;
>  			char *aliveness = "NA";
>  			int maxcr = peer->lpni_net->net_tunables.lct_peer_tx_credits;
> 
> 
> 


More information about the lustre-devel mailing list