* Clark Williams | 2014-08-27 16:09:28 [-0500]:
>Thomas,
>
>The latest btrfs code uses rwsem_is_contended() in the function
>caching_thread(). On RT systems, include/linux/rwsem.h is replaced with
>include/linux/rwsem_rt.h which does not provide a definition for
>rwsem_is_contended(). This commit provides a definition that should
>work on RT (where the lock is actually an rt_mutex).
I see that I added rwsem_is_contended() in v3.14-rt1 which does:
|static inline int rwsem_is_contended(struct rw_semaphore *sem)
|{
| /* rt_mutex_has_waiters() */
| return !RB_EMPTY_ROOT(&sem->lock.waiters);
|}
Do you lack this in kernel prior to v3.14?
Sebastian
On Tue, 17 Feb 2015 11:09:11 +0100
Sebastian Andrzej Siewior <[email protected]> wrote:
> * Clark Williams | 2014-08-27 16:09:28 [-0500]:
>
> >Thomas,
> >
> >The latest btrfs code uses rwsem_is_contended() in the function
> >caching_thread(). On RT systems, include/linux/rwsem.h is replaced with
> >include/linux/rwsem_rt.h which does not provide a definition for
> >rwsem_is_contended(). This commit provides a definition that should
> >work on RT (where the lock is actually an rt_mutex).
>
> I see that I added rwsem_is_contended() in v3.14-rt1 which does:
> |static inline int rwsem_is_contended(struct rw_semaphore *sem)
> |{
> | /* rt_mutex_has_waiters() */
> | return !RB_EMPTY_ROOT(&sem->lock.waiters);
> |}
>
> Do you lack this in kernel prior to v3.14?
>
> Sebastian
Yes, that was the problem. I was back-porting to a 3.10 and was missing
the definition. Sorry for the noise.
Clark