[dm-devel] [PATCH 1/3] md:Add a func 'dm_md_stop' for dm-raid to clear up md resources.
majianpeng
majianpeng at gmail.com
Thu Nov 15 08:46:59 UTC 2012
Because dm-raid used md driver, when stoped dm-raid it only call
md_stop. It caused some resources omited, like bitmap, mddev->bio_set.
So add a func dm_md_stop to clear up resource.
Signed-off-by: Jianpeng Ma <majianpeng at gmail.com>
---
drivers/md/md.c | 9 +++++++++
drivers/md/md.h | 1 +
2 files changed, 10 insertions(+)
diff --git a/drivers/md/md.c b/drivers/md/md.c
index 9ab768a..574b0a8 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -5306,6 +5306,15 @@ void md_stop(struct mddev *mddev)
}
EXPORT_SYMBOL_GPL(md_stop);
+void dm_md_stop(struct mddev *mddev)
+{
+ md_stop(mddev);
+ bitmap_destroy(mddev);
+ if (mddev->bio_set)
+ bioset_free(mddev->bio_set);
+}
+EXPORT_SYMBOL_GPL(dm_md_stop);
+
static int md_set_readonly(struct mddev *mddev, struct block_device *bdev)
{
int err = 0;
diff --git a/drivers/md/md.h b/drivers/md/md.h
index af443ab..a370ece 100644
--- a/drivers/md/md.h
+++ b/drivers/md/md.h
@@ -621,6 +621,7 @@ extern void md_stop(struct mddev *mddev);
extern void md_stop_writes(struct mddev *mddev);
extern int md_rdev_init(struct md_rdev *rdev);
extern void md_rdev_clear(struct md_rdev *rdev);
+extern void dm_md_stop(struct mddev *mddev);
extern void mddev_suspend(struct mddev *mddev);
extern void mddev_resume(struct mddev *mddev);
--
1.7.9.5
More information about the dm-devel
mailing list