From: Damien Le Moal <dlemoal@kernel.org>
To: Jens Axboe <axboe@kernel.dk>, linux-block@vger.kernel.org
Cc: Christoph Hellwig <hch@lst.de>
Subject: [PATCH v2 12/13] block: simplify disk_zone_set_cond()
Date: Fri, 7 Aug 2026 01:04:44 +0900 [thread overview]
Message-ID: <20260806160445.848337-13-dlemoal@kernel.org> (raw)
In-Reply-To: <20260806160445.848337-1-dlemoal@kernel.org>
disk_zone_set_cond() is used to set a zone condition afer a reset, a
finish or a reset all operation. For a single zone reset or finish, we are
guaranteed that the target zone is a sequential one that is not offline
nor read-only (otherwise, the operation would have failed). For a reset
all operation, there is no point in calling this function for offline and
read-only zones since the condition checks in disk_zone_set_cond() will
result in nothing being done.
Simplify all this using disk_zone_is_offline_or_readonly() in
blk_zone_reset_all_bio_endio() to skip zones that are offline or
read-only. This change allows simplifying disk_zone_set_cond() by removing
the zone condition checks. This change is also consistent with the fact
that conventional zones can now have the offline or read-only condition.
Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
---
block/blk-zoned.c | 26 ++++++--------------------
1 file changed, 6 insertions(+), 20 deletions(-)
diff --git a/block/blk-zoned.c b/block/blk-zoned.c
index d0bdef1a5774..f17069309ac9 100644
--- a/block/blk-zoned.c
+++ b/block/blk-zoned.c
@@ -235,29 +235,14 @@ EXPORT_SYMBOL_GPL(blk_zone_cond_str);
static void disk_zone_set_cond(struct gendisk *disk, sector_t sector,
enum blk_zone_cond cond)
{
+ unsigned int zno = disk_zone_no(disk, sector);
u8 *zones_state;
rcu_read_lock();
zones_state = rcu_dereference(disk->zones_state);
- if (zones_state) {
- unsigned int zno = disk_zone_no(disk, sector);
-
- /*
- * The condition of a conventional, readonly and offline zones
- * never changes, so do nothing if the target zone is in one of
- * these conditions.
- */
- switch (zones_state[zno] & BLK_ZSTATE_COND_MASK) {
- case BLK_ZSTATE_NOT_WP:
- case BLK_ZSTATE_READONLY:
- case BLK_ZSTATE_OFFLINE:
- break;
- default:
- blk_zstate_set(zones_state, zno, cond,
- blk_zstate_flags(zones_state[zno]));
- break;
- }
- }
+ if (likely(zones_state && zno < disk->nr_zones))
+ blk_zstate_set(zones_state, zno, cond,
+ blk_zstate_flags(zones_state[zno]));
rcu_read_unlock();
}
@@ -1304,7 +1289,8 @@ static void blk_zone_reset_all_bio_endio(struct bio *bio)
/* Update the cached zone conditions. */
for (sector = 0; sector < get_capacity(disk);
sector += bdev_zone_sectors(bio->bi_bdev)) {
- if (disk_zone_is_offline_or_readonly(disk, sector))
+ if (!disk_zone_is_seq(disk, sector) ||
+ disk_zone_is_offline_or_readonly(disk, sector))
continue;
disk_zone_set_cond(disk, sector, BLK_ZONE_COND_EMPTY);
}
--
2.55.0
next prev parent reply other threads:[~2026-08-06 16:05 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-06 16:04 [PATCH v2 00/13] Improve handling of offline and read-only zones Damien Le Moal
2026-08-06 16:04 ` [PATCH v2 01/13] block: remove disk_free_zone_resources() Damien Le Moal
2026-08-06 16:04 ` [PATCH v2 02/13] block: refactor disk_revalidate_zone_resources() Damien Le Moal
2026-08-06 16:04 ` [PATCH v2 03/13] block: refactor disk_update_zone_resources() Damien Le Moal
2026-08-07 9:03 ` Hannes Reinecke
2026-08-06 16:04 ` [PATCH v2 04/13] block: remember a zone type regardless of its condition Damien Le Moal
2026-08-07 9:11 ` Hannes Reinecke
2026-08-06 16:04 ` [PATCH v2 05/13] block: refactor bdev_zone_is_seq() Damien Le Moal
2026-08-07 9:12 ` Hannes Reinecke
2026-08-06 16:04 ` [PATCH v2 06/13] block: introduce disk_for_all_zone_wplugs() Damien Le Moal
2026-08-07 10:20 ` Hannes Reinecke
2026-08-06 16:04 ` [PATCH v2 07/13] block: drop all zone write plugs on capacity changes Damien Le Moal
2026-08-07 10:24 ` Hannes Reinecke
2026-08-06 16:04 ` [PATCH v2 08/13] block: propagate readonly and offline conditions to zone write plugs Damien Le Moal
2026-08-07 10:32 ` Hannes Reinecke
2026-08-06 16:04 ` [PATCH v2 09/13] block: always treat offline and read-only zones as dead Damien Le Moal
2026-08-07 10:46 ` Hannes Reinecke
2026-08-07 15:48 ` Damien Le Moal
2026-08-06 16:04 ` [PATCH v2 10/13] block: fail zone management operations to read-only and offline zones Damien Le Moal
2026-08-07 11:42 ` Hannes Reinecke
2026-08-06 16:04 ` [PATCH v2 11/13] block: allow read-only and offline conventional zones Damien Le Moal
2026-08-07 11:48 ` Hannes Reinecke
2026-08-06 16:04 ` Damien Le Moal [this message]
2026-08-07 11:51 ` [PATCH v2 12/13] block: simplify disk_zone_set_cond() Hannes Reinecke
2026-08-06 16:04 ` [PATCH v2 13/13] block: flag zoned disks with GENHD_FL_NO_PART Damien Le Moal
2026-08-07 11:53 ` Hannes Reinecke
2026-08-07 15:34 ` [PATCH v2 00/13] Improve handling of offline and read-only zones Bart Van Assche
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260806160445.848337-13-dlemoal@kernel.org \
--to=dlemoal@kernel.org \
--cc=axboe@kernel.dk \
--cc=hch@lst.de \
--cc=linux-block@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.