md: implement ->free_disk
Ensure that all private data is only freed once all accesses are done. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Logan Gunthorpe <logang@deltatee.com> Reviewed-by: Hannes Reinecke <hare@suse.de> Signed-off-by: Song Liu <song@kernel.org> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
c57094a6e1
commit
e8c59ac419
|
@ -5600,12 +5600,6 @@ static void md_free(struct kobject *ko)
|
||||||
|
|
||||||
del_gendisk(mddev->gendisk);
|
del_gendisk(mddev->gendisk);
|
||||||
put_disk(mddev->gendisk);
|
put_disk(mddev->gendisk);
|
||||||
|
|
||||||
percpu_ref_exit(&mddev->writes_pending);
|
|
||||||
|
|
||||||
bioset_exit(&mddev->bio_set);
|
|
||||||
bioset_exit(&mddev->sync_set);
|
|
||||||
kfree(mddev);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct sysfs_ops md_sysfs_ops = {
|
static const struct sysfs_ops md_sysfs_ops = {
|
||||||
|
@ -7875,6 +7869,17 @@ static unsigned int md_check_events(struct gendisk *disk, unsigned int clearing)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void md_free_disk(struct gendisk *disk)
|
||||||
|
{
|
||||||
|
struct mddev *mddev = disk->private_data;
|
||||||
|
|
||||||
|
percpu_ref_exit(&mddev->writes_pending);
|
||||||
|
bioset_exit(&mddev->bio_set);
|
||||||
|
bioset_exit(&mddev->sync_set);
|
||||||
|
|
||||||
|
kfree(mddev);
|
||||||
|
}
|
||||||
|
|
||||||
const struct block_device_operations md_fops =
|
const struct block_device_operations md_fops =
|
||||||
{
|
{
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
|
@ -7888,6 +7893,7 @@ const struct block_device_operations md_fops =
|
||||||
.getgeo = md_getgeo,
|
.getgeo = md_getgeo,
|
||||||
.check_events = md_check_events,
|
.check_events = md_check_events,
|
||||||
.set_read_only = md_set_read_only,
|
.set_read_only = md_set_read_only,
|
||||||
|
.free_disk = md_free_disk,
|
||||||
};
|
};
|
||||||
|
|
||||||
static int md_thread(void *arg)
|
static int md_thread(void *arg)
|
||||||
|
|
Loading…
Reference in New Issue