diff options
author | Christoph Hellwig <hch@lst.de> | 2009-06-08 09:33:32 -0400 |
---|---|---|
committer | Christoph Hellwig <hch@brick.lst.de> | 2009-06-08 09:33:32 -0400 |
commit | 7d095257e321214e4cf359abd131ba1f09c60cba (patch) | |
tree | 3f71e2650651616f8ba168b64a82ab48aedef14c /fs/xfs/xfs_bmap.c | |
parent | 0c5e1ce89f1eacc366ec421c0f5f681159479c28 (diff) |
xfs: kill xfs_qmops
Kill the quota ops function vector and replace it with direct calls or
stubs in the CONFIG_XFS_QUOTA=n case.
Make sure we check XFS_IS_QUOTA_RUNNING in the right spots. We can remove
the number of those checks because the XFS_TRANS_DQ_DIRTY flag can't be set
otherwise.
This brings us back closer to the way this code worked in IRIX and earlier
Linux versions, but we keep a lot of the more useful factoring of common
code.
Eventually we should also kill xfs_qm_bhv.c, but that's left for a later
patch.
Reduces the size of the source code by about 250 lines and the size of
XFS module by about 1.5 kilobytes with quotas enabled:
text data bss dec hex filename
615957 2960 3848 622765 980ad fs/xfs/xfs.o
617231 3152 3848 624231 98667 fs/xfs/xfs.o.old
Fallout:
- xfs_qm_dqattach is split into xfs_qm_dqattach_locked which expects
the inode locked and xfs_qm_dqattach which does the locking around it,
thus removing XFS_QMOPT_ILOCKED.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Eric Sandeen <sandeen@sandeen.net>
Diffstat (limited to 'fs/xfs/xfs_bmap.c')
-rw-r--r-- | fs/xfs/xfs_bmap.c | 33 |
1 files changed, 17 insertions, 16 deletions
diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c index ca7c6005a487..4b0f6efb046c 100644 --- a/fs/xfs/xfs_bmap.c +++ b/fs/xfs/xfs_bmap.c | |||
@@ -2691,7 +2691,7 @@ xfs_bmap_rtalloc( | |||
2691 | * Adjust the disk quota also. This was reserved | 2691 | * Adjust the disk quota also. This was reserved |
2692 | * earlier. | 2692 | * earlier. |
2693 | */ | 2693 | */ |
2694 | XFS_TRANS_MOD_DQUOT_BYINO(mp, ap->tp, ap->ip, | 2694 | xfs_trans_mod_dquot_byino(ap->tp, ap->ip, |
2695 | ap->wasdel ? XFS_TRANS_DQ_DELRTBCOUNT : | 2695 | ap->wasdel ? XFS_TRANS_DQ_DELRTBCOUNT : |
2696 | XFS_TRANS_DQ_RTBCOUNT, (long) ralen); | 2696 | XFS_TRANS_DQ_RTBCOUNT, (long) ralen); |
2697 | } else { | 2697 | } else { |
@@ -2995,7 +2995,7 @@ xfs_bmap_btalloc( | |||
2995 | * Adjust the disk quota also. This was reserved | 2995 | * Adjust the disk quota also. This was reserved |
2996 | * earlier. | 2996 | * earlier. |
2997 | */ | 2997 | */ |
2998 | XFS_TRANS_MOD_DQUOT_BYINO(mp, ap->tp, ap->ip, | 2998 | xfs_trans_mod_dquot_byino(ap->tp, ap->ip, |
2999 | ap->wasdel ? XFS_TRANS_DQ_DELBCOUNT : | 2999 | ap->wasdel ? XFS_TRANS_DQ_DELBCOUNT : |
3000 | XFS_TRANS_DQ_BCOUNT, | 3000 | XFS_TRANS_DQ_BCOUNT, |
3001 | (long) args.len); | 3001 | (long) args.len); |
@@ -3066,7 +3066,7 @@ xfs_bmap_btree_to_extents( | |||
3066 | return error; | 3066 | return error; |
3067 | xfs_bmap_add_free(cbno, 1, cur->bc_private.b.flist, mp); | 3067 | xfs_bmap_add_free(cbno, 1, cur->bc_private.b.flist, mp); |
3068 | ip->i_d.di_nblocks--; | 3068 | ip->i_d.di_nblocks--; |
3069 | XFS_TRANS_MOD_DQUOT_BYINO(mp, tp, ip, XFS_TRANS_DQ_BCOUNT, -1L); | 3069 | xfs_trans_mod_dquot_byino(tp, ip, XFS_TRANS_DQ_BCOUNT, -1L); |
3070 | xfs_trans_binval(tp, cbp); | 3070 | xfs_trans_binval(tp, cbp); |
3071 | if (cur->bc_bufs[0] == cbp) | 3071 | if (cur->bc_bufs[0] == cbp) |
3072 | cur->bc_bufs[0] = NULL; | 3072 | cur->bc_bufs[0] = NULL; |
@@ -3386,7 +3386,7 @@ xfs_bmap_del_extent( | |||
3386 | * Adjust quota data. | 3386 | * Adjust quota data. |
3387 | */ | 3387 | */ |
3388 | if (qfield) | 3388 | if (qfield) |
3389 | XFS_TRANS_MOD_DQUOT_BYINO(mp, tp, ip, qfield, (long)-nblks); | 3389 | xfs_trans_mod_dquot_byino(tp, ip, qfield, (long)-nblks); |
3390 | 3390 | ||
3391 | /* | 3391 | /* |
3392 | * Account for change in delayed indirect blocks. | 3392 | * Account for change in delayed indirect blocks. |
@@ -3523,7 +3523,7 @@ xfs_bmap_extents_to_btree( | |||
3523 | *firstblock = cur->bc_private.b.firstblock = args.fsbno; | 3523 | *firstblock = cur->bc_private.b.firstblock = args.fsbno; |
3524 | cur->bc_private.b.allocated++; | 3524 | cur->bc_private.b.allocated++; |
3525 | ip->i_d.di_nblocks++; | 3525 | ip->i_d.di_nblocks++; |
3526 | XFS_TRANS_MOD_DQUOT_BYINO(mp, tp, ip, XFS_TRANS_DQ_BCOUNT, 1L); | 3526 | xfs_trans_mod_dquot_byino(tp, ip, XFS_TRANS_DQ_BCOUNT, 1L); |
3527 | abp = xfs_btree_get_bufl(mp, tp, args.fsbno, 0); | 3527 | abp = xfs_btree_get_bufl(mp, tp, args.fsbno, 0); |
3528 | /* | 3528 | /* |
3529 | * Fill in the child block. | 3529 | * Fill in the child block. |
@@ -3690,7 +3690,7 @@ xfs_bmap_local_to_extents( | |||
3690 | XFS_BMAP_TRACE_POST_UPDATE("new", ip, 0, whichfork); | 3690 | XFS_BMAP_TRACE_POST_UPDATE("new", ip, 0, whichfork); |
3691 | XFS_IFORK_NEXT_SET(ip, whichfork, 1); | 3691 | XFS_IFORK_NEXT_SET(ip, whichfork, 1); |
3692 | ip->i_d.di_nblocks = 1; | 3692 | ip->i_d.di_nblocks = 1; |
3693 | XFS_TRANS_MOD_DQUOT_BYINO(args.mp, tp, ip, | 3693 | xfs_trans_mod_dquot_byino(tp, ip, |
3694 | XFS_TRANS_DQ_BCOUNT, 1L); | 3694 | XFS_TRANS_DQ_BCOUNT, 1L); |
3695 | flags |= xfs_ilog_fext(whichfork); | 3695 | flags |= xfs_ilog_fext(whichfork); |
3696 | } else { | 3696 | } else { |
@@ -4048,7 +4048,7 @@ xfs_bmap_add_attrfork( | |||
4048 | XFS_TRANS_PERM_LOG_RES, XFS_ADDAFORK_LOG_COUNT))) | 4048 | XFS_TRANS_PERM_LOG_RES, XFS_ADDAFORK_LOG_COUNT))) |
4049 | goto error0; | 4049 | goto error0; |
4050 | xfs_ilock(ip, XFS_ILOCK_EXCL); | 4050 | xfs_ilock(ip, XFS_ILOCK_EXCL); |
4051 | error = XFS_TRANS_RESERVE_QUOTA_NBLKS(mp, tp, ip, blks, 0, rsvd ? | 4051 | error = xfs_trans_reserve_quota_nblks(tp, ip, blks, 0, rsvd ? |
4052 | XFS_QMOPT_RES_REGBLKS | XFS_QMOPT_FORCE_RES : | 4052 | XFS_QMOPT_RES_REGBLKS | XFS_QMOPT_FORCE_RES : |
4053 | XFS_QMOPT_RES_REGBLKS); | 4053 | XFS_QMOPT_RES_REGBLKS); |
4054 | if (error) { | 4054 | if (error) { |
@@ -4983,10 +4983,11 @@ xfs_bmapi( | |||
4983 | * adjusted later. We return if we haven't | 4983 | * adjusted later. We return if we haven't |
4984 | * allocated blocks already inside this loop. | 4984 | * allocated blocks already inside this loop. |
4985 | */ | 4985 | */ |
4986 | if ((error = XFS_TRANS_RESERVE_QUOTA_NBLKS( | 4986 | error = xfs_trans_reserve_quota_nblks( |
4987 | mp, NULL, ip, (long)alen, 0, | 4987 | NULL, ip, (long)alen, 0, |
4988 | rt ? XFS_QMOPT_RES_RTBLKS : | 4988 | rt ? XFS_QMOPT_RES_RTBLKS : |
4989 | XFS_QMOPT_RES_REGBLKS))) { | 4989 | XFS_QMOPT_RES_REGBLKS); |
4990 | if (error) { | ||
4990 | if (n == 0) { | 4991 | if (n == 0) { |
4991 | *nmap = 0; | 4992 | *nmap = 0; |
4992 | ASSERT(cur == NULL); | 4993 | ASSERT(cur == NULL); |
@@ -5035,8 +5036,8 @@ xfs_bmapi( | |||
5035 | if (XFS_IS_QUOTA_ON(mp)) | 5036 | if (XFS_IS_QUOTA_ON(mp)) |
5036 | /* unreserve the blocks now */ | 5037 | /* unreserve the blocks now */ |
5037 | (void) | 5038 | (void) |
5038 | XFS_TRANS_UNRESERVE_QUOTA_NBLKS( | 5039 | xfs_trans_unreserve_quota_nblks( |
5039 | mp, NULL, ip, | 5040 | NULL, ip, |
5040 | (long)alen, 0, rt ? | 5041 | (long)alen, 0, rt ? |
5041 | XFS_QMOPT_RES_RTBLKS : | 5042 | XFS_QMOPT_RES_RTBLKS : |
5042 | XFS_QMOPT_RES_REGBLKS); | 5043 | XFS_QMOPT_RES_REGBLKS); |
@@ -5691,14 +5692,14 @@ xfs_bunmapi( | |||
5691 | do_div(rtexts, mp->m_sb.sb_rextsize); | 5692 | do_div(rtexts, mp->m_sb.sb_rextsize); |
5692 | xfs_mod_incore_sb(mp, XFS_SBS_FREXTENTS, | 5693 | xfs_mod_incore_sb(mp, XFS_SBS_FREXTENTS, |
5693 | (int64_t)rtexts, rsvd); | 5694 | (int64_t)rtexts, rsvd); |
5694 | (void)XFS_TRANS_RESERVE_QUOTA_NBLKS(mp, | 5695 | (void)xfs_trans_reserve_quota_nblks(NULL, |
5695 | NULL, ip, -((long)del.br_blockcount), 0, | 5696 | ip, -((long)del.br_blockcount), 0, |
5696 | XFS_QMOPT_RES_RTBLKS); | 5697 | XFS_QMOPT_RES_RTBLKS); |
5697 | } else { | 5698 | } else { |
5698 | xfs_mod_incore_sb(mp, XFS_SBS_FDBLOCKS, | 5699 | xfs_mod_incore_sb(mp, XFS_SBS_FDBLOCKS, |
5699 | (int64_t)del.br_blockcount, rsvd); | 5700 | (int64_t)del.br_blockcount, rsvd); |
5700 | (void)XFS_TRANS_RESERVE_QUOTA_NBLKS(mp, | 5701 | (void)xfs_trans_reserve_quota_nblks(NULL, |
5701 | NULL, ip, -((long)del.br_blockcount), 0, | 5702 | ip, -((long)del.br_blockcount), 0, |
5702 | XFS_QMOPT_RES_REGBLKS); | 5703 | XFS_QMOPT_RES_REGBLKS); |
5703 | } | 5704 | } |
5704 | ip->i_delayed_blks -= del.br_blockcount; | 5705 | ip->i_delayed_blks -= del.br_blockcount; |