block, loop: support partitions without scanning
Historically we did distinguish between a flag that surpressed partition scanning, and a combinations of the minors variable and another flag if any partitions were supported. This was generally confusing and doesn't make much sense, but some corner case uses of the loop driver actually do want to support manually added partitions on a device that does not actively scan for partitions. To make things worsee the loop driver also wants to dynamically toggle the scanning for partitions on a live gendisk, which makes the disk->flags updates non-atomic. Introduce a new GD_SUPPRESS_PART_SCAN bit in disk->state that disables just scanning for partitions, and toggle that instead of GENHD_FL_NO_PART in the loop driver. [bva: Notes for this backport: - drop return code in disk_scan_partitions for GD_SUPPRESS_PART_SCAN. The check doesn't strictly need ot be in this routine in 5.15, but this faciliates future changes in this area, since there are other checks in the same function. - GD_SUPPRESS_PART_SCAN could go to genh.c, but genhd.c includes blkdev.h, so we leave the new GD_SUPPRESS_PART_SCAN definition in the same places as where it was introduced upstream to keep the changes to a minimum - upstream commit e16e506c merges blkdev_reread_part into disk_scan_partitions. Backporting that change is more churn than we need, so we also add the check for GD_SUPPRESS_PART_SCAN into that routine to have the check hit in a 5.15 context. ] Upstream-Status: Backport [commit b9684a71] Fixes: 1ebe2e5f ("block: remove GENHD_FL_EXT_DEVT") Reported-by:Ming Lei <ming.lei@redhat.com> Signed-off-by:
Christoph Hellwig <hch@lst.de> Reviewed-by:
Ming Lei <ming.lei@redhat.com> Link: https://lore.kernel.org/r/20220527055806.1972352-1-hch@lst.de Signed-off-by:
Jens Axboe <axboe@kernel.dk> Signed-off-by:
Bruce Ashfield <bruce.ashfield@gmail.com>
Loading
Please register or sign in to comment