From: Dave Chinner <david@fromorbit.com>
To: "Darrick J. Wong" <darrick.wong@oracle.com>
Cc: linux-xfs@vger.kernel.org
Subject: Re: [PATCH 1/2] xfs: widen quota block counters to 64-bit integers
Date: Thu, 18 Apr 2019 07:08:50 +1000 [thread overview]
Message-ID: <20190417210850.GO29573@dread.disaster.area> (raw)
In-Reply-To: <155546518873.176148.11756573764233413857.stgit@magnolia>
On Tue, Apr 16, 2019 at 06:39:48PM -0700, Darrick J. Wong wrote:
> From: Darrick J. Wong <darrick.wong@oracle.com>
>
> Widen the incore quota transaction delta structure to treat block
> counters as 64-bit integers. This is a necessary addition so that we
> can widen the i_delayed_blks counter to be a 64-bit integer.
>
> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
> ---
> fs/xfs/xfs_qm.h | 8 ++------
> fs/xfs/xfs_quota.h | 31 +++++++++++++++++--------------
> fs/xfs/xfs_trans_dquot.c | 28 ++++++++++++++--------------
> 3 files changed, 33 insertions(+), 34 deletions(-)
>
>
> diff --git a/fs/xfs/xfs_qm.h b/fs/xfs/xfs_qm.h
> index 3ccf0fbc9071..b41b75089548 100644
> --- a/fs/xfs/xfs_qm.h
> +++ b/fs/xfs/xfs_qm.h
> @@ -113,12 +113,8 @@ xfs_quota_inode(xfs_mount_t *mp, uint dq_flags)
> return NULL;
> }
>
> -extern void xfs_trans_mod_dquot(struct xfs_trans *,
> - struct xfs_dquot *, uint, long);
> -extern int xfs_trans_reserve_quota_bydquots(struct xfs_trans *,
> - struct xfs_mount *, struct xfs_dquot *,
> - struct xfs_dquot *, struct xfs_dquot *,
> - long, long, uint);
> +extern void xfs_trans_mod_dquot(struct xfs_trans *tp, struct xfs_dquot *dqp,
> + uint field, int64_t delta);
> extern void xfs_trans_dqjoin(struct xfs_trans *, struct xfs_dquot *);
> extern void xfs_trans_log_dquot(struct xfs_trans *, struct xfs_dquot *);
>
> diff --git a/fs/xfs/xfs_quota.h b/fs/xfs/xfs_quota.h
> index 55b798265ef7..215cb39e3a04 100644
> --- a/fs/xfs/xfs_quota.h
> +++ b/fs/xfs/xfs_quota.h
> @@ -58,30 +58,33 @@ xfs_quota_chkd_flag(
> */
> typedef struct xfs_dqtrx {
> struct xfs_dquot *qt_dquot; /* the dquot this refers to */
> - ulong qt_blk_res; /* blks reserved on a dquot */
> - ulong qt_ino_res; /* inode reserved on a dquot */
> - ulong qt_ino_res_used; /* inodes used from the reservation */
> - long qt_bcount_delta; /* dquot blk count changes */
> - long qt_delbcnt_delta; /* delayed dquot blk count changes */
> +
> + uint64_t qt_blk_res; /* blks reserved on a dquot */
> + int64_t qt_bcount_delta; /* dquot blk count changes */
> + int64_t qt_delbcnt_delta; /* delayed dquot blk count changes */
> +
> + uint64_t qt_rtblk_res; /* # blks reserved on a dquot */
> + uint64_t qt_rtblk_res_used;/* # blks used from reservation */
> + int64_t qt_rtbcount_delta;/* dquot realtime blk changes */
> + int64_t qt_delrtb_delta; /* delayed RT blk count changes */
> +
> + unsigned long qt_ino_res; /* inode reserved on a dquot */
> + unsigned long qt_ino_res_used; /* inodes used from the reservation */
Canyou get rid of the ulongs here and make them explicit? uint32_t
should be large enough for them, but it might just be simpler to
make everything 64 bit variables.
ANd that....
> /*
> * inode reservation
> */
> case XFS_TRANS_DQ_RES_INOS:
> - qtrx->qt_ino_res += (ulong)delta;
> + qtrx->qt_ino_res += (unsigned long)delta;
> break;
>
> /*
> @@ -245,7 +245,7 @@ xfs_trans_mod_dquot(
> */
> case XFS_TRANS_DQ_ICOUNT:
> if (qtrx->qt_ino_res && delta > 0) {
> - qtrx->qt_ino_res_used += (ulong)delta;
> + qtrx->qt_ino_res_used += (unsigned long)delta;
> ASSERT(qtrx->qt_ino_res >= qtrx->qt_ino_res_used);
would get rid of these casts, too.
But, otherwise, this is a long overdue cleanup :)
Reviewed-by: Dave Chinner <dchinner@redhat.com>
--
Dave Chinner
david@fromorbit.com
next prev parent reply other threads:[~2019-04-17 21:08 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-04-17 1:39 [PATCH 0/2] xfs: prevent overflow of delalloc block counters Darrick J. Wong
2019-04-17 1:39 ` [PATCH 1/2] xfs: widen quota block counters to 64-bit integers Darrick J. Wong
2019-04-17 3:06 ` Allison Henderson
2019-04-17 6:25 ` Darrick J. Wong
2019-04-17 21:08 ` Dave Chinner [this message]
2019-04-23 6:27 ` Christoph Hellwig
2019-04-17 1:39 ` [PATCH 2/2] xfs: widen inode delalloc block counter to 64-bits Darrick J. Wong
2019-04-17 3:06 ` Allison Henderson
2019-04-17 21:10 ` Dave Chinner
2019-04-23 6:28 ` Christoph Hellwig
2019-04-17 6:24 ` [PATCH 3/2] xfstests: check for COW overflows in i_delayed_blks Darrick J. Wong
2019-04-17 21:29 ` Dave Chinner
2019-04-17 22:24 ` Darrick J. Wong
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190417210850.GO29573@dread.disaster.area \
--to=david@fromorbit.com \
--cc=darrick.wong@oracle.com \
--cc=linux-xfs@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox