Commit bb4c7e9a authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs

A fix from Jesper Juhl removes an assignment in an ASSERT when a compare
is intended.  Two fixes from Mitsuo Hayasaka address off-by-ones in XFS
quota enforcement.

* 'for-linus' of git://oss.sgi.com/xfs/xfs:
  xfs: make inode quota check more general
  xfs: change available ranges of softlimit and hardlimit in quota check
  XFS: xfs_trans_add_item() - don't assign in ASSERT() when compare is intended
parents 73c8e679 c922bbc8
...@@ -139,10 +139,10 @@ xfs_qm_adjust_dqtimers( ...@@ -139,10 +139,10 @@ xfs_qm_adjust_dqtimers(
if (!d->d_btimer) { if (!d->d_btimer) {
if ((d->d_blk_softlimit && if ((d->d_blk_softlimit &&
(be64_to_cpu(d->d_bcount) >= (be64_to_cpu(d->d_bcount) >
be64_to_cpu(d->d_blk_softlimit))) || be64_to_cpu(d->d_blk_softlimit))) ||
(d->d_blk_hardlimit && (d->d_blk_hardlimit &&
(be64_to_cpu(d->d_bcount) >= (be64_to_cpu(d->d_bcount) >
be64_to_cpu(d->d_blk_hardlimit)))) { be64_to_cpu(d->d_blk_hardlimit)))) {
d->d_btimer = cpu_to_be32(get_seconds() + d->d_btimer = cpu_to_be32(get_seconds() +
mp->m_quotainfo->qi_btimelimit); mp->m_quotainfo->qi_btimelimit);
...@@ -151,10 +151,10 @@ xfs_qm_adjust_dqtimers( ...@@ -151,10 +151,10 @@ xfs_qm_adjust_dqtimers(
} }
} else { } else {
if ((!d->d_blk_softlimit || if ((!d->d_blk_softlimit ||
(be64_to_cpu(d->d_bcount) < (be64_to_cpu(d->d_bcount) <=
be64_to_cpu(d->d_blk_softlimit))) && be64_to_cpu(d->d_blk_softlimit))) &&
(!d->d_blk_hardlimit || (!d->d_blk_hardlimit ||
(be64_to_cpu(d->d_bcount) < (be64_to_cpu(d->d_bcount) <=
be64_to_cpu(d->d_blk_hardlimit)))) { be64_to_cpu(d->d_blk_hardlimit)))) {
d->d_btimer = 0; d->d_btimer = 0;
} }
...@@ -162,10 +162,10 @@ xfs_qm_adjust_dqtimers( ...@@ -162,10 +162,10 @@ xfs_qm_adjust_dqtimers(
if (!d->d_itimer) { if (!d->d_itimer) {
if ((d->d_ino_softlimit && if ((d->d_ino_softlimit &&
(be64_to_cpu(d->d_icount) >= (be64_to_cpu(d->d_icount) >
be64_to_cpu(d->d_ino_softlimit))) || be64_to_cpu(d->d_ino_softlimit))) ||
(d->d_ino_hardlimit && (d->d_ino_hardlimit &&
(be64_to_cpu(d->d_icount) >= (be64_to_cpu(d->d_icount) >
be64_to_cpu(d->d_ino_hardlimit)))) { be64_to_cpu(d->d_ino_hardlimit)))) {
d->d_itimer = cpu_to_be32(get_seconds() + d->d_itimer = cpu_to_be32(get_seconds() +
mp->m_quotainfo->qi_itimelimit); mp->m_quotainfo->qi_itimelimit);
...@@ -174,10 +174,10 @@ xfs_qm_adjust_dqtimers( ...@@ -174,10 +174,10 @@ xfs_qm_adjust_dqtimers(
} }
} else { } else {
if ((!d->d_ino_softlimit || if ((!d->d_ino_softlimit ||
(be64_to_cpu(d->d_icount) < (be64_to_cpu(d->d_icount) <=
be64_to_cpu(d->d_ino_softlimit))) && be64_to_cpu(d->d_ino_softlimit))) &&
(!d->d_ino_hardlimit || (!d->d_ino_hardlimit ||
(be64_to_cpu(d->d_icount) < (be64_to_cpu(d->d_icount) <=
be64_to_cpu(d->d_ino_hardlimit)))) { be64_to_cpu(d->d_ino_hardlimit)))) {
d->d_itimer = 0; d->d_itimer = 0;
} }
...@@ -185,10 +185,10 @@ xfs_qm_adjust_dqtimers( ...@@ -185,10 +185,10 @@ xfs_qm_adjust_dqtimers(
if (!d->d_rtbtimer) { if (!d->d_rtbtimer) {
if ((d->d_rtb_softlimit && if ((d->d_rtb_softlimit &&
(be64_to_cpu(d->d_rtbcount) >= (be64_to_cpu(d->d_rtbcount) >
be64_to_cpu(d->d_rtb_softlimit))) || be64_to_cpu(d->d_rtb_softlimit))) ||
(d->d_rtb_hardlimit && (d->d_rtb_hardlimit &&
(be64_to_cpu(d->d_rtbcount) >= (be64_to_cpu(d->d_rtbcount) >
be64_to_cpu(d->d_rtb_hardlimit)))) { be64_to_cpu(d->d_rtb_hardlimit)))) {
d->d_rtbtimer = cpu_to_be32(get_seconds() + d->d_rtbtimer = cpu_to_be32(get_seconds() +
mp->m_quotainfo->qi_rtbtimelimit); mp->m_quotainfo->qi_rtbtimelimit);
...@@ -197,10 +197,10 @@ xfs_qm_adjust_dqtimers( ...@@ -197,10 +197,10 @@ xfs_qm_adjust_dqtimers(
} }
} else { } else {
if ((!d->d_rtb_softlimit || if ((!d->d_rtb_softlimit ||
(be64_to_cpu(d->d_rtbcount) < (be64_to_cpu(d->d_rtbcount) <=
be64_to_cpu(d->d_rtb_softlimit))) && be64_to_cpu(d->d_rtb_softlimit))) &&
(!d->d_rtb_hardlimit || (!d->d_rtb_hardlimit ||
(be64_to_cpu(d->d_rtbcount) < (be64_to_cpu(d->d_rtbcount) <=
be64_to_cpu(d->d_rtb_hardlimit)))) { be64_to_cpu(d->d_rtb_hardlimit)))) {
d->d_rtbtimer = 0; d->d_rtbtimer = 0;
} }
......
...@@ -1981,7 +1981,7 @@ xfs_qm_dqcheck( ...@@ -1981,7 +1981,7 @@ xfs_qm_dqcheck(
if (!errs && ddq->d_id) { if (!errs && ddq->d_id) {
if (ddq->d_blk_softlimit && if (ddq->d_blk_softlimit &&
be64_to_cpu(ddq->d_bcount) >= be64_to_cpu(ddq->d_bcount) >
be64_to_cpu(ddq->d_blk_softlimit)) { be64_to_cpu(ddq->d_blk_softlimit)) {
if (!ddq->d_btimer) { if (!ddq->d_btimer) {
if (flags & XFS_QMOPT_DOWARN) if (flags & XFS_QMOPT_DOWARN)
...@@ -1992,7 +1992,7 @@ xfs_qm_dqcheck( ...@@ -1992,7 +1992,7 @@ xfs_qm_dqcheck(
} }
} }
if (ddq->d_ino_softlimit && if (ddq->d_ino_softlimit &&
be64_to_cpu(ddq->d_icount) >= be64_to_cpu(ddq->d_icount) >
be64_to_cpu(ddq->d_ino_softlimit)) { be64_to_cpu(ddq->d_ino_softlimit)) {
if (!ddq->d_itimer) { if (!ddq->d_itimer) {
if (flags & XFS_QMOPT_DOWARN) if (flags & XFS_QMOPT_DOWARN)
...@@ -2003,7 +2003,7 @@ xfs_qm_dqcheck( ...@@ -2003,7 +2003,7 @@ xfs_qm_dqcheck(
} }
} }
if (ddq->d_rtb_softlimit && if (ddq->d_rtb_softlimit &&
be64_to_cpu(ddq->d_rtbcount) >= be64_to_cpu(ddq->d_rtbcount) >
be64_to_cpu(ddq->d_rtb_softlimit)) { be64_to_cpu(ddq->d_rtb_softlimit)) {
if (!ddq->d_rtbtimer) { if (!ddq->d_rtbtimer) {
if (flags & XFS_QMOPT_DOWARN) if (flags & XFS_QMOPT_DOWARN)
......
...@@ -813,11 +813,11 @@ xfs_qm_export_dquot( ...@@ -813,11 +813,11 @@ xfs_qm_export_dquot(
(XFS_IS_OQUOTA_ENFORCED(mp) && (XFS_IS_OQUOTA_ENFORCED(mp) &&
(dst->d_flags & (FS_PROJ_QUOTA | FS_GROUP_QUOTA)))) && (dst->d_flags & (FS_PROJ_QUOTA | FS_GROUP_QUOTA)))) &&
dst->d_id != 0) { dst->d_id != 0) {
if (((int) dst->d_bcount >= (int) dst->d_blk_softlimit) && if (((int) dst->d_bcount > (int) dst->d_blk_softlimit) &&
(dst->d_blk_softlimit > 0)) { (dst->d_blk_softlimit > 0)) {
ASSERT(dst->d_btimer != 0); ASSERT(dst->d_btimer != 0);
} }
if (((int) dst->d_icount >= (int) dst->d_ino_softlimit) && if (((int) dst->d_icount > (int) dst->d_ino_softlimit) &&
(dst->d_ino_softlimit > 0)) { (dst->d_ino_softlimit > 0)) {
ASSERT(dst->d_itimer != 0); ASSERT(dst->d_itimer != 0);
} }
......
...@@ -1151,8 +1151,8 @@ xfs_trans_add_item( ...@@ -1151,8 +1151,8 @@ xfs_trans_add_item(
{ {
struct xfs_log_item_desc *lidp; struct xfs_log_item_desc *lidp;
ASSERT(lip->li_mountp = tp->t_mountp); ASSERT(lip->li_mountp == tp->t_mountp);
ASSERT(lip->li_ailp = tp->t_mountp->m_ail); ASSERT(lip->li_ailp == tp->t_mountp->m_ail);
lidp = kmem_zone_zalloc(xfs_log_item_desc_zone, KM_SLEEP | KM_NOFS); lidp = kmem_zone_zalloc(xfs_log_item_desc_zone, KM_SLEEP | KM_NOFS);
......
...@@ -649,12 +649,12 @@ xfs_trans_dqresv( ...@@ -649,12 +649,12 @@ xfs_trans_dqresv(
* nblks. * nblks.
*/ */
if (hardlimit > 0ULL && if (hardlimit > 0ULL &&
hardlimit <= nblks + *resbcountp) { hardlimit < nblks + *resbcountp) {
xfs_quota_warn(mp, dqp, QUOTA_NL_BHARDWARN); xfs_quota_warn(mp, dqp, QUOTA_NL_BHARDWARN);
goto error_return; goto error_return;
} }
if (softlimit > 0ULL && if (softlimit > 0ULL &&
softlimit <= nblks + *resbcountp) { softlimit < nblks + *resbcountp) {
if ((timer != 0 && get_seconds() > timer) || if ((timer != 0 && get_seconds() > timer) ||
(warns != 0 && warns >= warnlimit)) { (warns != 0 && warns >= warnlimit)) {
xfs_quota_warn(mp, dqp, xfs_quota_warn(mp, dqp,
...@@ -677,11 +677,13 @@ xfs_trans_dqresv( ...@@ -677,11 +677,13 @@ xfs_trans_dqresv(
if (!softlimit) if (!softlimit)
softlimit = q->qi_isoftlimit; softlimit = q->qi_isoftlimit;
if (hardlimit > 0ULL && count >= hardlimit) { if (hardlimit > 0ULL &&
hardlimit < ninos + count) {
xfs_quota_warn(mp, dqp, QUOTA_NL_IHARDWARN); xfs_quota_warn(mp, dqp, QUOTA_NL_IHARDWARN);
goto error_return; goto error_return;
} }
if (softlimit > 0ULL && count >= softlimit) { if (softlimit > 0ULL &&
softlimit < ninos + count) {
if ((timer != 0 && get_seconds() > timer) || if ((timer != 0 && get_seconds() > timer) ||
(warns != 0 && warns >= warnlimit)) { (warns != 0 && warns >= warnlimit)) {
xfs_quota_warn(mp, dqp, xfs_quota_warn(mp, dqp,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment