s390: port block device access to file
authorChristian Brauner <brauner@kernel.org>
Tue, 23 Jan 2024 13:26:33 +0000 (14:26 +0100)
committerChristian Brauner <brauner@kernel.org>
Sun, 25 Feb 2024 11:05:25 +0000 (12:05 +0100)
Link: https://lore.kernel.org/r/20240123-vfs-bdev-file-v2-16-adbd023e19cc@kernel.org
Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Christian Brauner <brauner@kernel.org>
drivers/s390/block/dasd.c
drivers/s390/block/dasd_genhd.c
drivers/s390/block/dasd_int.h
drivers/s390/block/dasd_ioctl.c

index 7327e81..c833a7c 100644 (file)
@@ -412,7 +412,7 @@ dasd_state_ready_to_online(struct dasd_device * device)
                                        KOBJ_CHANGE);
                        return 0;
                }
-               disk_uevent(device->block->bdev_handle->bdev->bd_disk,
+               disk_uevent(file_bdev(device->block->bdev_file)->bd_disk,
                            KOBJ_CHANGE);
        }
        return 0;
@@ -433,7 +433,7 @@ static int dasd_state_online_to_ready(struct dasd_device *device)
 
        device->state = DASD_STATE_READY;
        if (device->block && !(device->features & DASD_FEATURE_USERAW))
-               disk_uevent(device->block->bdev_handle->bdev->bd_disk,
+               disk_uevent(file_bdev(device->block->bdev_file)->bd_disk,
                            KOBJ_CHANGE);
        return 0;
 }
@@ -3588,7 +3588,7 @@ int dasd_generic_set_offline(struct ccw_device *cdev)
         * in the other openers.
         */
        if (device->block) {
-               max_count = device->block->bdev_handle ? 0 : -1;
+               max_count = device->block->bdev_file ? 0 : -1;
                open_count = atomic_read(&device->block->open_count);
                if (open_count > max_count) {
                        if (open_count > 0)
@@ -3634,8 +3634,8 @@ int dasd_generic_set_offline(struct ccw_device *cdev)
                 * so sync bdev first and then wait for our queues to become
                 * empty
                 */
-               if (device->block && device->block->bdev_handle)
-                       bdev_mark_dead(device->block->bdev_handle->bdev, false);
+               if (device->block && device->block->bdev_file)
+                       bdev_mark_dead(file_bdev(device->block->bdev_file), false);
                dasd_schedule_device_bh(device);
                rc = wait_event_interruptible(shutdown_waitq,
                                              _wait_for_empty_queues(device));
index 55e3abe..8bf2cf0 100644 (file)
@@ -127,15 +127,15 @@ void dasd_gendisk_free(struct dasd_block *block)
  */
 int dasd_scan_partitions(struct dasd_block *block)
 {
-       struct bdev_handle *bdev_handle;
+       struct file *bdev_file;
        int rc;
 
-       bdev_handle = bdev_open_by_dev(disk_devt(block->gdp), BLK_OPEN_READ,
+       bdev_file = bdev_file_open_by_dev(disk_devt(block->gdp), BLK_OPEN_READ,
                                       NULL, NULL);
-       if (IS_ERR(bdev_handle)) {
+       if (IS_ERR(bdev_file)) {
                DBF_DEV_EVENT(DBF_ERR, block->base,
                              "scan partitions error, blkdev_get returned %ld",
-                             PTR_ERR(bdev_handle));
+                             PTR_ERR(bdev_file));
                return -ENODEV;
        }
 
@@ -147,15 +147,15 @@ int dasd_scan_partitions(struct dasd_block *block)
                                "scan partitions error, rc %d", rc);
 
        /*
-        * Since the matching bdev_release() call to the
-        * bdev_open_by_path() in this function is not called before
+        * Since the matching fput() call to the
+        * bdev_file_open_by_path() in this function is not called before
         * dasd_destroy_partitions the offline open_count limit needs to be
-        * increased from 0 to 1. This is done by setting device->bdev_handle
+        * increased from 0 to 1. This is done by setting device->bdev_file
         * (see dasd_generic_set_offline). As long as the partition detection
         * is running no offline should be allowed. That is why the assignment
-        * to block->bdev_handle is done AFTER the BLKRRPART ioctl.
+        * to block->bdev_file is done AFTER the BLKRRPART ioctl.
         */
-       block->bdev_handle = bdev_handle;
+       block->bdev_file = bdev_file;
        return 0;
 }
 
@@ -165,21 +165,21 @@ int dasd_scan_partitions(struct dasd_block *block)
  */
 void dasd_destroy_partitions(struct dasd_block *block)
 {
-       struct bdev_handle *bdev_handle;
+       struct file *bdev_file;
 
        /*
-        * Get the bdev_handle pointer from the device structure and clear
-        * device->bdev_handle to lower the offline open_count limit again.
+        * Get the bdev_file pointer from the device structure and clear
+        * device->bdev_file to lower the offline open_count limit again.
         */
-       bdev_handle = block->bdev_handle;
-       block->bdev_handle = NULL;
+       bdev_file = block->bdev_file;
+       block->bdev_file = NULL;
 
-       mutex_lock(&bdev_handle->bdev->bd_disk->open_mutex);
-       bdev_disk_changed(bdev_handle->bdev->bd_disk, true);
-       mutex_unlock(&bdev_handle->bdev->bd_disk->open_mutex);
+       mutex_lock(&file_bdev(bdev_file)->bd_disk->open_mutex);
+       bdev_disk_changed(file_bdev(bdev_file)->bd_disk, true);
+       mutex_unlock(&file_bdev(bdev_file)->bd_disk->open_mutex);
 
        /* Matching blkdev_put to the blkdev_get in dasd_scan_partitions. */
-       bdev_release(bdev_handle);
+       fput(bdev_file);
 }
 
 int dasd_gendisk_init(void)
index 1b1b8a4..aecd502 100644 (file)
@@ -650,7 +650,7 @@ struct dasd_block {
        struct gendisk *gdp;
        spinlock_t request_queue_lock;
        struct blk_mq_tag_set tag_set;
-       struct bdev_handle *bdev_handle;
+       struct file *bdev_file;
        atomic_t open_count;
 
        unsigned long blocks;      /* size of volume in blocks */
index 61b9675..de85a5e 100644 (file)
@@ -537,7 +537,7 @@ static int __dasd_ioctl_information(struct dasd_block *block,
         * This must be hidden from user-space.
         */
        dasd_info->open_count = atomic_read(&block->open_count);
-       if (!block->bdev_handle)
+       if (!block->bdev_file)
                dasd_info->open_count++;
 
        /*