Re: [PATCH v2] locking/rwsem: Add reader-owned state to the owner field

From: Waiman Long
Date: Fri May 20 2016 - 18:57:21 EST


On 05/18/2016 09:37 PM, Dave Chinner wrote:
On Fri, May 06, 2016 at 08:20:24PM -0400, Waiman Long wrote:
Currently, it is not possible to determine for sure if a reader
owns a rwsem by looking at the content of the rwsem data structure.
This patch adds a new state RWSEM_READER_OWNED to the owner field
to indicate that readers currently own the lock.
Oh, yes please. This will enable us to get rid of the remaining
mrlock rwsem abstraction we've carried since the days of Irix in
XFS. The only reason the abstraction still exists is that we track
write locks for the purposes of checking for correct inode locking
contexts via ASSERT(xfs_isilocked()) calls....

I think we could add code to export this read/write ownership information. However, that will only work when both CONFIG_RWSEM_XCHGADD_ALGORITHM and CONFIG_RWSEM_SPIN_ON_OWNER are set. So this functionality may not be available in some architectures that use CONFIG_RWSEM_GENERIC_SPINLOCK.

Cheers,
Longman