diff options
Diffstat (limited to 'fs/xfs/linux-2.6/xfs_ioctl.c')
| -rw-r--r-- | fs/xfs/linux-2.6/xfs_ioctl.c | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/fs/xfs/linux-2.6/xfs_ioctl.c b/fs/xfs/linux-2.6/xfs_ioctl.c index 34eaab608e6e..5bb523d7f37e 100644 --- a/fs/xfs/linux-2.6/xfs_ioctl.c +++ b/fs/xfs/linux-2.6/xfs_ioctl.c | |||
| @@ -41,7 +41,6 @@ | |||
| 41 | #include "xfs_itable.h" | 41 | #include "xfs_itable.h" |
| 42 | #include "xfs_error.h" | 42 | #include "xfs_error.h" |
| 43 | #include "xfs_rw.h" | 43 | #include "xfs_rw.h" |
| 44 | #include "xfs_acl.h" | ||
| 45 | #include "xfs_attr.h" | 44 | #include "xfs_attr.h" |
| 46 | #include "xfs_bmap.h" | 45 | #include "xfs_bmap.h" |
| 47 | #include "xfs_buf_item.h" | 46 | #include "xfs_buf_item.h" |
| @@ -899,7 +898,8 @@ xfs_ioctl_setattr( | |||
| 899 | struct xfs_mount *mp = ip->i_mount; | 898 | struct xfs_mount *mp = ip->i_mount; |
| 900 | struct xfs_trans *tp; | 899 | struct xfs_trans *tp; |
| 901 | unsigned int lock_flags = 0; | 900 | unsigned int lock_flags = 0; |
| 902 | struct xfs_dquot *udqp = NULL, *gdqp = NULL; | 901 | struct xfs_dquot *udqp = NULL; |
| 902 | struct xfs_dquot *gdqp = NULL; | ||
| 903 | struct xfs_dquot *olddquot = NULL; | 903 | struct xfs_dquot *olddquot = NULL; |
| 904 | int code; | 904 | int code; |
| 905 | 905 | ||
| @@ -919,7 +919,7 @@ xfs_ioctl_setattr( | |||
| 919 | * because the i_*dquot fields will get updated anyway. | 919 | * because the i_*dquot fields will get updated anyway. |
| 920 | */ | 920 | */ |
| 921 | if (XFS_IS_QUOTA_ON(mp) && (mask & FSX_PROJID)) { | 921 | if (XFS_IS_QUOTA_ON(mp) && (mask & FSX_PROJID)) { |
| 922 | code = XFS_QM_DQVOPALLOC(mp, ip, ip->i_d.di_uid, | 922 | code = xfs_qm_vop_dqalloc(ip, ip->i_d.di_uid, |
| 923 | ip->i_d.di_gid, fa->fsx_projid, | 923 | ip->i_d.di_gid, fa->fsx_projid, |
| 924 | XFS_QMOPT_PQUOTA, &udqp, &gdqp); | 924 | XFS_QMOPT_PQUOTA, &udqp, &gdqp); |
| 925 | if (code) | 925 | if (code) |
| @@ -954,10 +954,11 @@ xfs_ioctl_setattr( | |||
| 954 | * Do a quota reservation only if projid is actually going to change. | 954 | * Do a quota reservation only if projid is actually going to change. |
| 955 | */ | 955 | */ |
| 956 | if (mask & FSX_PROJID) { | 956 | if (mask & FSX_PROJID) { |
| 957 | if (XFS_IS_PQUOTA_ON(mp) && | 957 | if (XFS_IS_QUOTA_RUNNING(mp) && |
| 958 | XFS_IS_PQUOTA_ON(mp) && | ||
| 958 | ip->i_d.di_projid != fa->fsx_projid) { | 959 | ip->i_d.di_projid != fa->fsx_projid) { |
| 959 | ASSERT(tp); | 960 | ASSERT(tp); |
| 960 | code = XFS_QM_DQVOPCHOWNRESV(mp, tp, ip, udqp, gdqp, | 961 | code = xfs_qm_vop_chown_reserve(tp, ip, udqp, gdqp, |
| 961 | capable(CAP_FOWNER) ? | 962 | capable(CAP_FOWNER) ? |
| 962 | XFS_QMOPT_FORCE_RES : 0); | 963 | XFS_QMOPT_FORCE_RES : 0); |
| 963 | if (code) /* out of quota */ | 964 | if (code) /* out of quota */ |
| @@ -1059,8 +1060,8 @@ xfs_ioctl_setattr( | |||
| 1059 | * in the transaction. | 1060 | * in the transaction. |
| 1060 | */ | 1061 | */ |
| 1061 | if (ip->i_d.di_projid != fa->fsx_projid) { | 1062 | if (ip->i_d.di_projid != fa->fsx_projid) { |
| 1062 | if (XFS_IS_PQUOTA_ON(mp)) { | 1063 | if (XFS_IS_QUOTA_RUNNING(mp) && XFS_IS_PQUOTA_ON(mp)) { |
| 1063 | olddquot = XFS_QM_DQVOPCHOWN(mp, tp, ip, | 1064 | olddquot = xfs_qm_vop_chown(tp, ip, |
| 1064 | &ip->i_gdquot, gdqp); | 1065 | &ip->i_gdquot, gdqp); |
| 1065 | } | 1066 | } |
| 1066 | ip->i_d.di_projid = fa->fsx_projid; | 1067 | ip->i_d.di_projid = fa->fsx_projid; |
| @@ -1106,9 +1107,9 @@ xfs_ioctl_setattr( | |||
| 1106 | /* | 1107 | /* |
| 1107 | * Release any dquot(s) the inode had kept before chown. | 1108 | * Release any dquot(s) the inode had kept before chown. |
| 1108 | */ | 1109 | */ |
| 1109 | XFS_QM_DQRELE(mp, olddquot); | 1110 | xfs_qm_dqrele(olddquot); |
| 1110 | XFS_QM_DQRELE(mp, udqp); | 1111 | xfs_qm_dqrele(udqp); |
| 1111 | XFS_QM_DQRELE(mp, gdqp); | 1112 | xfs_qm_dqrele(gdqp); |
| 1112 | 1113 | ||
| 1113 | if (code) | 1114 | if (code) |
| 1114 | return code; | 1115 | return code; |
| @@ -1122,8 +1123,8 @@ xfs_ioctl_setattr( | |||
| 1122 | return 0; | 1123 | return 0; |
| 1123 | 1124 | ||
| 1124 | error_return: | 1125 | error_return: |
| 1125 | XFS_QM_DQRELE(mp, udqp); | 1126 | xfs_qm_dqrele(udqp); |
| 1126 | XFS_QM_DQRELE(mp, gdqp); | 1127 | xfs_qm_dqrele(gdqp); |
| 1127 | xfs_trans_cancel(tp, 0); | 1128 | xfs_trans_cancel(tp, 0); |
| 1128 | if (lock_flags) | 1129 | if (lock_flags) |
| 1129 | xfs_iunlock(ip, lock_flags); | 1130 | xfs_iunlock(ip, lock_flags); |
