Re: [PATCH] quota-tools: Set FS_DQ_TIMER_MASK for individual xfs grace times

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue 19-05-20 12:19:14, Eric Sandeen wrote:
> On 5/14/20 5:20 AM, Jan Kara wrote:
> >> I'm putting together xfstests cases for this, if you want to wait
> >> for those, that's fine.  Thanks!
> > Yeah, that looks like a good thing to do. Also FS_DQ_LIMIT_MASK contains
> > real-time limits bits which quota tools aren't able to manipulate in any
> > way so maybe not setting those bits would be wiser... Will you send a patch
> > or should I just fix it?
> 
> I've sent those tests now, btw.
> 
> I agree that the whole section of flag-setting is a bit odd, I hadn't
> intended to clean it up right now.  I'd be happy to review though if you
> found the time.  :)

Patch attached :)

								Honza
-- 
Jan Kara <jack@xxxxxxxx>
SUSE Labs, CR
>From 1814341547753865bcbd92bbe62af51f3e6866dd Mon Sep 17 00:00:00 2001
From: Jan Kara <jack@xxxxxxx>
Date: Wed, 20 May 2020 16:22:52 +0200
Subject: [PATCH] Fix limits setting on XFS filesystem

xfs_commit_dquot() always set FS_DQ_LIMIT_MASK when calling
Q_XFS_SETQLIM. So far this wasn't a problem since quota tools didn't
support setting of anything else for XFS but now that kernel will start
supporting setting of grace times for XFS, we need to be more careful
and set limits bits only if we really want to update them. Also
FS_DQ_LIMIT_MASK contains real-time limits as well. Quota tools
currently don't support them in any way so avoid telling kernel to set
them.

Signed-off-by: Jan Kara <jack@xxxxxxx>
---
 quotaio_xfs.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/quotaio_xfs.c b/quotaio_xfs.c
index a4d6f67b0c5a..3333bb1645d9 100644
--- a/quotaio_xfs.c
+++ b/quotaio_xfs.c
@@ -165,7 +165,9 @@ static int xfs_commit_dquot(struct dquot *dquot, int flags)
 		if (flags & COMMIT_USAGE) /* block usage */
 			xdqblk.d_fieldmask |= FS_DQ_BCOUNT;
 	} else {
-		xdqblk.d_fieldmask |= FS_DQ_LIMIT_MASK;
+		if (flags & COMMIT_LIMITS) /* warn/limit */
+			xdqblk.d_fieldmask |= FS_DQ_BSOFT | FS_DQ_BHARD |
+						FS_DQ_ISOFT | FS_DQ_IHARD;
 		if (flags & COMMIT_TIMES) /* indiv grace period */
 			xdqblk.d_fieldmask |= FS_DQ_TIMER_MASK;
 	}
-- 
2.16.4


[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]


  Powered by Linux