Skip to content

Commit ed22711

Browse files
committed
quotactl: add Q_XGETQSTATV command decoding
* quota.c (fs_qfilestatv, fs_quota_statv): New structures. (decode_cmd_data): Handle Q_XGETQSTATV case.
1 parent 60d4892 commit ed22711

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

quota.c

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,27 @@ struct xfs_dqstats
177177
uint16_t qs_iwarnlimit; /* limit for num warnings */
178178
};
179179

180+
struct fs_qfilestatv {
181+
uint64_t qfs_ino, qfs_nblks;
182+
uint32_t qfs_nextents, qfs_pad;
183+
};
184+
185+
struct fs_quota_statv {
186+
int8_t qs_version;
187+
uint8_t qs_pad1;
188+
uint16_t qs_flags;
189+
uint32_t qs_incoredqs;
190+
struct fs_qfilestatv qs_uquota;
191+
struct fs_qfilestatv qs_gquota;
192+
struct fs_qfilestatv qs_pquota;
193+
int32_t qs_btimelimit;
194+
int32_t qs_itimelimit;
195+
int32_t qs_rtbtimelimit;
196+
uint16_t qs_bwarnlimit;
197+
uint16_t qs_iwarnlimit;
198+
uint64_t qs_pad2[8];
199+
};
200+
180201
static int
181202
decode_cmd_data(struct tcb *tcp, uint32_t cmd, unsigned long data)
182203
{
@@ -394,6 +415,39 @@ decode_cmd_data(struct tcb *tcp, uint32_t cmd, unsigned long data)
394415
tprintf("iwarnlimit=%u}", dq.qs_iwarnlimit);
395416
break;
396417
}
418+
case Q_XGETQSTATV:
419+
{
420+
struct fs_quota_statv dq;
421+
422+
if (entering(tcp))
423+
return 0;
424+
if (umove_or_printaddr(tcp, data, &dq))
425+
break;
426+
tprintf("{version=%d, ", dq.qs_version);
427+
if (abbrev(tcp)) {
428+
tprints("...}");
429+
break;
430+
}
431+
tprints("flags=");
432+
printflags(xfs_quota_flags,
433+
dq.qs_flags, "XFS_QUOTA_???");
434+
tprintf(", incoredqs=%u, ", dq.qs_incoredqs);
435+
tprintf("u_ino=%" PRIu64 ", ", dq.qs_uquota.qfs_ino);
436+
tprintf("u_nblks=%" PRIu64 ", ", dq.qs_uquota.qfs_nblks);
437+
tprintf("u_nextents=%u, ", dq.qs_uquota.qfs_nextents);
438+
tprintf("g_ino=%" PRIu64 ", ", dq.qs_gquota.qfs_ino);
439+
tprintf("g_nblks=%" PRIu64 ", ", dq.qs_gquota.qfs_nblks);
440+
tprintf("g_nextents=%u, ", dq.qs_gquota.qfs_nextents);
441+
tprintf("p_ino=%" PRIu64 ", ", dq.qs_pquota.qfs_ino);
442+
tprintf("p_nblks=%" PRIu64 ", ", dq.qs_pquota.qfs_nblks);
443+
tprintf("p_nextents=%u, ", dq.qs_pquota.qfs_nextents);
444+
tprintf("btimelimit=%d, ", dq.qs_btimelimit);
445+
tprintf("itimelimit=%d, ", dq.qs_itimelimit);
446+
tprintf("rtbtimelimit=%d, ", dq.qs_rtbtimelimit);
447+
tprintf("bwarnlimit=%u, ", dq.qs_bwarnlimit);
448+
tprintf("iwarnlimit=%u}", dq.qs_iwarnlimit);
449+
break;
450+
}
397451
case Q_XQUOTAON:
398452
case Q_XQUOTAOFF:
399453
{

0 commit comments

Comments
 (0)