block: move bdev_disk_changed
authorChristoph Hellwig <hch@lst.de>
Thu, 24 Jun 2021 12:32:39 +0000 (14:32 +0200)
committerJens Axboe <axboe@kernel.dk>
Thu, 24 Jun 2021 18:01:06 +0000 (12:01 -0600)
Move bdev_disk_changed to block/partitions/core.c, together with the
rest of the partition scanning code.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20210624123240.441814-2-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/partitions/core.c
fs/block_dev.c
include/linux/genhd.h

index 186d4fb..b79785f 100644 (file)
@@ -596,7 +596,7 @@ static bool blk_add_partition(struct gendisk *disk, struct block_device *bdev,
        return true;
 }
 
-int blk_add_partitions(struct gendisk *disk, struct block_device *bdev)
+static int blk_add_partitions(struct gendisk *disk, struct block_device *bdev)
 {
        struct parsed_partitions *state;
        int ret = -EAGAIN, p;
@@ -657,6 +657,59 @@ out_free_state:
        return ret;
 }
 
+int bdev_disk_changed(struct block_device *bdev, bool invalidate)
+{
+       struct gendisk *disk = bdev->bd_disk;
+       int ret = 0;
+
+       lockdep_assert_held(&disk->open_mutex);
+
+       if (!(disk->flags & GENHD_FL_UP))
+               return -ENXIO;
+
+rescan:
+       if (disk->open_partitions)
+               return -EBUSY;
+       sync_blockdev(bdev);
+       invalidate_bdev(bdev);
+       blk_drop_partitions(disk);
+
+       clear_bit(GD_NEED_PART_SCAN, &disk->state);
+
+       /*
+        * Historically we only set the capacity to zero for devices that
+        * support partitions (independ of actually having partitions created).
+        * Doing that is rather inconsistent, but changing it broke legacy
+        * udisks polling for legacy ide-cdrom devices.  Use the crude check
+        * below to get the sane behavior for most device while not breaking
+        * userspace for this particular setup.
+        */
+       if (invalidate) {
+               if (disk_part_scan_enabled(disk) ||
+                   !(disk->flags & GENHD_FL_REMOVABLE))
+                       set_capacity(disk, 0);
+       }
+
+       if (get_capacity(disk)) {
+               ret = blk_add_partitions(disk, bdev);
+               if (ret == -EAGAIN)
+                       goto rescan;
+       } else if (invalidate) {
+               /*
+                * Tell userspace that the media / partition table may have
+                * changed.
+                */
+               kobject_uevent(&disk_to_dev(disk)->kobj, KOBJ_CHANGE);
+       }
+
+       return ret;
+}
+/*
+ * Only exported for loop and dasd for historic reasons.  Don't use in new
+ * code!
+ */
+EXPORT_SYMBOL_GPL(bdev_disk_changed);
+
 void *read_part_sector(struct parsed_partitions *state, sector_t n, Sector *p)
 {
        struct address_space *mapping = state->bdev->bd_inode->i_mapping;
index ac9b3c1..5b3a73e 100644 (file)
@@ -1242,59 +1242,6 @@ static void blkdev_flush_mapping(struct block_device *bdev)
        bdev_write_inode(bdev);
 }
 
-int bdev_disk_changed(struct block_device *bdev, bool invalidate)
-{
-       struct gendisk *disk = bdev->bd_disk;
-       int ret = 0;
-
-       lockdep_assert_held(&disk->open_mutex);
-
-       if (!(disk->flags & GENHD_FL_UP))
-               return -ENXIO;
-
-rescan:
-       if (disk->open_partitions)
-               return -EBUSY;
-       sync_blockdev(bdev);
-       invalidate_bdev(bdev);
-       blk_drop_partitions(disk);
-
-       clear_bit(GD_NEED_PART_SCAN, &disk->state);
-
-       /*
-        * Historically we only set the capacity to zero for devices that
-        * support partitions (independ of actually having partitions created).
-        * Doing that is rather inconsistent, but changing it broke legacy
-        * udisks polling for legacy ide-cdrom devices.  Use the crude check
-        * below to get the sane behavior for most device while not breaking
-        * userspace for this particular setup.
-        */
-       if (invalidate) {
-               if (disk_part_scan_enabled(disk) ||
-                   !(disk->flags & GENHD_FL_REMOVABLE))
-                       set_capacity(disk, 0);
-       }
-
-       if (get_capacity(disk)) {
-               ret = blk_add_partitions(disk, bdev);
-               if (ret == -EAGAIN)
-                       goto rescan;
-       } else if (invalidate) {
-               /*
-                * Tell userspace that the media / partition table may have
-                * changed.
-                */
-               kobject_uevent(&disk_to_dev(disk)->kobj, KOBJ_CHANGE);
-       }
-
-       return ret;
-}
-/*
- * Only exported for loop and dasd for historic reasons.  Don't use in new
- * code!
- */
-EXPORT_SYMBOL_GPL(bdev_disk_changed);
-
 static int blkdev_get_whole(struct block_device *bdev, fmode_t mode)
 {
        struct gendisk *disk = bdev->bd_disk;
index 03d684f..f5f0c9b 100644 (file)
@@ -257,7 +257,6 @@ static inline sector_t get_capacity(struct gendisk *disk)
 }
 
 int bdev_disk_changed(struct block_device *bdev, bool invalidate);
-int blk_add_partitions(struct gendisk *disk, struct block_device *bdev);
 void blk_drop_partitions(struct gendisk *disk);
 
 extern struct gendisk *__alloc_disk_node(int minors, int node_id);