Loading drivers/s390/block/dasd.c +5 −5 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; } Loading Loading @@ -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) Loading Loading @@ -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)); Loading drivers/s390/block/dasd_genhd.c +18 −18 Original line number Diff line number Diff line Loading @@ -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; } Loading @@ -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; } Loading @@ -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) Loading drivers/s390/block/dasd_int.h +1 −1 Original line number Diff line number Diff line Loading @@ -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 */ Loading drivers/s390/block/dasd_ioctl.c +1 −1 Original line number Diff line number Diff line Loading @@ -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++; /* Loading Loading
drivers/s390/block/dasd.c +5 −5 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; } Loading Loading @@ -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) Loading Loading @@ -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)); Loading
drivers/s390/block/dasd_genhd.c +18 −18 Original line number Diff line number Diff line Loading @@ -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; } Loading @@ -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; } Loading @@ -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) Loading
drivers/s390/block/dasd_int.h +1 −1 Original line number Diff line number Diff line Loading @@ -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 */ Loading
drivers/s390/block/dasd_ioctl.c +1 −1 Original line number Diff line number Diff line Loading @@ -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++; /* Loading