Message ID | 20240123-vfs-bdev-file-v2-16-adbd023e19cc@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Open block devices as files | expand |
On Tue 23-01-24 14:26:33, Christian Brauner wrote: > Signed-off-by: Christian Brauner <brauner@kernel.org> Looks good. Feel free to add: Reviewed-by: Jan Kara <jack@suse.cz> Honza > --- > drivers/s390/block/dasd.c | 10 +++++----- > drivers/s390/block/dasd_genhd.c | 36 ++++++++++++++++++------------------ > drivers/s390/block/dasd_int.h | 2 +- > drivers/s390/block/dasd_ioctl.c | 2 +- > 4 files changed, 25 insertions(+), 25 deletions(-) > > diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c > index 7327e81352e9..c833a7c7d7b2 100644 > --- a/drivers/s390/block/dasd.c > +++ b/drivers/s390/block/dasd.c > @@ -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)); > diff --git a/drivers/s390/block/dasd_genhd.c b/drivers/s390/block/dasd_genhd.c > index 55e3abe94cde..8bf2cf0ccc15 100644 > --- a/drivers/s390/block/dasd_genhd.c > +++ b/drivers/s390/block/dasd_genhd.c > @@ -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) > diff --git a/drivers/s390/block/dasd_int.h b/drivers/s390/block/dasd_int.h > index 1b1b8a41c4d4..aecd502aec51 100644 > --- a/drivers/s390/block/dasd_int.h > +++ b/drivers/s390/block/dasd_int.h > @@ -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 */ > diff --git a/drivers/s390/block/dasd_ioctl.c b/drivers/s390/block/dasd_ioctl.c > index 61b9675e2a67..de85a5e4e21b 100644 > --- a/drivers/s390/block/dasd_ioctl.c > +++ b/drivers/s390/block/dasd_ioctl.c > @@ -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++; > > /* > > -- > 2.43.0 >
diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c index 7327e81352e9..c833a7c7d7b2 100644 --- a/drivers/s390/block/dasd.c +++ b/drivers/s390/block/dasd.c @@ -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)); diff --git a/drivers/s390/block/dasd_genhd.c b/drivers/s390/block/dasd_genhd.c index 55e3abe94cde..8bf2cf0ccc15 100644 --- a/drivers/s390/block/dasd_genhd.c +++ b/drivers/s390/block/dasd_genhd.c @@ -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) diff --git a/drivers/s390/block/dasd_int.h b/drivers/s390/block/dasd_int.h index 1b1b8a41c4d4..aecd502aec51 100644 --- a/drivers/s390/block/dasd_int.h +++ b/drivers/s390/block/dasd_int.h @@ -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 */ diff --git a/drivers/s390/block/dasd_ioctl.c b/drivers/s390/block/dasd_ioctl.c index 61b9675e2a67..de85a5e4e21b 100644 --- a/drivers/s390/block/dasd_ioctl.c +++ b/drivers/s390/block/dasd_ioctl.c @@ -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++; /*
Signed-off-by: Christian Brauner <brauner@kernel.org> --- drivers/s390/block/dasd.c | 10 +++++----- drivers/s390/block/dasd_genhd.c | 36 ++++++++++++++++++------------------ drivers/s390/block/dasd_int.h | 2 +- drivers/s390/block/dasd_ioctl.c | 2 +- 4 files changed, 25 insertions(+), 25 deletions(-)