diff options
author | Christoph Hellwig <hch@infradead.org> | 2008-04-22 03:34:00 -0400 |
---|---|---|
committer | Lachlan McIlroy <lachlan@redback.melbourne.sgi.com> | 2008-04-29 01:54:02 -0400 |
commit | 579aa9caf552c639fc78168db4cfe7ffcf00c3b3 (patch) | |
tree | 2fb1e057487afe46d03bc536fcba380dc0117cfb /fs/xfs/quota | |
parent | eca450b7c23f804597b87085b2a05bfc5b3ccb8b (diff) |
[XFS] shrink mrlock_t
The writer field is not needed for non_DEBU builds so remove it. While
we're at i also clean up the interface for is locked asserts to go through
and xfs_iget.c helper with an interface like the xfs_ilock routines to
isolated the XFS codebase from mrlock internals. That way we can kill
mrlock_t entirely once rw_semaphores grow an islocked facility. Also
remove unused flags to the ilock family of functions.
SGI-PV: 976035
SGI-Modid: xfs-linux-melb:xfs-kern:30902a
Signed-off-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Diffstat (limited to 'fs/xfs/quota')
-rw-r--r-- | fs/xfs/quota/xfs_dquot.c | 4 | ||||
-rw-r--r-- | fs/xfs/quota/xfs_qm.c | 21 | ||||
-rw-r--r-- | fs/xfs/quota/xfs_quota_priv.h | 5 | ||||
-rw-r--r-- | fs/xfs/quota/xfs_trans_dquot.c | 2 |
4 files changed, 14 insertions, 18 deletions
diff --git a/fs/xfs/quota/xfs_dquot.c b/fs/xfs/quota/xfs_dquot.c index 631ebb31b295..85df3288efd5 100644 --- a/fs/xfs/quota/xfs_dquot.c +++ b/fs/xfs/quota/xfs_dquot.c | |||
@@ -933,7 +933,7 @@ xfs_qm_dqget( | |||
933 | type == XFS_DQ_PROJ || | 933 | type == XFS_DQ_PROJ || |
934 | type == XFS_DQ_GROUP); | 934 | type == XFS_DQ_GROUP); |
935 | if (ip) { | 935 | if (ip) { |
936 | ASSERT(XFS_ISLOCKED_INODE_EXCL(ip)); | 936 | ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); |
937 | if (type == XFS_DQ_USER) | 937 | if (type == XFS_DQ_USER) |
938 | ASSERT(ip->i_udquot == NULL); | 938 | ASSERT(ip->i_udquot == NULL); |
939 | else | 939 | else |
@@ -1088,7 +1088,7 @@ xfs_qm_dqget( | |||
1088 | xfs_qm_mplist_unlock(mp); | 1088 | xfs_qm_mplist_unlock(mp); |
1089 | XFS_DQ_HASH_UNLOCK(h); | 1089 | XFS_DQ_HASH_UNLOCK(h); |
1090 | dqret: | 1090 | dqret: |
1091 | ASSERT((ip == NULL) || XFS_ISLOCKED_INODE_EXCL(ip)); | 1091 | ASSERT((ip == NULL) || xfs_isilocked(ip, XFS_ILOCK_EXCL)); |
1092 | xfs_dqtrace_entry(dqp, "DQGET DONE"); | 1092 | xfs_dqtrace_entry(dqp, "DQGET DONE"); |
1093 | *O_dqpp = dqp; | 1093 | *O_dqpp = dqp; |
1094 | return (0); | 1094 | return (0); |
diff --git a/fs/xfs/quota/xfs_qm.c b/fs/xfs/quota/xfs_qm.c index fb624a17f15b..d31cce1165c5 100644 --- a/fs/xfs/quota/xfs_qm.c +++ b/fs/xfs/quota/xfs_qm.c | |||
@@ -670,7 +670,7 @@ xfs_qm_dqattach_one( | |||
670 | xfs_dquot_t *dqp; | 670 | xfs_dquot_t *dqp; |
671 | int error; | 671 | int error; |
672 | 672 | ||
673 | ASSERT(XFS_ISLOCKED_INODE_EXCL(ip)); | 673 | ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); |
674 | error = 0; | 674 | error = 0; |
675 | /* | 675 | /* |
676 | * See if we already have it in the inode itself. IO_idqpp is | 676 | * See if we already have it in the inode itself. IO_idqpp is |
@@ -874,7 +874,7 @@ xfs_qm_dqattach( | |||
874 | return 0; | 874 | return 0; |
875 | 875 | ||
876 | ASSERT((flags & XFS_QMOPT_ILOCKED) == 0 || | 876 | ASSERT((flags & XFS_QMOPT_ILOCKED) == 0 || |
877 | XFS_ISLOCKED_INODE_EXCL(ip)); | 877 | xfs_isilocked(ip, XFS_ILOCK_EXCL)); |
878 | 878 | ||
879 | if (! (flags & XFS_QMOPT_ILOCKED)) | 879 | if (! (flags & XFS_QMOPT_ILOCKED)) |
880 | xfs_ilock(ip, XFS_ILOCK_EXCL); | 880 | xfs_ilock(ip, XFS_ILOCK_EXCL); |
@@ -888,7 +888,8 @@ xfs_qm_dqattach( | |||
888 | goto done; | 888 | goto done; |
889 | nquotas++; | 889 | nquotas++; |
890 | } | 890 | } |
891 | ASSERT(XFS_ISLOCKED_INODE_EXCL(ip)); | 891 | |
892 | ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); | ||
892 | if (XFS_IS_OQUOTA_ON(mp)) { | 893 | if (XFS_IS_OQUOTA_ON(mp)) { |
893 | error = XFS_IS_GQUOTA_ON(mp) ? | 894 | error = XFS_IS_GQUOTA_ON(mp) ? |
894 | xfs_qm_dqattach_one(ip, ip->i_d.di_gid, XFS_DQ_GROUP, | 895 | xfs_qm_dqattach_one(ip, ip->i_d.di_gid, XFS_DQ_GROUP, |
@@ -913,7 +914,7 @@ xfs_qm_dqattach( | |||
913 | * This WON'T, in general, result in a thrash. | 914 | * This WON'T, in general, result in a thrash. |
914 | */ | 915 | */ |
915 | if (nquotas == 2) { | 916 | if (nquotas == 2) { |
916 | ASSERT(XFS_ISLOCKED_INODE_EXCL(ip)); | 917 | ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); |
917 | ASSERT(ip->i_udquot); | 918 | ASSERT(ip->i_udquot); |
918 | ASSERT(ip->i_gdquot); | 919 | ASSERT(ip->i_gdquot); |
919 | 920 | ||
@@ -956,7 +957,7 @@ xfs_qm_dqattach( | |||
956 | 957 | ||
957 | #ifdef QUOTADEBUG | 958 | #ifdef QUOTADEBUG |
958 | else | 959 | else |
959 | ASSERT(XFS_ISLOCKED_INODE_EXCL(ip)); | 960 | ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); |
960 | #endif | 961 | #endif |
961 | return error; | 962 | return error; |
962 | } | 963 | } |
@@ -1291,7 +1292,7 @@ xfs_qm_dqget_noattach( | |||
1291 | xfs_mount_t *mp; | 1292 | xfs_mount_t *mp; |
1292 | xfs_dquot_t *udqp, *gdqp; | 1293 | xfs_dquot_t *udqp, *gdqp; |
1293 | 1294 | ||
1294 | ASSERT(XFS_ISLOCKED_INODE_EXCL(ip)); | 1295 | ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); |
1295 | mp = ip->i_mount; | 1296 | mp = ip->i_mount; |
1296 | udqp = NULL; | 1297 | udqp = NULL; |
1297 | gdqp = NULL; | 1298 | gdqp = NULL; |
@@ -1392,7 +1393,7 @@ xfs_qm_qino_alloc( | |||
1392 | * Keep an extra reference to this quota inode. This inode is | 1393 | * Keep an extra reference to this quota inode. This inode is |
1393 | * locked exclusively and joined to the transaction already. | 1394 | * locked exclusively and joined to the transaction already. |
1394 | */ | 1395 | */ |
1395 | ASSERT(XFS_ISLOCKED_INODE_EXCL(*ip)); | 1396 | ASSERT(xfs_isilocked(*ip, XFS_ILOCK_EXCL)); |
1396 | VN_HOLD(XFS_ITOV((*ip))); | 1397 | VN_HOLD(XFS_ITOV((*ip))); |
1397 | 1398 | ||
1398 | /* | 1399 | /* |
@@ -2557,7 +2558,7 @@ xfs_qm_vop_chown( | |||
2557 | uint bfield = XFS_IS_REALTIME_INODE(ip) ? | 2558 | uint bfield = XFS_IS_REALTIME_INODE(ip) ? |
2558 | XFS_TRANS_DQ_RTBCOUNT : XFS_TRANS_DQ_BCOUNT; | 2559 | XFS_TRANS_DQ_RTBCOUNT : XFS_TRANS_DQ_BCOUNT; |
2559 | 2560 | ||
2560 | ASSERT(XFS_ISLOCKED_INODE_EXCL(ip)); | 2561 | ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); |
2561 | ASSERT(XFS_IS_QUOTA_RUNNING(ip->i_mount)); | 2562 | ASSERT(XFS_IS_QUOTA_RUNNING(ip->i_mount)); |
2562 | 2563 | ||
2563 | /* old dquot */ | 2564 | /* old dquot */ |
@@ -2601,7 +2602,7 @@ xfs_qm_vop_chown_reserve( | |||
2601 | uint delblks, blkflags, prjflags = 0; | 2602 | uint delblks, blkflags, prjflags = 0; |
2602 | xfs_dquot_t *unresudq, *unresgdq, *delblksudq, *delblksgdq; | 2603 | xfs_dquot_t *unresudq, *unresgdq, *delblksudq, *delblksgdq; |
2603 | 2604 | ||
2604 | ASSERT(XFS_ISLOCKED_INODE(ip)); | 2605 | ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL|XFS_ILOCK_SHARED)); |
2605 | mp = ip->i_mount; | 2606 | mp = ip->i_mount; |
2606 | ASSERT(XFS_IS_QUOTA_RUNNING(mp)); | 2607 | ASSERT(XFS_IS_QUOTA_RUNNING(mp)); |
2607 | 2608 | ||
@@ -2711,7 +2712,7 @@ xfs_qm_vop_dqattach_and_dqmod_newinode( | |||
2711 | if (!XFS_IS_QUOTA_ON(tp->t_mountp)) | 2712 | if (!XFS_IS_QUOTA_ON(tp->t_mountp)) |
2712 | return; | 2713 | return; |
2713 | 2714 | ||
2714 | ASSERT(XFS_ISLOCKED_INODE_EXCL(ip)); | 2715 | ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); |
2715 | ASSERT(XFS_IS_QUOTA_RUNNING(tp->t_mountp)); | 2716 | ASSERT(XFS_IS_QUOTA_RUNNING(tp->t_mountp)); |
2716 | 2717 | ||
2717 | if (udqp) { | 2718 | if (udqp) { |
diff --git a/fs/xfs/quota/xfs_quota_priv.h b/fs/xfs/quota/xfs_quota_priv.h index a8b85e2be9d5..5e4a40b1c565 100644 --- a/fs/xfs/quota/xfs_quota_priv.h +++ b/fs/xfs/quota/xfs_quota_priv.h | |||
@@ -27,11 +27,6 @@ | |||
27 | /* Number of dquots that fit in to a dquot block */ | 27 | /* Number of dquots that fit in to a dquot block */ |
28 | #define XFS_QM_DQPERBLK(mp) ((mp)->m_quotainfo->qi_dqperchunk) | 28 | #define XFS_QM_DQPERBLK(mp) ((mp)->m_quotainfo->qi_dqperchunk) |
29 | 29 | ||
30 | #define XFS_ISLOCKED_INODE(ip) (ismrlocked(&(ip)->i_lock, \ | ||
31 | MR_UPDATE | MR_ACCESS) != 0) | ||
32 | #define XFS_ISLOCKED_INODE_EXCL(ip) (ismrlocked(&(ip)->i_lock, \ | ||
33 | MR_UPDATE) != 0) | ||
34 | |||
35 | #define XFS_DQ_IS_ADDEDTO_TRX(t, d) ((d)->q_transp == (t)) | 30 | #define XFS_DQ_IS_ADDEDTO_TRX(t, d) ((d)->q_transp == (t)) |
36 | 31 | ||
37 | #define XFS_QI_MPLRECLAIMS(mp) ((mp)->m_quotainfo->qi_dqreclaims) | 32 | #define XFS_QI_MPLRECLAIMS(mp) ((mp)->m_quotainfo->qi_dqreclaims) |
diff --git a/fs/xfs/quota/xfs_trans_dquot.c b/fs/xfs/quota/xfs_trans_dquot.c index f441f836ca8b..99611381e740 100644 --- a/fs/xfs/quota/xfs_trans_dquot.c +++ b/fs/xfs/quota/xfs_trans_dquot.c | |||
@@ -834,7 +834,7 @@ xfs_trans_reserve_quota_nblks( | |||
834 | ASSERT(ip->i_ino != mp->m_sb.sb_uquotino); | 834 | ASSERT(ip->i_ino != mp->m_sb.sb_uquotino); |
835 | ASSERT(ip->i_ino != mp->m_sb.sb_gquotino); | 835 | ASSERT(ip->i_ino != mp->m_sb.sb_gquotino); |
836 | 836 | ||
837 | ASSERT(XFS_ISLOCKED_INODE_EXCL(ip)); | 837 | ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); |
838 | ASSERT(XFS_IS_QUOTA_RUNNING(ip->i_mount)); | 838 | ASSERT(XFS_IS_QUOTA_RUNNING(ip->i_mount)); |
839 | ASSERT((flags & ~(XFS_QMOPT_FORCE_RES | XFS_QMOPT_ENOSPC)) == | 839 | ASSERT((flags & ~(XFS_QMOPT_FORCE_RES | XFS_QMOPT_ENOSPC)) == |
840 | XFS_TRANS_DQ_RES_RTBLKS || | 840 | XFS_TRANS_DQ_RES_RTBLKS || |