diff options
author | Felix Blyakher <felixb@sgi.com> | 2009-06-11 17:56:49 -0400 |
---|---|---|
committer | Felix Blyakher <felixb@sgi.com> | 2009-06-11 17:56:49 -0400 |
commit | 35fd035968de4f674b9d62ee7b1d80ab7a50c384 (patch) | |
tree | 53a936ecdf8e9c59735fa4e7794ccb503b06d5d5 /fs/xfs/quota/xfs_trans_dquot.c | |
parent | 4e73e0eb633f8a1b5cbf20e7f42c6dbfec1d1ca7 (diff) | |
parent | ef14f0c1578dce4b688726eb2603e50b62d6665a (diff) |
Merge branch 'master' of git://git.kernel.org/pub/scm/fs/xfs/xfs
Diffstat (limited to 'fs/xfs/quota/xfs_trans_dquot.c')
-rw-r--r-- | fs/xfs/quota/xfs_trans_dquot.c | 66 |
1 files changed, 25 insertions, 41 deletions
diff --git a/fs/xfs/quota/xfs_trans_dquot.c b/fs/xfs/quota/xfs_trans_dquot.c index 447173bcf96d..97ac9640be98 100644 --- a/fs/xfs/quota/xfs_trans_dquot.c +++ b/fs/xfs/quota/xfs_trans_dquot.c | |||
@@ -42,7 +42,6 @@ | |||
42 | #include "xfs_rtalloc.h" | 42 | #include "xfs_rtalloc.h" |
43 | #include "xfs_error.h" | 43 | #include "xfs_error.h" |
44 | #include "xfs_rw.h" | 44 | #include "xfs_rw.h" |
45 | #include "xfs_acl.h" | ||
46 | #include "xfs_attr.h" | 45 | #include "xfs_attr.h" |
47 | #include "xfs_buf_item.h" | 46 | #include "xfs_buf_item.h" |
48 | #include "xfs_trans_priv.h" | 47 | #include "xfs_trans_priv.h" |
@@ -111,7 +110,7 @@ xfs_trans_log_dquot( | |||
111 | * Carry forward whatever is left of the quota blk reservation to | 110 | * Carry forward whatever is left of the quota blk reservation to |
112 | * the spanky new transaction | 111 | * the spanky new transaction |
113 | */ | 112 | */ |
114 | STATIC void | 113 | void |
115 | xfs_trans_dup_dqinfo( | 114 | xfs_trans_dup_dqinfo( |
116 | xfs_trans_t *otp, | 115 | xfs_trans_t *otp, |
117 | xfs_trans_t *ntp) | 116 | xfs_trans_t *ntp) |
@@ -167,19 +166,17 @@ xfs_trans_dup_dqinfo( | |||
167 | /* | 166 | /* |
168 | * Wrap around mod_dquot to account for both user and group quotas. | 167 | * Wrap around mod_dquot to account for both user and group quotas. |
169 | */ | 168 | */ |
170 | STATIC void | 169 | void |
171 | xfs_trans_mod_dquot_byino( | 170 | xfs_trans_mod_dquot_byino( |
172 | xfs_trans_t *tp, | 171 | xfs_trans_t *tp, |
173 | xfs_inode_t *ip, | 172 | xfs_inode_t *ip, |
174 | uint field, | 173 | uint field, |
175 | long delta) | 174 | long delta) |
176 | { | 175 | { |
177 | xfs_mount_t *mp; | 176 | xfs_mount_t *mp = tp->t_mountp; |
178 | |||
179 | ASSERT(tp); | ||
180 | mp = tp->t_mountp; | ||
181 | 177 | ||
182 | if (!XFS_IS_QUOTA_ON(mp) || | 178 | if (!XFS_IS_QUOTA_RUNNING(mp) || |
179 | !XFS_IS_QUOTA_ON(mp) || | ||
183 | ip->i_ino == mp->m_sb.sb_uquotino || | 180 | ip->i_ino == mp->m_sb.sb_uquotino || |
184 | ip->i_ino == mp->m_sb.sb_gquotino) | 181 | ip->i_ino == mp->m_sb.sb_gquotino) |
185 | return; | 182 | return; |
@@ -229,6 +226,7 @@ xfs_trans_mod_dquot( | |||
229 | xfs_dqtrx_t *qtrx; | 226 | xfs_dqtrx_t *qtrx; |
230 | 227 | ||
231 | ASSERT(tp); | 228 | ASSERT(tp); |
229 | ASSERT(XFS_IS_QUOTA_RUNNING(tp->t_mountp)); | ||
232 | qtrx = NULL; | 230 | qtrx = NULL; |
233 | 231 | ||
234 | if (tp->t_dqinfo == NULL) | 232 | if (tp->t_dqinfo == NULL) |
@@ -346,7 +344,7 @@ xfs_trans_dqlockedjoin( | |||
346 | * Unreserve just the reservations done by this transaction. | 344 | * Unreserve just the reservations done by this transaction. |
347 | * dquot is still left locked at exit. | 345 | * dquot is still left locked at exit. |
348 | */ | 346 | */ |
349 | STATIC void | 347 | void |
350 | xfs_trans_apply_dquot_deltas( | 348 | xfs_trans_apply_dquot_deltas( |
351 | xfs_trans_t *tp) | 349 | xfs_trans_t *tp) |
352 | { | 350 | { |
@@ -357,7 +355,7 @@ xfs_trans_apply_dquot_deltas( | |||
357 | long totalbdelta; | 355 | long totalbdelta; |
358 | long totalrtbdelta; | 356 | long totalrtbdelta; |
359 | 357 | ||
360 | if (! (tp->t_flags & XFS_TRANS_DQ_DIRTY)) | 358 | if (!(tp->t_flags & XFS_TRANS_DQ_DIRTY)) |
361 | return; | 359 | return; |
362 | 360 | ||
363 | ASSERT(tp->t_dqinfo); | 361 | ASSERT(tp->t_dqinfo); |
@@ -531,7 +529,7 @@ xfs_trans_apply_dquot_deltas( | |||
531 | * we simply throw those away, since that's the expected behavior | 529 | * we simply throw those away, since that's the expected behavior |
532 | * when a transaction is curtailed without a commit. | 530 | * when a transaction is curtailed without a commit. |
533 | */ | 531 | */ |
534 | STATIC void | 532 | void |
535 | xfs_trans_unreserve_and_mod_dquots( | 533 | xfs_trans_unreserve_and_mod_dquots( |
536 | xfs_trans_t *tp) | 534 | xfs_trans_t *tp) |
537 | { | 535 | { |
@@ -768,7 +766,7 @@ xfs_trans_reserve_quota_bydquots( | |||
768 | { | 766 | { |
769 | int resvd = 0, error; | 767 | int resvd = 0, error; |
770 | 768 | ||
771 | if (!XFS_IS_QUOTA_ON(mp)) | 769 | if (!XFS_IS_QUOTA_RUNNING(mp) || !XFS_IS_QUOTA_ON(mp)) |
772 | return 0; | 770 | return 0; |
773 | 771 | ||
774 | if (tp && tp->t_dqinfo == NULL) | 772 | if (tp && tp->t_dqinfo == NULL) |
@@ -811,18 +809,17 @@ xfs_trans_reserve_quota_bydquots( | |||
811 | * This doesn't change the actual usage, just the reservation. | 809 | * This doesn't change the actual usage, just the reservation. |
812 | * The inode sent in is locked. | 810 | * The inode sent in is locked. |
813 | */ | 811 | */ |
814 | STATIC int | 812 | int |
815 | xfs_trans_reserve_quota_nblks( | 813 | xfs_trans_reserve_quota_nblks( |
816 | xfs_trans_t *tp, | 814 | struct xfs_trans *tp, |
817 | xfs_mount_t *mp, | 815 | struct xfs_inode *ip, |
818 | xfs_inode_t *ip, | 816 | long nblks, |
819 | long nblks, | 817 | long ninos, |
820 | long ninos, | 818 | uint flags) |
821 | uint flags) | ||
822 | { | 819 | { |
823 | int error; | 820 | struct xfs_mount *mp = ip->i_mount; |
824 | 821 | ||
825 | if (!XFS_IS_QUOTA_ON(mp)) | 822 | if (!XFS_IS_QUOTA_RUNNING(mp) || !XFS_IS_QUOTA_ON(mp)) |
826 | return 0; | 823 | return 0; |
827 | if (XFS_IS_PQUOTA_ON(mp)) | 824 | if (XFS_IS_PQUOTA_ON(mp)) |
828 | flags |= XFS_QMOPT_ENOSPC; | 825 | flags |= XFS_QMOPT_ENOSPC; |
@@ -831,7 +828,6 @@ xfs_trans_reserve_quota_nblks( | |||
831 | ASSERT(ip->i_ino != mp->m_sb.sb_gquotino); | 828 | ASSERT(ip->i_ino != mp->m_sb.sb_gquotino); |
832 | 829 | ||
833 | ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); | 830 | ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); |
834 | ASSERT(XFS_IS_QUOTA_RUNNING(ip->i_mount)); | ||
835 | ASSERT((flags & ~(XFS_QMOPT_FORCE_RES | XFS_QMOPT_ENOSPC)) == | 831 | ASSERT((flags & ~(XFS_QMOPT_FORCE_RES | XFS_QMOPT_ENOSPC)) == |
836 | XFS_TRANS_DQ_RES_RTBLKS || | 832 | XFS_TRANS_DQ_RES_RTBLKS || |
837 | (flags & ~(XFS_QMOPT_FORCE_RES | XFS_QMOPT_ENOSPC)) == | 833 | (flags & ~(XFS_QMOPT_FORCE_RES | XFS_QMOPT_ENOSPC)) == |
@@ -840,11 +836,9 @@ xfs_trans_reserve_quota_nblks( | |||
840 | /* | 836 | /* |
841 | * Reserve nblks against these dquots, with trans as the mediator. | 837 | * Reserve nblks against these dquots, with trans as the mediator. |
842 | */ | 838 | */ |
843 | error = xfs_trans_reserve_quota_bydquots(tp, mp, | 839 | return xfs_trans_reserve_quota_bydquots(tp, mp, |
844 | ip->i_udquot, ip->i_gdquot, | 840 | ip->i_udquot, ip->i_gdquot, |
845 | nblks, ninos, | 841 | nblks, ninos, flags); |
846 | flags); | ||
847 | return error; | ||
848 | } | 842 | } |
849 | 843 | ||
850 | /* | 844 | /* |
@@ -895,25 +889,15 @@ STATIC void | |||
895 | xfs_trans_alloc_dqinfo( | 889 | xfs_trans_alloc_dqinfo( |
896 | xfs_trans_t *tp) | 890 | xfs_trans_t *tp) |
897 | { | 891 | { |
898 | (tp)->t_dqinfo = kmem_zone_zalloc(xfs_Gqm->qm_dqtrxzone, KM_SLEEP); | 892 | tp->t_dqinfo = kmem_zone_zalloc(xfs_Gqm->qm_dqtrxzone, KM_SLEEP); |
899 | } | 893 | } |
900 | 894 | ||
901 | STATIC void | 895 | void |
902 | xfs_trans_free_dqinfo( | 896 | xfs_trans_free_dqinfo( |
903 | xfs_trans_t *tp) | 897 | xfs_trans_t *tp) |
904 | { | 898 | { |
905 | if (!tp->t_dqinfo) | 899 | if (!tp->t_dqinfo) |
906 | return; | 900 | return; |
907 | kmem_zone_free(xfs_Gqm->qm_dqtrxzone, (tp)->t_dqinfo); | 901 | kmem_zone_free(xfs_Gqm->qm_dqtrxzone, tp->t_dqinfo); |
908 | (tp)->t_dqinfo = NULL; | 902 | tp->t_dqinfo = NULL; |
909 | } | 903 | } |
910 | |||
911 | xfs_dqtrxops_t xfs_trans_dquot_ops = { | ||
912 | .qo_dup_dqinfo = xfs_trans_dup_dqinfo, | ||
913 | .qo_free_dqinfo = xfs_trans_free_dqinfo, | ||
914 | .qo_mod_dquot_byino = xfs_trans_mod_dquot_byino, | ||
915 | .qo_apply_dquot_deltas = xfs_trans_apply_dquot_deltas, | ||
916 | .qo_reserve_quota_nblks = xfs_trans_reserve_quota_nblks, | ||
917 | .qo_reserve_quota_bydquots = xfs_trans_reserve_quota_bydquots, | ||
918 | .qo_unreserve_and_mod_dquots = xfs_trans_unreserve_and_mod_dquots, | ||
919 | }; | ||