Re: How to get lockref patch merged?
On 3 April 2018 at 19:20, Greg Kroah-Hartmanwrote: > On Tue, Apr 03, 2018 at 01:13:00PM +0200, Andreas Gruenbacher wrote: >> Hello, >> >> what's the best way to get the following lockref patch merged? The >> maintainers file doesn't list a maintainer. Should we go straight to >> Linus? Does one of you want to take it? > > Andrew normally takes lib/ patches, but: > >> We have a gfs2 patch that depends on it. > > Then just include it in your patch series for gfs2 through the normal > path you use for that. Ok, will do. Thanks for your help. Andreas
Re: How to get lockref patch merged?
On 3 April 2018 at 19:20, Greg Kroah-Hartman wrote: > On Tue, Apr 03, 2018 at 01:13:00PM +0200, Andreas Gruenbacher wrote: >> Hello, >> >> what's the best way to get the following lockref patch merged? The >> maintainers file doesn't list a maintainer. Should we go straight to >> Linus? Does one of you want to take it? > > Andrew normally takes lib/ patches, but: > >> We have a gfs2 patch that depends on it. > > Then just include it in your patch series for gfs2 through the normal > path you use for that. Ok, will do. Thanks for your help. Andreas
Re: How to get lockref patch merged?
On Tue, Apr 03, 2018 at 01:13:00PM +0200, Andreas Gruenbacher wrote: > Hello, > > what's the best way to get the following lockref patch merged? The > maintainers file doesn't list a maintainer. Should we go straight to > Linus? Does one of you want to take it? Andrew normally takes lib/ patches, but: > We have a gfs2 patch that depends on it. Then just include it in your patch series for gfs2 through the normal path you use for that. thanks, greg k-h
Re: How to get lockref patch merged?
On Tue, Apr 03, 2018 at 01:13:00PM +0200, Andreas Gruenbacher wrote: > Hello, > > what's the best way to get the following lockref patch merged? The > maintainers file doesn't list a maintainer. Should we go straight to > Linus? Does one of you want to take it? Andrew normally takes lib/ patches, but: > We have a gfs2 patch that depends on it. Then just include it in your patch series for gfs2 through the normal path you use for that. thanks, greg k-h
How to get lockref patch merged?
Hello, what's the best way to get the following lockref patch merged? The maintainers file doesn't list a maintainer. Should we go straight to Linus? Does one of you want to take it? We have a gfs2 patch that depends on it. Thanks, Andreas -- Forwarded message -- From: Andreas GruenbacherDate: 29 March 2018 at 14:06 Subject: [PATCH v2 1/2] lockref: Add lockref_put_not_zero To: cluster-de...@redhat.com Cc: net...@vger.kernel.org, linux-kernel@vger.kernel.org, NeilBrown , Thomas Graf , Herbert Xu , Tom Herbert , Andreas Gruenbacher Put a lockref unless the lockref is dead or its count would become zero. This is the same as lockref_put_or_lock except that the lock is never left held. Signed-off-by: Andreas Gruenbacher --- include/linux/lockref.h | 1 + lib/lockref.c | 28 2 files changed, 29 insertions(+) diff --git a/include/linux/lockref.h b/include/linux/lockref.h index 2eac32095113..99f17cc8e163 100644 --- a/include/linux/lockref.h +++ b/include/linux/lockref.h @@ -37,6 +37,7 @@ struct lockref { extern void lockref_get(struct lockref *); extern int lockref_put_return(struct lockref *); extern int lockref_get_not_zero(struct lockref *); +extern int lockref_put_not_zero(struct lockref *); extern int lockref_get_or_lock(struct lockref *); extern int lockref_put_or_lock(struct lockref *); diff --git a/lib/lockref.c b/lib/lockref.c index 47169ed7e964..3d468b53d4c9 100644 --- a/lib/lockref.c +++ b/lib/lockref.c @@ -80,6 +80,34 @@ int lockref_get_not_zero(struct lockref *lockref) } EXPORT_SYMBOL(lockref_get_not_zero); +/** + * lockref_put_not_zero - Decrements count unless count <= 1 before decrement + * @lockref: pointer to lockref structure + * Return: 1 if count updated successfully or 0 if count would become zero + */ +int lockref_put_not_zero(struct lockref *lockref) +{ + int retval; + + CMPXCHG_LOOP( + new.count--; + if (old.count <= 1) + return 0; + , + return 1; + ); + + spin_lock(>lock); + retval = 0; + if (lockref->count > 1) { + lockref->count--; + retval = 1; + } + spin_unlock(>lock); + return retval; +} +EXPORT_SYMBOL(lockref_put_not_zero); + /** * lockref_get_or_lock - Increments count unless the count is 0 or dead * @lockref: pointer to lockref structure -- 2.14.3
How to get lockref patch merged?
Hello, what's the best way to get the following lockref patch merged? The maintainers file doesn't list a maintainer. Should we go straight to Linus? Does one of you want to take it? We have a gfs2 patch that depends on it. Thanks, Andreas -- Forwarded message -- From: Andreas Gruenbacher Date: 29 March 2018 at 14:06 Subject: [PATCH v2 1/2] lockref: Add lockref_put_not_zero To: cluster-de...@redhat.com Cc: net...@vger.kernel.org, linux-kernel@vger.kernel.org, NeilBrown , Thomas Graf , Herbert Xu , Tom Herbert , Andreas Gruenbacher Put a lockref unless the lockref is dead or its count would become zero. This is the same as lockref_put_or_lock except that the lock is never left held. Signed-off-by: Andreas Gruenbacher --- include/linux/lockref.h | 1 + lib/lockref.c | 28 2 files changed, 29 insertions(+) diff --git a/include/linux/lockref.h b/include/linux/lockref.h index 2eac32095113..99f17cc8e163 100644 --- a/include/linux/lockref.h +++ b/include/linux/lockref.h @@ -37,6 +37,7 @@ struct lockref { extern void lockref_get(struct lockref *); extern int lockref_put_return(struct lockref *); extern int lockref_get_not_zero(struct lockref *); +extern int lockref_put_not_zero(struct lockref *); extern int lockref_get_or_lock(struct lockref *); extern int lockref_put_or_lock(struct lockref *); diff --git a/lib/lockref.c b/lib/lockref.c index 47169ed7e964..3d468b53d4c9 100644 --- a/lib/lockref.c +++ b/lib/lockref.c @@ -80,6 +80,34 @@ int lockref_get_not_zero(struct lockref *lockref) } EXPORT_SYMBOL(lockref_get_not_zero); +/** + * lockref_put_not_zero - Decrements count unless count <= 1 before decrement + * @lockref: pointer to lockref structure + * Return: 1 if count updated successfully or 0 if count would become zero + */ +int lockref_put_not_zero(struct lockref *lockref) +{ + int retval; + + CMPXCHG_LOOP( + new.count--; + if (old.count <= 1) + return 0; + , + return 1; + ); + + spin_lock(>lock); + retval = 0; + if (lockref->count > 1) { + lockref->count--; + retval = 1; + } + spin_unlock(>lock); + return retval; +} +EXPORT_SYMBOL(lockref_put_not_zero); + /** * lockref_get_or_lock - Increments count unless the count is 0 or dead * @lockref: pointer to lockref structure -- 2.14.3