X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=block%2Fblk-settings.c;h=b880c70e22e4e6b0af3ef229a09e232f8d173129;hb=38b0fd08ba1e3cc09114c99c12d1b5699487695e;hp=a7c857ad7d10e98de511a9e7947231894c0c68a6;hpb=4b105f4a256ae629522a7ed1611aba28fd282bd5;p=platform%2Fkernel%2Flinux-rpi.git diff --git a/block/blk-settings.c b/block/blk-settings.c index a7c857a..b880c70 100644 --- a/block/blk-settings.c +++ b/block/blk-settings.c @@ -842,6 +842,24 @@ bool blk_queue_can_use_dma_map_merging(struct request_queue *q, } EXPORT_SYMBOL_GPL(blk_queue_can_use_dma_map_merging); +static bool disk_has_partitions(struct gendisk *disk) +{ + unsigned long idx; + struct block_device *part; + bool ret = false; + + rcu_read_lock(); + xa_for_each(&disk->part_tbl, idx, part) { + if (bdev_is_partition(part)) { + ret = true; + break; + } + } + rcu_read_unlock(); + + return ret; +} + /** * blk_queue_set_zoned - configure a disk queue zoned model. * @disk: the gendisk of the queue to configure @@ -876,7 +894,7 @@ void blk_queue_set_zoned(struct gendisk *disk, enum blk_zoned_model model) * we do nothing special as far as the block layer is concerned. */ if (!IS_ENABLED(CONFIG_BLK_DEV_ZONED) || - !xa_empty(&disk->part_tbl)) + disk_has_partitions(disk)) model = BLK_ZONED_NONE; break; case BLK_ZONED_NONE: