From: Josef Bacik Date: Fri, 30 Aug 2013 14:05:22 +0000 (-0400) Subject: rwsem: add rwsem_is_contended X-Git-Tag: upstream/snapshot3+hdmi~3409^2~84 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4a444b1f06d259ce938a47048840260f71a91c84;p=platform%2Fadaptation%2Frenesas_rcar%2Frenesas_kernel.git rwsem: add rwsem_is_contended Btrfs needs a simple way to know if it needs to let go of it's read lock on a rwsem. Introduce rwsem_is_contended to check to see if there are any waiters on this rwsem currently. This is just a hueristic, it is meant to be light and not 100% accurate and called by somebody already holding on to the rwsem in either read or write. Thanks, Signed-off-by: Josef Bacik Signed-off-by: Chris Mason Acked-by: Ingo Molnar --- diff --git a/include/linux/rwsem.h b/include/linux/rwsem.h index 0616ffe..03f3b05 100644 --- a/include/linux/rwsem.h +++ b/include/linux/rwsem.h @@ -75,6 +75,17 @@ do { \ } while (0) /* + * This is the same regardless of which rwsem implementation that is being used. + * It is just a heuristic meant to be called by somebody alreadying holding the + * rwsem to see if somebody from an incompatible type is wanting access to the + * lock. + */ +static inline int rwsem_is_contended(struct rw_semaphore *sem) +{ + return !list_empty(&sem->wait_list); +} + +/* * lock for reading */ extern void down_read(struct rw_semaphore *sem);