Add rwsem_tryupgrade for 4.9.20-rt16 kernel

The RT rwsem implementation was changed to allow multiple readers
as of the 4.9.20-rt16 patch set.  This results in a build failure
because the existing implementation was forced to directly access
the rwsem structure which has changed.

While this could be accommodated by adding additional compatibility
code.  This patch resolves the build issue by simply assuming the
rwsem can never be upgraded.  This functionality is a performance
optimization and all callers must already handle this case.

Converting the last remaining use of __SPIN_LOCK_UNLOCKED to
spin_lock_init() was additionally required to get a clean build.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #7589
This commit is contained in:
Brian Behlendorf
2018-07-30 09:22:30 -07:00
committed by GitHub
parent fb7307b892
commit 11d0525cbb
3 changed files with 20 additions and 11 deletions
+5 -5
View File
@@ -172,7 +172,7 @@ RW_LOCK_HELD(krwlock_t *rwp)
}
/*
* The following functions must be a #define and not static inline.
* The following functions must be a #define and not static inline.
* This ensures that the native linux semaphore functions (down/up)
* will be correctly located in the users code which is important
* for the built in kernel lock analysis tools
@@ -188,10 +188,10 @@ RW_LOCK_HELD(krwlock_t *rwp)
spl_rw_set_type(rwp, type); \
})
#define rw_destroy(rwp) \
({ \
VERIFY(!RW_LOCK_HELD(rwp)); \
})
/*
* The Linux rwsem implementation does not require a matching destroy.
*/
#define rw_destroy(rwp) ((void) 0)
#define rw_tryenter(rwp, rw) \
({ \