[PATCH] blk-cgroup: show io.stat numbers for discard-only cgroups

From: Tao Cui

Date: Tue Jul 14 2026 - 02:36:04 EST


From: Tao Cui <cuitao@xxxxxxxxxx>

blkcg_print_one_stat() gates the rbytes/wbytes/rios/wios/dbytes/dios
output on

if (rbytes || wbytes || rios || wios)

which omits the discard counters. A cgroup that has issued only discards
(zero read and write counters) therefore prints an empty stat line and its
dbytes/dios are never surfaced, even though they are accounted correctly.

The guard predates the addition of discard stats and was never updated;
include dbytes/dios so discard-only cgroups are reported.

Fixes: 636620b66d5d ("blkcg: Track DISCARD statistics and output them in cgroup io.stat")
Signed-off-by: Tao Cui <cuitao@xxxxxxxxxx>
---
block/blk-cgroup.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/block/blk-cgroup.c b/block/blk-cgroup.c
index a778aa9d2bb9..b324701cb05d 100644
--- a/block/blk-cgroup.c
+++ b/block/blk-cgroup.c
@@ -1154,7 +1154,7 @@ static void blkcg_print_one_stat(struct blkcg_gq *blkg, struct seq_file *s)
dios = bis->cur.ios[BLKG_IOSTAT_DISCARD];
} while (u64_stats_fetch_retry(&bis->sync, seq));

- if (rbytes || wbytes || rios || wios) {
+ if (rbytes || wbytes || rios || wios || dbytes || dios) {
seq_printf(s, "rbytes=%llu wbytes=%llu rios=%llu wios=%llu dbytes=%llu dios=%llu",
rbytes, wbytes, rios, wios,
dbytes, dios);
--
2.43.0