diff options
author | Andre Noll <maan@systemlinux.org> | 2008-07-11 22:02:21 +1000 |
---|---|---|
committer | Neil Brown <neilb@suse.de> | 2008-07-11 22:02:21 +1000 |
commit | 80fab1d77b2852711917baa437e4fdab31c21fef (patch) | |
tree | ee5fb082245d49780a890c09a3ba23c714fc4359 /drivers/md/md.c | |
parent | ebc243372842a81dddbe00bd047a25b8ee7d8b87 (diff) | |
download | linux-80fab1d77b2852711917baa437e4fdab31c21fef.tar.bz2 |
md: Simplify restart_array().
Signed-off-by: Andre Noll <maan@systemlinux.org>
Signed-off-by: Neil Brown <neilb@suse.de>
Diffstat (limited to 'drivers/md/md.c')
-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) static int restart_array(mddev_t *mddev) { struct gendisk *disk = mddev->gendisk; - int err; - /* - * Complain if it has no devices - */ - err = -ENXIO; + /* Complain if it has no devices */ if (list_empty(&mddev->disks)) - goto out; - - if (mddev->pers) { - err = -EBUSY; - if (!mddev->ro) - goto out; - - mddev->safemode = 0; - mddev->ro = 0; - set_disk_ro(disk, 0); - - printk(KERN_INFO "md: %s switched to read-write mode.\n", - mdname(mddev)); - /* - * Kick recovery or resync if necessary - */ - set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); - md_wakeup_thread(mddev->thread); - md_wakeup_thread(mddev->sync_thread); - err = 0; - sysfs_notify(&mddev->kobj, NULL, "array_state"); - - } else - err = -EINVAL; - -out: - return err; + return -ENXIO; + if (!mddev->pers) + return -EINVAL; + if (!mddev->ro) + return -EBUSY; + mddev->safemode = 0; + mddev->ro = 0; + set_disk_ro(disk, 0); + printk(KERN_INFO "md: %s switched to read-write mode.\n", + mdname(mddev)); + /* Kick recovery or resync if necessary */ + set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); + md_wakeup_thread(mddev->thread); + md_wakeup_thread(mddev->sync_thread); + sysfs_notify(&mddev->kobj, NULL, "array_state"); + return 0; } /* similar to deny_write_access, but accounts for our holding a reference |