Skip to contentSkip to conversation

block: flag zoned disks with GENHD_FL_NO_PART

PATCH RESEND Applied Damien Le Moal 2 participants 2 messages Aug 31 – Sep 1 Block layer

lore
Share & tools
lore
#0 lore raw

PATCH RESEND 1/1 block: flag zoned disks with GENHD_FL_NO_PART

Zoned block devices do not support partitions. However, the partition table is nevertheless still inspected, and any partition found ignored with a warning in add_partition(). While this is generally not a problem, and in fact beneficial to the user as it indicates an invalid use of a zoned block device, scanning for a partition table on the device may result in issuing read operations to offline zones (e.g. after a disk head is depopulated for disks that support head management operations).

Since partitions are ignored anyway, completely disable partition scanning for zoned gendisks by setting the flag GENHD_FL_NO_PART in __add_disk(). The existing check in add_partition() is left as-is to ensure that we still get a warning if for whatever reason, despite GENHD_FL_NO_PART, we still endup trying to add partitions.

Flagging zoned disks with GENHD_FL_NO_PART also has the benefit to expose through sysfs the ext_range attribute with the value of 1 instead of the default DISK_MAX_PARTS, thus correctly advertizing the fact that zoned disks do not support partitions.

Fixes 5eac3eb30c9a ("block: Remove partition support for zoned block devices")
---
 block/genhd.c | 7 +++++++
 1 file changed, 7 insertions(+)
block/genhd.c +7 -0
index f1990c7cdfb9..10ca8b4d6eea 100644
@@ -447,6 +447,13 @@ static int __add_disk(struct device *parent, struct gendisk *disk,
 		bdev_set_flag(disk->part0, BD_HAS_SUBMIT_BIO);
 	}
 
+	/*
+	 * We do not support partitions with zoned block devices, so do not try
+	 * to scan the partitions table.
+	 */
+	if (blk_queue_is_zoned(disk->queue))
+		disk->flags |= GENHD_FL_NO_PART;
+
 	/*
 	 * If the driver provides an explicit major number it also must provide
 	 * the number of minors numbers supported, and those will be used to
Signature · 1 line
2.55.0
maintainer Applied
#1 lore raw
Quoted 9 lines · Damien Le Moal

Zoned block devices do not support partitions. However, the partition table is nevertheless still inspected, and any partition found ignored with a warning in add_partition(). While this is generally not a problem, and in fact beneficial to the user as it indicates an invalid use of a zoned block device, scanning for a partition table on the device may result in issuing read operations to offline zones (e.g. after a disk head is depopulated for disks that support head management operations).

[...]

Applied, thanks!

[1/1] block: flag zoned disks with GENHD_FL_NO_PART

      commit: 3f9c7a108c0e8f14425384912017071b71341e3b

Best regards,

Signature · 1 line
Jens Axboe