mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-23 04:54:01 +08:00
bcache: move the del_gendisk call out of bcache_device_free
Let the callers call del_gendisk so that we can check if add_disk has been called properly for the cached device case instead of relying on the block layer internal GENHD_FL_UP flag. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Coly Li <colyli@suse.de> Link: https://lore.kernel.org/r/20210809064028.1198327-8-hch@lst.de Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
224b068322
commit
b75f4aed88
@ -885,11 +885,6 @@ static void bcache_device_free(struct bcache_device *d)
|
|||||||
bcache_device_detach(d);
|
bcache_device_detach(d);
|
||||||
|
|
||||||
if (disk) {
|
if (disk) {
|
||||||
bool disk_added = (disk->flags & GENHD_FL_UP) != 0;
|
|
||||||
|
|
||||||
if (disk_added)
|
|
||||||
del_gendisk(disk);
|
|
||||||
|
|
||||||
blk_cleanup_disk(disk);
|
blk_cleanup_disk(disk);
|
||||||
ida_simple_remove(&bcache_device_idx,
|
ida_simple_remove(&bcache_device_idx,
|
||||||
first_minor_to_idx(disk->first_minor));
|
first_minor_to_idx(disk->first_minor));
|
||||||
@ -1371,8 +1366,10 @@ static void cached_dev_free(struct closure *cl)
|
|||||||
|
|
||||||
mutex_lock(&bch_register_lock);
|
mutex_lock(&bch_register_lock);
|
||||||
|
|
||||||
if (atomic_read(&dc->running))
|
if (atomic_read(&dc->running)) {
|
||||||
bd_unlink_disk_holder(dc->bdev, dc->disk.disk);
|
bd_unlink_disk_holder(dc->bdev, dc->disk.disk);
|
||||||
|
del_gendisk(dc->disk.disk);
|
||||||
|
}
|
||||||
bcache_device_free(&dc->disk);
|
bcache_device_free(&dc->disk);
|
||||||
list_del(&dc->list);
|
list_del(&dc->list);
|
||||||
|
|
||||||
@ -1518,6 +1515,7 @@ static void flash_dev_free(struct closure *cl)
|
|||||||
mutex_lock(&bch_register_lock);
|
mutex_lock(&bch_register_lock);
|
||||||
atomic_long_sub(bcache_dev_sectors_dirty(d),
|
atomic_long_sub(bcache_dev_sectors_dirty(d),
|
||||||
&d->c->flash_dev_dirty_sectors);
|
&d->c->flash_dev_dirty_sectors);
|
||||||
|
del_gendisk(d->disk);
|
||||||
bcache_device_free(d);
|
bcache_device_free(d);
|
||||||
mutex_unlock(&bch_register_lock);
|
mutex_unlock(&bch_register_lock);
|
||||||
kobject_put(&d->kobj);
|
kobject_put(&d->kobj);
|
||||||
|
Loading…
Reference in New Issue
Block a user