From 6a8e540ce324194436ca76fdd2f44b767e59efc5 Mon Sep 17 00:00:00 2001 From: NeilBrown Date: Mon, 19 Nov 2012 10:47:48 +1100 Subject: [PATCH] --- yaml --- r: 335969 b: refs/heads/master c: 5eff3c439d3478ba9e8ba5f8c0aaf6e6fadb6e58 h: refs/heads/master i: 335967: c59b778ffb41d650486a538e1dc7763ea2258a0a v: v3 --- [refs] | 2 +- trunk/drivers/md/md.c | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 2da3f2741797..9cf8958fe08d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 35f9ac2dcec8f79d7059ce174fd7b7ee3290d620 +refs/heads/master: 5eff3c439d3478ba9e8ba5f8c0aaf6e6fadb6e58 diff --git a/trunk/drivers/md/md.c b/trunk/drivers/md/md.c index 4c7d880a60a4..61200717687b 100644 --- a/trunk/drivers/md/md.c +++ b/trunk/drivers/md/md.c @@ -5294,7 +5294,7 @@ void md_stop_writes(struct mddev *mddev) } EXPORT_SYMBOL_GPL(md_stop_writes); -void md_stop(struct mddev *mddev) +static void __md_stop(struct mddev *mddev) { mddev->ready = 0; mddev->pers->stop(mddev); @@ -5304,6 +5304,18 @@ void md_stop(struct mddev *mddev) mddev->pers = NULL; clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery); } + +void md_stop(struct mddev *mddev) +{ + /* stop the array and free an attached data structures. + * This is called from dm-raid + */ + __md_stop(mddev); + bitmap_destroy(mddev); + if (mddev->bio_set) + bioset_free(mddev->bio_set); +} + EXPORT_SYMBOL_GPL(md_stop); static int md_set_readonly(struct mddev *mddev, struct block_device *bdev) @@ -5364,7 +5376,7 @@ static int do_md_stop(struct mddev * mddev, int mode, set_disk_ro(disk, 0); __md_stop_writes(mddev); - md_stop(mddev); + __md_stop(mddev); mddev->queue->merge_bvec_fn = NULL; mddev->queue->backing_dev_info.congested_fn = NULL;