block: fix cached zone reporting after zone append was used
authorChristoph Hellwig <hch@lst.de>
Wed, 5 Nov 2025 19:52:15 +0000 (14:52 -0500)
committerJens Axboe <axboe@kernel.dk>
Thu, 6 Nov 2025 23:15:27 +0000 (16:15 -0700)
commit15638d52cbcf6e969f4a5e2757b118355db583f3
tree3be29e4dcd43afb7b77cfb4931b727760268c5f8
parentc6886cf610f4bb0b8aa6b88ab013a042e317f898
block: fix cached zone reporting after zone append was used

No zone plugs are allocated when a zone is opened by calling Zone Append
on it.  This makes the cached zone reporting report incorrectly empty
zones if the file system is unmounted and report zones is called after
that, e.g. by xfstests test cases using the scratch device.

Fix this by recording if zone append was used on a device, and disable
cached reporting for the device until a ZONE_RESET_ALL happens that
guarantees all zones are empty.

We could probably do even better using a per-zone flag, but the practical
use cache for zone reporting after the initial mount are rather limited,
so let's keep things simple for now.

Fixes: 31f0656a4ab7 ("block: introduce blkdev_report_zones_cached()")
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-zoned.c
include/linux/blkdev.h