]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
block: refactor blkdev_report_zones() code
authorDamien Le Moal <dlemoal@kernel.org>
Tue, 4 Nov 2025 21:22:42 +0000 (06:22 +0900)
committerJens Axboe <axboe@kernel.dk>
Wed, 5 Nov 2025 15:07:21 +0000 (08:07 -0700)
In preparation for implementing cached report zone, split the main part
of the code of blkdev_report_zones() into the helper function
blkdev_do_report_zones(), with this new helper taking as argument a
struct blk_report_zones_args pointer instead of a report callback
function and its private argument.

No functional changes.

Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-zoned.c

index c5fa303093a99db322d8aeed67ae9270e0166cb3..9ce7570c91e1e518e9b1b34f6b48d69093d5b502 100644 (file)
@@ -205,6 +205,21 @@ struct blk_report_zones_args {
        void            *data;
 };
 
+static int blkdev_do_report_zones(struct block_device *bdev, sector_t sector,
+                                 unsigned int nr_zones,
+                                 struct blk_report_zones_args *args)
+{
+       struct gendisk *disk = bdev->bd_disk;
+
+       if (!bdev_is_zoned(bdev) || WARN_ON_ONCE(!disk->fops->report_zones))
+               return -EOPNOTSUPP;
+
+       if (!nr_zones || sector >= get_capacity(disk))
+               return 0;
+
+       return disk->fops->report_zones(disk, sector, nr_zones, args);
+}
+
 /**
  * blkdev_report_zones - Get zones information
  * @bdev:      Target block device
@@ -227,19 +242,12 @@ struct blk_report_zones_args {
 int blkdev_report_zones(struct block_device *bdev, sector_t sector,
                        unsigned int nr_zones, report_zones_cb cb, void *data)
 {
-       struct gendisk *disk = bdev->bd_disk;
        struct blk_report_zones_args args = {
                .cb = cb,
                .data = data,
        };
 
-       if (!bdev_is_zoned(bdev) || WARN_ON_ONCE(!disk->fops->report_zones))
-               return -EOPNOTSUPP;
-
-       if (!nr_zones || sector >= get_capacity(disk))
-               return 0;
-
-       return disk->fops->report_zones(disk, sector, nr_zones, &args);
+       return blkdev_do_report_zones(bdev, sector, nr_zones, &args);
 }
 EXPORT_SYMBOL_GPL(blkdev_report_zones);