xfs
[Top] [All Lists]

Re: [PATCH -v2 1/3] xfs: change available ranges of softlimit and hardli

To: Mitsuo Hayasaka <mitsuo.hayasaka.hu@xxxxxxxxxxx>
Subject: Re: [PATCH -v2 1/3] xfs: change available ranges of softlimit and hardlimit in quota check
From: Mark Tinguely <tinguely@xxxxxxx>
Date: Fri, 10 Feb 2012 14:37:03 -0600
Cc: xfs@xxxxxxxxxxx
In-reply-to: <20120206125007.12624.58454.stgit@xxxxxxxxxxxxxxxxxxxxxxxx>
References: <20120206124951.12624.88233.stgit@xxxxxxxxxxxxxxxxxxxxxxxx> <20120206125007.12624.58454.stgit@xxxxxxxxxxxxxxxxxxxxxxxx>
User-agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:9.0) Gecko/20120122 Thunderbird/9.0
On 02/06/12 06:50, Mitsuo Hayasaka wrote:
In general, quota allows us to use disk blocks and inodes up to each
limit, that is, they are available if they don't exceed their limitations.
Current xfs sets their available ranges to lower than them except disk
inode quota check. So, this patch changes the ranges to not beyond them.

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_dquot.c       |   24 ++++++++++++------------
  fs/xfs/xfs_log_recover.c |    6 +++---
  fs/xfs/xfs_qm_syscalls.c |    4 ++--
  fs/xfs/xfs_trans_dquot.c |    4 ++--
  4 files changed, 19 insertions(+), 19 deletions(-)

diff --git a/fs/xfs/xfs_dquot.c b/fs/xfs/xfs_dquot.c

diff --git a/fs/xfs/xfs_qm_syscalls.c b/fs/xfs/xfs_qm_syscalls.c
index eafbcff..711a86e 100644
--- a/fs/xfs/xfs_qm_syscalls.c
+++ b/fs/xfs/xfs_qm_syscalls.c
@@ -813,11 +813,11 @@ xfs_qm_export_dquot(
             (XFS_IS_OQUOTA_ENFORCED(mp)&&
                        (dst->d_flags&  (FS_PROJ_QUOTA | FS_GROUP_QUOTA))))&&
        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)) {
                        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)) {
                        ASSERT(dst->d_itimer != 0);
                }

Good catch on the off by one page comparisons. I like the patch.

Question: I know this was like this before, but why is the 64 bit counts and limits being casted into integers for these tests inside the DEBUG?

--Mark Tinguely
  tinguely@xxxxxxx

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