diff options
Diffstat (limited to 'drivers/md')
-rw-r--r-- | drivers/md/md.c | 49 |
1 files changed, 17 insertions, 32 deletions
diff --git a/drivers/md/md.c b/drivers/md/md.c index 9756ea0a19b9..bd1dc72ae522 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c | |||
@@ -3766,40 +3766,25 @@ static int do_md_run(mddev_t * mddev) | |||
3766 | static int restart_array(mddev_t *mddev) | 3766 | static int restart_array(mddev_t *mddev) |
3767 | { | 3767 | { |
3768 | struct gendisk *disk = mddev->gendisk; | 3768 | struct gendisk *disk = mddev->gendisk; |
3769 | int err; | ||
3770 | 3769 | ||
3771 | /* | 3770 | /* Complain if it has no devices */ |
3772 | * Complain if it has no devices | ||
3773 | */ | ||
3774 | err = -ENXIO; | ||
3775 | if (list_empty(&mddev->disks)) | 3771 | if (list_empty(&mddev->disks)) |
3776 | goto out; | 3772 | return -ENXIO; |
3777 | 3773 | if (!mddev->pers) | |
3778 | if (mddev->pers) { | 3774 | return -EINVAL; |
3779 | err = -EBUSY; | 3775 | if (!mddev->ro) |
3780 | if (!mddev->ro) | 3776 | return -EBUSY; |
3781 | goto out; | 3777 | mddev->safemode = 0; |
3782 | 3778 | mddev->ro = 0; | |
3783 | mddev->safemode = 0; | 3779 | set_disk_ro(disk, 0); |
3784 | mddev->ro = 0; | 3780 | printk(KERN_INFO "md: %s switched to read-write mode.\n", |
3785 | set_disk_ro(disk, 0); | 3781 | mdname(mddev)); |
3786 | 3782 | /* Kick recovery or resync if necessary */ | |
3787 | printk(KERN_INFO "md: %s switched to read-write mode.\n", | 3783 | set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); |
3788 | mdname(mddev)); | 3784 | md_wakeup_thread(mddev->thread); |
3789 | /* | 3785 | md_wakeup_thread(mddev->sync_thread); |
3790 | * Kick recovery or resync if necessary | 3786 | sysfs_notify(&mddev->kobj, NULL, "array_state"); |
3791 | */ | 3787 | return 0; |
3792 | set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); | ||
3793 | md_wakeup_thread(mddev->thread); | ||
3794 | md_wakeup_thread(mddev->sync_thread); | ||
3795 | err = 0; | ||
3796 | sysfs_notify(&mddev->kobj, NULL, "array_state"); | ||
3797 | |||
3798 | } else | ||
3799 | err = -EINVAL; | ||
3800 | |||
3801 | out: | ||
3802 | return err; | ||
3803 | } | 3788 | } |
3804 | 3789 | ||
3805 | /* similar to deny_write_access, but accounts for our holding a reference | 3790 | /* similar to deny_write_access, but accounts for our holding a reference |