aboutsummaryrefslogtreecommitdiffstats
path: root/fs/xfs
diff options
context:
space:
mode:
Diffstat (limited to 'fs/xfs')
-rw-r--r--fs/xfs/xfs_iget.c26
1 files changed, 10 insertions, 16 deletions
diff --git a/fs/xfs/xfs_iget.c b/fs/xfs/xfs_iget.c
index f44a367907a..75df75f43d4 100644
--- a/fs/xfs/xfs_iget.c
+++ b/fs/xfs/xfs_iget.c
@@ -741,30 +741,24 @@ xfs_ilock_demote(
741} 741}
742 742
743#ifdef DEBUG 743#ifdef DEBUG
744/*
745 * Debug-only routine, without additional rw_semaphore APIs, we can
746 * now only answer requests regarding whether we hold the lock for write
747 * (reader state is outside our visibility, we only track writer state).
748 *
749 * Note: this means !xfs_isilocked would give false positives, so don't do that.
750 */
751int 744int
752xfs_isilocked( 745xfs_isilocked(
753 xfs_inode_t *ip, 746 xfs_inode_t *ip,
754 uint lock_flags) 747 uint lock_flags)
755{ 748{
756 if ((lock_flags & (XFS_ILOCK_EXCL|XFS_ILOCK_SHARED)) == 749 if (lock_flags & (XFS_ILOCK_EXCL|XFS_ILOCK_SHARED)) {
757 XFS_ILOCK_EXCL) { 750 if (!(lock_flags & XFS_ILOCK_SHARED))
758 if (!ip->i_lock.mr_writer) 751 return !!ip->i_lock.mr_writer;
759 return 0; 752 return rwsem_is_locked(&ip->i_lock.mr_lock);
760 } 753 }
761 754
762 if ((lock_flags & (XFS_IOLOCK_EXCL|XFS_IOLOCK_SHARED)) == 755 if (lock_flags & (XFS_IOLOCK_EXCL|XFS_IOLOCK_SHARED)) {
763 XFS_IOLOCK_EXCL) { 756 if (!(lock_flags & XFS_IOLOCK_SHARED))
764 if (!ip->i_iolock.mr_writer) 757 return !!ip->i_iolock.mr_writer;
765 return 0; 758 return rwsem_is_locked(&ip->i_iolock.mr_lock);
766 } 759 }
767 760
768 return 1; 761 ASSERT(0);
762 return 0;
769} 763}
770#endif 764#endif