|
@@ -741,30 +741,24 @@ xfs_ilock_demote(
|
|
|
}
|
|
|
|
|
|
#ifdef DEBUG
|
|
|
-/*
|
|
|
- * Debug-only routine, without additional rw_semaphore APIs, we can
|
|
|
- * now only answer requests regarding whether we hold the lock for write
|
|
|
- * (reader state is outside our visibility, we only track writer state).
|
|
|
- *
|
|
|
- * Note: this means !xfs_isilocked would give false positives, so don't do that.
|
|
|
- */
|
|
|
int
|
|
|
xfs_isilocked(
|
|
|
xfs_inode_t *ip,
|
|
|
uint lock_flags)
|
|
|
{
|
|
|
- if ((lock_flags & (XFS_ILOCK_EXCL|XFS_ILOCK_SHARED)) ==
|
|
|
- XFS_ILOCK_EXCL) {
|
|
|
- if (!ip->i_lock.mr_writer)
|
|
|
- return 0;
|
|
|
+ if (lock_flags & (XFS_ILOCK_EXCL|XFS_ILOCK_SHARED)) {
|
|
|
+ if (!(lock_flags & XFS_ILOCK_SHARED))
|
|
|
+ return !!ip->i_lock.mr_writer;
|
|
|
+ return rwsem_is_locked(&ip->i_lock.mr_lock);
|
|
|
}
|
|
|
|
|
|
- if ((lock_flags & (XFS_IOLOCK_EXCL|XFS_IOLOCK_SHARED)) ==
|
|
|
- XFS_IOLOCK_EXCL) {
|
|
|
- if (!ip->i_iolock.mr_writer)
|
|
|
- return 0;
|
|
|
+ if (lock_flags & (XFS_IOLOCK_EXCL|XFS_IOLOCK_SHARED)) {
|
|
|
+ if (!(lock_flags & XFS_IOLOCK_SHARED))
|
|
|
+ return !!ip->i_iolock.mr_writer;
|
|
|
+ return rwsem_is_locked(&ip->i_iolock.mr_lock);
|
|
|
}
|
|
|
|
|
|
- return 1;
|
|
|
+ ASSERT(0);
|
|
|
+ return 0;
|
|
|
}
|
|
|
#endif
|