OSDN Git Service

block: cleanup the !zoned case in blk_revalidate_disk_zones
authorChristoph Hellwig <hch@lst.de>
Mon, 11 Nov 2019 02:39:23 +0000 (11:39 +0900)
committerJens Axboe <axboe@kernel.dk>
Wed, 13 Nov 2019 02:11:54 +0000 (19:11 -0700)
blk_revalidate_disk_zones is never called for non-zoned devices.  Just
return early and warn instead of trying to handle this case.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-zoned.c

index dae787f..523a28d 100644 (file)
@@ -520,6 +520,9 @@ int blk_revalidate_disk_zones(struct gendisk *disk)
        sector_t sector = 0;
        int ret = 0;
 
+       if (WARN_ON_ONCE(!blk_queue_is_zoned(q)))
+               return -EIO;
+
        /*
         * BIO based queues do not use a scheduler so only q->nr_zones
         * needs to be updated so that the sysfs exposed value is correct.
@@ -535,10 +538,8 @@ int blk_revalidate_disk_zones(struct gendisk *disk)
         */
        noio_flag = memalloc_noio_save();
 
-       if (!blk_queue_is_zoned(q) || !nr_zones) {
-               nr_zones = 0;
+       if (!nr_zones)
                goto update;
-       }
 
        /* Allocate bitmaps */
        ret = -ENOMEM;