aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosef Bacik <jbacik@fusionio.com>2013-08-30 10:05:22 -0400
committerChris Mason <clm@fb.com>2014-01-28 16:20:09 -0500
commit4a444b1f06d259ce938a47048840260f71a91c84 (patch)
treebc8d5f2d2a3fbbbb3efc50711e3b5cfc14966a7e
parent67de11769bd5ec339a62169f500b04f304826c00 (diff)
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 <jbacik@fusionio.com> Signed-off-by: Chris Mason <clm@fb.com> Acked-by: Ingo Molnar <mingo@kernel.org>
-rw-r--r--include/linux/rwsem.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/include/linux/rwsem.h b/include/linux/rwsem.h
index 0616ffe45702..03f3b05e8ec1 100644
--- a/include/linux/rwsem.h
+++ b/include/linux/rwsem.h
@@ -75,6 +75,17 @@ do { \
75} while (0) 75} while (0)
76 76
77/* 77/*
78 * This is the same regardless of which rwsem implementation that is being used.
79 * It is just a heuristic meant to be called by somebody alreadying holding the
80 * rwsem to see if somebody from an incompatible type is wanting access to the
81 * lock.
82 */
83static inline int rwsem_is_contended(struct rw_semaphore *sem)
84{
85 return !list_empty(&sem->wait_list);
86}
87
88/*
78 * lock for reading 89 * lock for reading
79 */ 90 */
80extern void down_read(struct rw_semaphore *sem); 91extern void down_read(struct rw_semaphore *sem);