xfs
[Top] [All Lists]

[PATCH 3/3] xfs: cleanup quota check on disk blocks and inodes reservati

To: Ben Myers <bpm@xxxxxxx>, Alex Elder <aelder@xxxxxxx>, Christoph Hellwig <hch@xxxxxx>
Subject: [PATCH 3/3] xfs: cleanup quota check on disk blocks and inodes reservations
From: Mitsuo Hayasaka <mitsuo.hayasaka.hu@xxxxxxxxxxx>
Date: Mon, 23 Jan 2012 12:45:43 +0900
Cc: xfs-masters@xxxxxxxxxxx, xfs@xxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx, yrl.pp-manager.tt@xxxxxxxxxxx, Mitsuo Hayasaka <mitsuo.hayasaka.hu@xxxxxxxxxxx>, Ben Myers <bpm@xxxxxxx>, Alex Elder <elder@xxxxxxxxxx>, Christoph Hellwig <hch@xxxxxx>
In-reply-to: <20120123034513.3339.97432.stgit@xxxxxxxxxxxxxxxxxxxxxxxx>
References: <20120123034513.3339.97432.stgit@xxxxxxxxxxxxxxxxxxxxxxxx>
User-agent: StGIT/0.14.3
This patch is a cleanup of quota check on disk blocks and inodes
reservations.

Signed-off-by: Mitsuo Hayasaka <mitsuo.hayasaka.hu@xxxxxxxxxxx>
Cc: Ben Myers <bpm@xxxxxxx>
Cc: Alex Elder <elder@xxxxxxxxxx>
Cc: Christoph Hellwig <hch@xxxxxx>
---

 fs/xfs/xfs_trans_dquot.c |   17 +++++++----------
 1 files changed, 7 insertions(+), 10 deletions(-)

diff --git a/fs/xfs/xfs_trans_dquot.c b/fs/xfs/xfs_trans_dquot.c
index c4ba366..5e6cd1c 100644
--- a/fs/xfs/xfs_trans_dquot.c
+++ b/fs/xfs/xfs_trans_dquot.c
@@ -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      tcount;
        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) {
+                       tcount = *resbcountp + nblks;
+                       if (hardlimit > 0ULL && tcount > hardlimit) {
                                xfs_quota_warn(mp, dqp, QUOTA_NL_BHARDWARN);
                                goto error_return;
                        }
-                       if (softlimit > 0ULL &&
-                           softlimit < nblks + *resbcountp) {
+                       if (softlimit > 0ULL && tcount > 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);
+                       tcount = 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 > 0ULL && tcount > hardlimit) {
                                xfs_quota_warn(mp, dqp, QUOTA_NL_IHARDWARN);
                                goto error_return;
                        }
-                       if (softlimit > 0ULL &&
-                           softlimit < ninos + count) {
+                       if (softlimit > 0ULL && tcount > softlimit) {
                                if  ((timer != 0 && get_seconds() > timer) ||
                                     (warns != 0 && warns >= warnlimit)) {
                                        xfs_quota_warn(mp, dqp,

<Prev in Thread] Current Thread [Next in Thread>