From 59b67452b9dab3ad2bc9f1d1dd17c5e3993a66ee Mon Sep 17 00:00:00 2001 From: Dmitry Fomichev Date: Wed, 27 Jan 2021 13:19:12 +0900 Subject: [PATCH] zbd: engines/libzbc: don't fail on assert for offline zones If fio is run against a zoned device that has any zones in OFFLINE condition, the following assertion is raised - fio: zbd.c:473: parse_zone_info: Assertion `z->wp <= z->start + zone_size' failed. This happens because offline zones have no valid write pointer and it is reported by libzbc and blkzoned as (uint64_t)(-1). To avoid violating this assertion, set the write pointer in all offline zones to point at the start of the zone. Signed-off-by: Dmitry Fomichev Reviewed-by: Shin'ichiro Kawasaki Signed-off-by: Jens Axboe --- engines/libzbc.c | 2 +- oslib/linux-blkzoned.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/engines/libzbc.c b/engines/libzbc.c index 4b900233..552aab65 100644 --- a/engines/libzbc.c +++ b/engines/libzbc.c @@ -283,7 +283,7 @@ static int libzbc_report_zones(struct thread_data *td, struct fio_file *f, default: /* Treat all these conditions as offline (don't use!) */ zbdz->cond = ZBD_ZONE_COND_OFFLINE; - break; + zbdz->wp = zbdz->start; } } diff --git a/oslib/linux-blkzoned.c b/oslib/linux-blkzoned.c index 0a8a577a..f37c67fc 100644 --- a/oslib/linux-blkzoned.c +++ b/oslib/linux-blkzoned.c @@ -203,7 +203,7 @@ int blkzoned_report_zones(struct thread_data *td, struct fio_file *f, default: /* Treat all these conditions as offline (don't use!) */ z->cond = ZBD_ZONE_COND_OFFLINE; - break; + z->wp = z->start; } } -- 2.25.1