aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/md/md.c
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2010-03-31 21:08:16 -0400
committerNeilBrown <neilb@suse.de>2010-05-18 01:27:54 -0400
commitcca9cf90c504d98644ace52c474770970729f0eb (patch)
treed825b55dc2f8742b210479d2af1804b5b31dd791 /drivers/md/md.c
parenta4bd82d0d03b1485975579f131ccfd0aad6b7d6e (diff)
md: call md_stop_writes from md_stop
This moves the call to the other side of set_readonly, but that should not be an issue. This encapsulates in 'md_stop' all of the functionality for internally stopping the array, leaving all the interactions with externalities (sysfs, request_queue, gendisk) in do_md_stop. Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'drivers/md/md.c')
-rw-r--r--drivers/md/md.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/drivers/md/md.c b/drivers/md/md.c
index 3a2710a2e104..f48ba419cd7b 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -4634,12 +4634,14 @@ static void md_stop_writes(mddev_t *mddev)
4634 4634
4635static void md_stop(mddev_t *mddev) 4635static void md_stop(mddev_t *mddev)
4636{ 4636{
4637 md_stop_writes(mddev);
4638
4637 mddev->pers->stop(mddev); 4639 mddev->pers->stop(mddev);
4638 if (mddev->pers->sync_request && mddev->to_remove == NULL) 4640 if (mddev->pers->sync_request && mddev->to_remove == NULL)
4639 mddev->to_remove = &md_redundancy_group; 4641 mddev->to_remove = &md_redundancy_group;
4640 module_put(mddev->pers->owner); 4642 module_put(mddev->pers->owner);
4641 mddev->pers = NULL; 4643 mddev->pers = NULL;
4642 4644 clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery);
4643} 4645}
4644 4646
4645static int md_set_readonly(mddev_t *mddev, int is_open) 4647static int md_set_readonly(mddev_t *mddev, int is_open)
@@ -4684,8 +4686,6 @@ static int do_md_stop(mddev_t * mddev, int mode, int is_open)
4684 err = -EBUSY; 4686 err = -EBUSY;
4685 } else if (mddev->pers) { 4687 } else if (mddev->pers) {
4686 4688
4687 md_stop_writes(mddev);
4688
4689 if (mddev->ro) 4689 if (mddev->ro)
4690 set_disk_ro(disk, 0); 4690 set_disk_ro(disk, 0);
4691 4691
@@ -4710,7 +4710,6 @@ static int do_md_stop(mddev_t * mddev, int mode, int is_open)
4710 if (mddev->ro) 4710 if (mddev->ro)
4711 mddev->ro = 0; 4711 mddev->ro = 0;
4712 4712
4713 clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery);
4714 err = 0; 4713 err = 0;
4715 } 4714 }
4716 mutex_unlock(&mddev->open_mutex); 4715 mutex_unlock(&mddev->open_mutex);