All of lore.kernel.org
 help / color / mirror / Atom feed
From: NeilBrown <neilb@suse.de>
To: Steven Noonan <steven@uplinklabs.net>
Cc: lkml <linux-kernel@vger.kernel.org>,
	linux-fsdevel@vger.kernel.org, Al Viro <viro@ZenIV.linux.org.uk>
Subject: Re: [PATCH 1/2] lockref: make lockref count signed
Date: Wed, 6 Aug 2014 07:44:30 +1000	[thread overview]
Message-ID: <20140806074430.102121ae@notabene.brown> (raw)
In-Reply-To: <1407268348-25949-1-git-send-email-steven@uplinklabs.net>

[-- Attachment #1: Type: text/plain, Size: 3143 bytes --]

On Tue,  5 Aug 2014 12:52:27 -0700 Steven Noonan <steven@uplinklabs.net>
wrote:

> There are numerous places where this is casted to a signed value anyway, for
> comparisons checking that the value hasn't been set to the 'dead' value of
> -128. This change turns the count value into a signed integer, which is how
> it's already being treated anyway. This reduces the chance for developer errors
> when making those comparisons.
> 
> Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
> Cc: NeilBrown <neilb@suse.de>
> Cc: Al Viro <viro@ZenIV.linux.org.uk>
> Signed-off-by: Steven Noonan <steven@uplinklabs.net>

Thanks!  But you missed one "(int)" removal :-)

fs/autofs4/root.c:              if ((int) d_count(active) <= 0)

NeilBrown

> ---
>  fs/dcache.c             | 6 +++---
>  include/linux/lockref.h | 2 +-
>  lib/lockref.c           | 4 ++--
>  3 files changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/fs/dcache.c b/fs/dcache.c
> index 06f6585..f7a592e 100644
> --- a/fs/dcache.c
> +++ b/fs/dcache.c
> @@ -479,7 +479,7 @@ static void __dentry_kill(struct dentry *dentry)
>  	 * dentry_iput drops the locks, at which point nobody (except
>  	 * transient RCU lookups) can reach this dentry.
>  	 */
> -	BUG_ON((int)dentry->d_lockref.count > 0);
> +	BUG_ON(dentry->d_lockref.count > 0);
>  	this_cpu_dec(nr_dentry);
>  	if (dentry->d_op && dentry->d_op->d_release)
>  		dentry->d_op->d_release(dentry);
> @@ -532,7 +532,7 @@ static inline struct dentry *lock_parent(struct dentry *dentry)
>  	struct dentry *parent = dentry->d_parent;
>  	if (IS_ROOT(dentry))
>  		return NULL;
> -	if (unlikely((int)dentry->d_lockref.count < 0))
> +	if (unlikely(dentry->d_lockref.count < 0))
>  		return NULL;
>  	if (likely(spin_trylock(&parent->d_lock)))
>  		return parent;
> @@ -848,7 +848,7 @@ static void shrink_dentry_list(struct list_head *list)
>  		 * We found an inuse dentry which was not removed from
>  		 * the LRU because of laziness during lookup. Do not free it.
>  		 */
> -		if ((int)dentry->d_lockref.count > 0) {
> +		if (dentry->d_lockref.count > 0) {
>  			spin_unlock(&dentry->d_lock);
>  			if (parent)
>  				spin_unlock(&parent->d_lock);
> diff --git a/include/linux/lockref.h b/include/linux/lockref.h
> index 4bfde0e..8558ff1 100644
> --- a/include/linux/lockref.h
> +++ b/include/linux/lockref.h
> @@ -28,7 +28,7 @@ struct lockref {
>  #endif
>  		struct {
>  			spinlock_t lock;
> -			unsigned int count;
> +			int count;
>  		};
>  	};
>  };
> diff --git a/lib/lockref.c b/lib/lockref.c
> index d2233de..e4c4255 100644
> --- a/lib/lockref.c
> +++ b/lib/lockref.c
> @@ -158,7 +158,7 @@ int lockref_get_not_dead(struct lockref *lockref)
>  
>  	CMPXCHG_LOOP(
>  		new.count++;
> -		if ((int)old.count < 0)
> +		if (old.count < 0)
>  			return 0;
>  	,
>  		return 1;
> @@ -166,7 +166,7 @@ int lockref_get_not_dead(struct lockref *lockref)
>  
>  	spin_lock(&lockref->lock);
>  	retval = 0;
> -	if ((int) lockref->count >= 0) {
> +	if (lockref->count >= 0) {
>  		lockref->count++;
>  		retval = 1;
>  	}


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 828 bytes --]

  parent reply	other threads:[~2014-08-05 21:44 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-08-05 19:52 [PATCH 1/2] lockref: make lockref count signed Steven Noonan
2014-08-05 19:52 ` [PATCH 2/2] lockref: replace lockref_get_not_zero with lockref_get_active Steven Noonan
2014-08-05 21:44 ` NeilBrown [this message]
2014-08-05 21:46   ` [PATCH 1/2] lockref: make lockref count signed Steven Noonan
2014-08-05 21:54     ` [PATCH 1/2 v2] " Steven Noonan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140806074430.102121ae@notabene.brown \
    --to=neilb@suse.de \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=steven@uplinklabs.net \
    --cc=viro@ZenIV.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.