aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDamien Le Moal <dlemoal@kernel.org>2024-05-01 20:09:03 +0900
committerJens Axboe <axboe@kernel.dk>2024-05-01 08:08:43 -0600
commitc4c3ffdab2e26780f6f7c9959a473b2c652f4d13 (patch)
tree26d37425e525d2db95b544ddde25704cf9be0a79
parent096bc7ea335bc5dfbaed1d005ff27f008ec9d710 (diff)
downloadlinux-c4c3ffdab2e26780f6f7c9959a473b2c652f4d13.tar.gz
block: Improve blk_zone_write_plug_bio_merged()
Improve blk_zone_write_plug_bio_merged() to check that we succefully get a reference on the zone write plug of the merged BIO, as expected since for a merge we already have at least one request and one BIO referencing the zone write plug. Comments in this function are also improved to better explain the references to the BIO zone write plug. Signed-off-by: Damien Le Moal <dlemoal@kernel.org> Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> Link: https://lore.kernel.org/r/20240501110907.96950-11-dlemoal@kernel.org Signed-off-by: Jens Axboe <axboe@kernel.dk>
-rw-r--r--block/blk-zoned.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/block/blk-zoned.c b/block/blk-zoned.c
index cd0049f5bf2ff1..1890b6d55d8b79 100644
--- a/block/blk-zoned.c
+++ b/block/blk-zoned.c
@@ -885,11 +885,16 @@ void blk_zone_write_plug_bio_merged(struct bio *bio)
bio_set_flag(bio, BIO_ZONE_WRITE_PLUGGING);
/*
- * Increase the plug reference count and advance the zone write
- * pointer offset.
+ * Get a reference on the zone write plug of the target zone and advance
+ * the zone write pointer offset. Given that this is a merge, we already
+ * have at least one request and one BIO referencing the zone write
+ * plug. So this should not fail.
*/
zwplug = disk_get_zone_wplug(bio->bi_bdev->bd_disk,
bio->bi_iter.bi_sector);
+ if (WARN_ON_ONCE(!zwplug))
+ return;
+
spin_lock_irqsave(&zwplug->lock, flags);
zwplug->wp_offset += bio_sectors(bio);
spin_unlock_irqrestore(&zwplug->lock, flags);