mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-26 03:09:34 +03:00
Reimplement rt_mutex_owner to fix build with DEBUG & PREEMPT_RT_FULL
rt_mutex_owner is internal to kernel/locking/rtmutex_common.h and inaccessible for SPL via the public kernel headers. The way of accessing the owner has been stable since at least 3.13 ([1], [2]), which is masking the lowest bit in the owner pointer in rt_mutex. We do the same. [1] http://lxr.free-electrons.com/source/kernel/locking/rtmutex_common.h?v=3.13#L99 [2] http://lxr.free-electrons.com/source/kernel/locking/rtmutex_common.h?v=4.9#L78 Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Clemens Fruhwirth <clemens@endorphin.org> Closes #593
This commit is contained in:
parent
5cb44271b4
commit
2d4d81c485
@ -35,11 +35,15 @@
|
|||||||
#if defined(CONFIG_PREEMPT_RT_FULL)
|
#if defined(CONFIG_PREEMPT_RT_FULL)
|
||||||
|
|
||||||
#include <linux/rtmutex.h>
|
#include <linux/rtmutex.h>
|
||||||
|
#define RT_MUTEX_OWNER_MASKALL 1UL
|
||||||
|
|
||||||
static int
|
static int
|
||||||
__rwsem_tryupgrade(struct rw_semaphore *rwsem)
|
__rwsem_tryupgrade(struct rw_semaphore *rwsem)
|
||||||
{
|
{
|
||||||
ASSERT(rt_mutex_owner(&rwsem->lock) == current);
|
|
||||||
|
ASSERT((struct task_struct *)
|
||||||
|
((unsigned long)rwsem->lock.owner & ~RT_MUTEX_OWNER_MASKALL) ==
|
||||||
|
current);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Under the realtime patch series, rwsem is implemented as a
|
* Under the realtime patch series, rwsem is implemented as a
|
||||||
|
Loading…
Reference in New Issue
Block a user