block: simplify the disk_force_media_change interface
authorChristoph Hellwig <hch@lst.de>
Fri, 11 Aug 2023 10:08:19 +0000 (12:08 +0200)
committerChristian Brauner <brauner@kernel.org>
Mon, 21 Aug 2023 12:35:30 +0000 (14:35 +0200)
Hard code the events to DISK_EVENT_MEDIA_CHANGE as that is the only
useful use case, and drop the superfluous return value.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Josef Bacik <josef@toxicpanda.com>
Message-Id: <20230811100828.1897174-9-hch@lst.de>
Signed-off-by: Christian Brauner <brauner@kernel.org>
block/disk-events.c
drivers/block/loop.c
include/linux/blkdev.h

index 0cfac46..6189b81 100644 (file)
@@ -294,25 +294,18 @@ EXPORT_SYMBOL(disk_check_media_change);
  * @disk: the disk which will raise the event
  * @events: the events to raise
  *
- * Generate uevents for the disk. If DISK_EVENT_MEDIA_CHANGE is present,
- * attempt to free all dentries and inodes and invalidates all block
+ * Should be called when the media changes for @disk.  Generates a uevent
+ * and attempts to free all dentries and inodes and invalidates all block
  * device page cache entries in that case.
- *
- * Returns %true if DISK_EVENT_MEDIA_CHANGE was raised, or %false if not.
  */
-bool disk_force_media_change(struct gendisk *disk, unsigned int events)
+void disk_force_media_change(struct gendisk *disk)
 {
-       disk_event_uevent(disk, events);
-
-       if (!(events & DISK_EVENT_MEDIA_CHANGE))
-               return false;
-
+       disk_event_uevent(disk, DISK_EVENT_MEDIA_CHANGE);
        inc_diskseq(disk);
        if (__invalidate_device(disk->part0, true))
                pr_warn("VFS: busy inodes on changed media %s\n",
                        disk->disk_name);
        set_bit(GD_NEED_PART_SCAN, &disk->state);
-       return true;
 }
 EXPORT_SYMBOL_GPL(disk_force_media_change);
 
index 37511d2..705a0ef 100644 (file)
@@ -603,7 +603,7 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
                goto out_err;
 
        /* and ... switch */
-       disk_force_media_change(lo->lo_disk, DISK_EVENT_MEDIA_CHANGE);
+       disk_force_media_change(lo->lo_disk);
        blk_mq_freeze_queue(lo->lo_queue);
        mapping_set_gfp_mask(old_file->f_mapping, lo->old_gfp_mask);
        lo->lo_backing_file = file;
@@ -1067,7 +1067,7 @@ static int loop_configure(struct loop_device *lo, blk_mode_t mode,
        /* suppress uevents while reconfiguring the device */
        dev_set_uevent_suppress(disk_to_dev(lo->lo_disk), 1);
 
-       disk_force_media_change(lo->lo_disk, DISK_EVENT_MEDIA_CHANGE);
+       disk_force_media_change(lo->lo_disk);
        set_disk_ro(lo->lo_disk, (lo->lo_flags & LO_FLAGS_READ_ONLY) != 0);
 
        lo->use_dio = lo->lo_flags & LO_FLAGS_DIRECT_IO;
@@ -1171,7 +1171,7 @@ static void __loop_clr_fd(struct loop_device *lo, bool release)
        if (!release)
                blk_mq_unfreeze_queue(lo->lo_queue);
 
-       disk_force_media_change(lo->lo_disk, DISK_EVENT_MEDIA_CHANGE);
+       disk_force_media_change(lo->lo_disk);
 
        if (lo->lo_flags & LO_FLAGS_PARTSCAN) {
                int err;
index 8326270..c8eab6e 100644 (file)
@@ -750,7 +750,7 @@ static inline int bdev_read_only(struct block_device *bdev)
 }
 
 bool set_capacity_and_notify(struct gendisk *disk, sector_t size);
-bool disk_force_media_change(struct gendisk *disk, unsigned int events);
+void disk_force_media_change(struct gendisk *disk);
 
 void add_disk_randomness(struct gendisk *disk) __latent_entropy;
 void rand_initialize_disk(struct gendisk *disk);