if (RW_WRITE_HELD(rwp)) { \
_rc_ = 1; \
} else { \
- rw_exit(rwp); \
- if (rw_tryenter(rwp, RW_WRITER)) { \
- _rc_ = 1; \
- } else { \
- rw_enter(rwp, RW_READER); \
- _rc_ = 0; \
- } \
+ spl_rw_lockdep_off_maybe(rwp); \
+ if ((_rc_ = rwsem_tryupgrade(SEM(rwp)))) \
+ spl_rw_set_owner(rwp); \
+ spl_rw_lockdep_on_maybe(rwp); \
} \
_rc_; \
})