* [PATCH] quota-tools: pass quota type to QCMD for Q_XFS_GETQSTAT
@ 2020-05-08 19:36 Eric Sandeen
2020-05-13 9:19 ` Jan Kara
0 siblings, 1 reply; 2+ messages in thread
From: Eric Sandeen @ 2020-05-08 19:36 UTC (permalink / raw)
To: Jan Kara; +Cc: Petr Písař, linux-xfs
Older kernels ignored the type sent to Q_XFS_GETQSTAT, and returned
timer information for the first quota type which was found to be
enabled.
As of 555b2c3da1fc ("quota: honor quota type in Q_XGETQSTAT[V] calls")
the kernel now honors the quota type requested, so send that from the
Q_XFS_GETQSTAT calls in quota tools.
Older kernels ignore the type altogether, so this change should be
backwards compatible with no change in behavior.
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
---
diff --git a/quotaio_xfs.c b/quotaio_xfs.c
index 56daf89..b22c7b4 100644
--- a/quotaio_xfs.c
+++ b/quotaio_xfs.c
@@ -81,7 +81,7 @@ static int xfs_init_io(struct quota_handle *h)
struct xfs_mem_dqinfo info;
int qcmd;
- qcmd = QCMD(Q_XFS_GETQSTAT, 0);
+ qcmd = QCMD(Q_XFS_GETQSTAT, h->qh_type);
memset(&info, 0, sizeof(struct xfs_mem_dqinfo));
if (quotactl(qcmd, h->qh_quotadev, 0, (void *)&info) < 0)
return -1;
diff --git a/quotaon_xfs.c b/quotaon_xfs.c
index d557a75..d137240 100644
--- a/quotaon_xfs.c
+++ b/quotaon_xfs.c
@@ -32,7 +32,7 @@ static int xfs_state_check(int qcmd, int type, int flags, const char *dev, int r
if (flags & STATEFLAG_ALL)
return 0; /* noop */
- if (quotactl(QCMD(Q_XFS_GETQSTAT, 0), dev, 0, (void *)&info) < 0) {
+ if (quotactl(QCMD(Q_XFS_GETQSTAT, type), dev, 0, (void *)&info) < 0) {
errstr(_("quotactl() on %s: %s\n"), dev, strerror(errno));
return -1;
}
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] quota-tools: pass quota type to QCMD for Q_XFS_GETQSTAT
2020-05-08 19:36 [PATCH] quota-tools: pass quota type to QCMD for Q_XFS_GETQSTAT Eric Sandeen
@ 2020-05-13 9:19 ` Jan Kara
0 siblings, 0 replies; 2+ messages in thread
From: Jan Kara @ 2020-05-13 9:19 UTC (permalink / raw)
To: Eric Sandeen; +Cc: Jan Kara, Petr Písař, linux-xfs
On Fri 08-05-20 14:36:46, Eric Sandeen wrote:
> Older kernels ignored the type sent to Q_XFS_GETQSTAT, and returned
> timer information for the first quota type which was found to be
> enabled.
>
> As of 555b2c3da1fc ("quota: honor quota type in Q_XGETQSTAT[V] calls")
> the kernel now honors the quota type requested, so send that from the
> Q_XFS_GETQSTAT calls in quota tools.
>
> Older kernels ignore the type altogether, so this change should be
> backwards compatible with no change in behavior.
>
> Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Thanks for the patch. I've added it to my tree.
Honza
> ---
>
> diff --git a/quotaio_xfs.c b/quotaio_xfs.c
> index 56daf89..b22c7b4 100644
> --- a/quotaio_xfs.c
> +++ b/quotaio_xfs.c
> @@ -81,7 +81,7 @@ static int xfs_init_io(struct quota_handle *h)
> struct xfs_mem_dqinfo info;
> int qcmd;
>
> - qcmd = QCMD(Q_XFS_GETQSTAT, 0);
> + qcmd = QCMD(Q_XFS_GETQSTAT, h->qh_type);
> memset(&info, 0, sizeof(struct xfs_mem_dqinfo));
> if (quotactl(qcmd, h->qh_quotadev, 0, (void *)&info) < 0)
> return -1;
> diff --git a/quotaon_xfs.c b/quotaon_xfs.c
> index d557a75..d137240 100644
> --- a/quotaon_xfs.c
> +++ b/quotaon_xfs.c
> @@ -32,7 +32,7 @@ static int xfs_state_check(int qcmd, int type, int flags, const char *dev, int r
> if (flags & STATEFLAG_ALL)
> return 0; /* noop */
>
> - if (quotactl(QCMD(Q_XFS_GETQSTAT, 0), dev, 0, (void *)&info) < 0) {
> + if (quotactl(QCMD(Q_XFS_GETQSTAT, type), dev, 0, (void *)&info) < 0) {
> errstr(_("quotactl() on %s: %s\n"), dev, strerror(errno));
> return -1;
> }
>
--
Jan Kara <jack@suse.com>
SUSE Labs, CR
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2020-05-13 9:19 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-08 19:36 [PATCH] quota-tools: pass quota type to QCMD for Q_XFS_GETQSTAT Eric Sandeen
2020-05-13 9:19 ` Jan Kara
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.