|
@@ -605,7 +605,7 @@ xfs_trans_dqresv(
|
|
|
time_t timer;
|
|
|
xfs_qwarncnt_t warns;
|
|
|
xfs_qwarncnt_t warnlimit;
|
|
|
- xfs_qcnt_t count;
|
|
|
+ xfs_qcnt_t total_count;
|
|
|
xfs_qcnt_t *resbcountp;
|
|
|
xfs_quotainfo_t *q = mp->m_quotainfo;
|
|
|
|
|
@@ -648,13 +648,12 @@ xfs_trans_dqresv(
|
|
|
* hardlimit or exceed the timelimit if we allocate
|
|
|
* nblks.
|
|
|
*/
|
|
|
- if (hardlimit > 0ULL &&
|
|
|
- hardlimit < nblks + *resbcountp) {
|
|
|
+ total_count = *resbcountp + nblks;
|
|
|
+ if (hardlimit && total_count > hardlimit) {
|
|
|
xfs_quota_warn(mp, dqp, QUOTA_NL_BHARDWARN);
|
|
|
goto error_return;
|
|
|
}
|
|
|
- if (softlimit > 0ULL &&
|
|
|
- softlimit < nblks + *resbcountp) {
|
|
|
+ if (softlimit && total_count > softlimit) {
|
|
|
if ((timer != 0 && get_seconds() > timer) ||
|
|
|
(warns != 0 && warns >= warnlimit)) {
|
|
|
xfs_quota_warn(mp, dqp,
|
|
@@ -666,7 +665,7 @@ xfs_trans_dqresv(
|
|
|
}
|
|
|
}
|
|
|
if (ninos > 0) {
|
|
|
- count = be64_to_cpu(dqp->q_core.d_icount);
|
|
|
+ total_count = be64_to_cpu(dqp->q_core.d_icount) + ninos;
|
|
|
timer = be32_to_cpu(dqp->q_core.d_itimer);
|
|
|
warns = be16_to_cpu(dqp->q_core.d_iwarns);
|
|
|
warnlimit = dqp->q_mount->m_quotainfo->qi_iwarnlimit;
|
|
@@ -677,13 +676,11 @@ xfs_trans_dqresv(
|
|
|
if (!softlimit)
|
|
|
softlimit = q->qi_isoftlimit;
|
|
|
|
|
|
- if (hardlimit > 0ULL &&
|
|
|
- hardlimit < ninos + count) {
|
|
|
+ if (hardlimit && total_count > hardlimit) {
|
|
|
xfs_quota_warn(mp, dqp, QUOTA_NL_IHARDWARN);
|
|
|
goto error_return;
|
|
|
}
|
|
|
- if (softlimit > 0ULL &&
|
|
|
- softlimit < ninos + count) {
|
|
|
+ if (softlimit && total_count > softlimit) {
|
|
|
if ((timer != 0 && get_seconds() > timer) ||
|
|
|
(warns != 0 && warns >= warnlimit)) {
|
|
|
xfs_quota_warn(mp, dqp,
|