diff options
Diffstat (limited to 'fs/xfs/xfs_iget.c')
-rw-r--r-- | fs/xfs/xfs_iget.c | 29 |
1 files changed, 10 insertions, 19 deletions
diff --git a/fs/xfs/xfs_iget.c b/fs/xfs/xfs_iget.c index 6845db90818f..75df75f43d48 100644 --- a/fs/xfs/xfs_iget.c +++ b/fs/xfs/xfs_iget.c | |||
@@ -382,9 +382,6 @@ xfs_iget( | |||
382 | 382 | ||
383 | /* get the perag structure and ensure that it's inode capable */ | 383 | /* get the perag structure and ensure that it's inode capable */ |
384 | pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, ino)); | 384 | pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, ino)); |
385 | if (!pag->pagi_inodeok) | ||
386 | return EINVAL; | ||
387 | ASSERT(pag->pag_ici_init); | ||
388 | agino = XFS_INO_TO_AGINO(mp, ino); | 385 | agino = XFS_INO_TO_AGINO(mp, ino); |
389 | 386 | ||
390 | again: | 387 | again: |
@@ -744,30 +741,24 @@ xfs_ilock_demote( | |||
744 | } | 741 | } |
745 | 742 | ||
746 | #ifdef DEBUG | 743 | #ifdef DEBUG |
747 | /* | ||
748 | * Debug-only routine, without additional rw_semaphore APIs, we can | ||
749 | * now only answer requests regarding whether we hold the lock for write | ||
750 | * (reader state is outside our visibility, we only track writer state). | ||
751 | * | ||
752 | * Note: this means !xfs_isilocked would give false positives, so don't do that. | ||
753 | */ | ||
754 | int | 744 | int |
755 | xfs_isilocked( | 745 | xfs_isilocked( |
756 | xfs_inode_t *ip, | 746 | xfs_inode_t *ip, |
757 | uint lock_flags) | 747 | uint lock_flags) |
758 | { | 748 | { |
759 | if ((lock_flags & (XFS_ILOCK_EXCL|XFS_ILOCK_SHARED)) == | 749 | if (lock_flags & (XFS_ILOCK_EXCL|XFS_ILOCK_SHARED)) { |
760 | XFS_ILOCK_EXCL) { | 750 | if (!(lock_flags & XFS_ILOCK_SHARED)) |
761 | if (!ip->i_lock.mr_writer) | 751 | return !!ip->i_lock.mr_writer; |
762 | return 0; | 752 | return rwsem_is_locked(&ip->i_lock.mr_lock); |
763 | } | 753 | } |
764 | 754 | ||
765 | if ((lock_flags & (XFS_IOLOCK_EXCL|XFS_IOLOCK_SHARED)) == | 755 | if (lock_flags & (XFS_IOLOCK_EXCL|XFS_IOLOCK_SHARED)) { |
766 | XFS_IOLOCK_EXCL) { | 756 | if (!(lock_flags & XFS_IOLOCK_SHARED)) |
767 | if (!ip->i_iolock.mr_writer) | 757 | return !!ip->i_iolock.mr_writer; |
768 | return 0; | 758 | return rwsem_is_locked(&ip->i_iolock.mr_lock); |
769 | } | 759 | } |
770 | 760 | ||
771 | return 1; | 761 | ASSERT(0); |
762 | return 0; | ||
772 | } | 763 | } |
773 | #endif | 764 | #endif |