diff mbox series

[7/8] bcache: move the del_gendisk call out of bcache_device_free

Message ID 20210809064028.1198327-8-hch@lst.de
State New
Headers show
Series [1/8] mmc: block: let device_add_disk create disk attributes | expand

Commit Message

Christoph Hellwig Aug. 9, 2021, 6:40 a.m. UTC
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>
---
 drivers/md/bcache/super.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

Comments

Coly Li Aug. 12, 2021, 8:38 a.m. UTC | #1
On 8/9/21 2:40 PM, Christoph Hellwig wrote:
> 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>


It looks good to me.

Reviewed-by: Coly Li <colyli@suse.de>


Thanks.

Coly Li

> ---

>  drivers/md/bcache/super.c | 10 ++++------

>  1 file changed, 4 insertions(+), 6 deletions(-)

>

> diff --git a/drivers/md/bcache/super.c b/drivers/md/bcache/super.c

> index d0f08e946453..f2874c77ff79 100644

> --- a/drivers/md/bcache/super.c

> +++ b/drivers/md/bcache/super.c

> @@ -885,11 +885,6 @@ static void bcache_device_free(struct bcache_device *d)

>  		bcache_device_detach(d);

>  

>  	if (disk) {

> -		bool disk_added = (disk->flags & GENHD_FL_UP) != 0;

> -

> -		if (disk_added)

> -			del_gendisk(disk);

> -

>  		blk_cleanup_disk(disk);

>  		ida_simple_remove(&bcache_device_idx,

>  				  first_minor_to_idx(disk->first_minor));

> @@ -1371,8 +1366,10 @@ static void cached_dev_free(struct closure *cl)

>  

>  	mutex_lock(&bch_register_lock);

>  

> -	if (atomic_read(&dc->running))

> +	if (atomic_read(&dc->running)) {

>  		bd_unlink_disk_holder(dc->bdev, dc->disk.disk);

> +		del_gendisk(dc->disk.disk);

> +	}

>  	bcache_device_free(&dc->disk);

>  	list_del(&dc->list);

>  

> @@ -1518,6 +1515,7 @@ static void flash_dev_free(struct closure *cl)

>  	mutex_lock(&bch_register_lock);

>  	atomic_long_sub(bcache_dev_sectors_dirty(d),

>  			&d->c->flash_dev_dirty_sectors);

> +	del_gendisk(d->disk);

>  	bcache_device_free(d);

>  	mutex_unlock(&bch_register_lock);

>  	kobject_put(&d->kobj);
diff mbox series

Patch

diff --git a/drivers/md/bcache/super.c b/drivers/md/bcache/super.c
index d0f08e946453..f2874c77ff79 100644
--- a/drivers/md/bcache/super.c
+++ b/drivers/md/bcache/super.c
@@ -885,11 +885,6 @@  static void bcache_device_free(struct bcache_device *d)
 		bcache_device_detach(d);
 
 	if (disk) {
-		bool disk_added = (disk->flags & GENHD_FL_UP) != 0;
-
-		if (disk_added)
-			del_gendisk(disk);
-
 		blk_cleanup_disk(disk);
 		ida_simple_remove(&bcache_device_idx,
 				  first_minor_to_idx(disk->first_minor));
@@ -1371,8 +1366,10 @@  static void cached_dev_free(struct closure *cl)
 
 	mutex_lock(&bch_register_lock);
 
-	if (atomic_read(&dc->running))
+	if (atomic_read(&dc->running)) {
 		bd_unlink_disk_holder(dc->bdev, dc->disk.disk);
+		del_gendisk(dc->disk.disk);
+	}
 	bcache_device_free(&dc->disk);
 	list_del(&dc->list);
 
@@ -1518,6 +1515,7 @@  static void flash_dev_free(struct closure *cl)
 	mutex_lock(&bch_register_lock);
 	atomic_long_sub(bcache_dev_sectors_dirty(d),
 			&d->c->flash_dev_dirty_sectors);
+	del_gendisk(d->disk);
 	bcache_device_free(d);
 	mutex_unlock(&bch_register_lock);
 	kobject_put(&d->kobj);