|
|
@@ -4123,7 +4123,7 @@ array_state_show(struct mddev *mddev, char *page)
|
|
|
{
|
|
|
enum array_state st = inactive;
|
|
|
|
|
|
- if (mddev->pers)
|
|
|
+ if (mddev->pers && !test_bit(MD_NOT_READY, &mddev->flags))
|
|
|
switch(mddev->ro) {
|
|
|
case 1:
|
|
|
st = readonly;
|
|
|
@@ -5678,9 +5678,6 @@ int md_run(struct mddev *mddev)
|
|
|
md_update_sb(mddev, 0);
|
|
|
|
|
|
md_new_event(mddev);
|
|
|
- sysfs_notify_dirent_safe(mddev->sysfs_state);
|
|
|
- sysfs_notify_dirent_safe(mddev->sysfs_action);
|
|
|
- sysfs_notify(&mddev->kobj, NULL, "degraded");
|
|
|
return 0;
|
|
|
|
|
|
abort:
|
|
|
@@ -5694,6 +5691,7 @@ static int do_md_run(struct mddev *mddev)
|
|
|
{
|
|
|
int err;
|
|
|
|
|
|
+ set_bit(MD_NOT_READY, &mddev->flags);
|
|
|
err = md_run(mddev);
|
|
|
if (err)
|
|
|
goto out;
|
|
|
@@ -5714,9 +5712,14 @@ static int do_md_run(struct mddev *mddev)
|
|
|
|
|
|
set_capacity(mddev->gendisk, mddev->array_sectors);
|
|
|
revalidate_disk(mddev->gendisk);
|
|
|
+ clear_bit(MD_NOT_READY, &mddev->flags);
|
|
|
mddev->changed = 1;
|
|
|
kobject_uevent(&disk_to_dev(mddev->gendisk)->kobj, KOBJ_CHANGE);
|
|
|
+ sysfs_notify_dirent_safe(mddev->sysfs_state);
|
|
|
+ sysfs_notify_dirent_safe(mddev->sysfs_action);
|
|
|
+ sysfs_notify(&mddev->kobj, NULL, "degraded");
|
|
|
out:
|
|
|
+ clear_bit(MD_NOT_READY, &mddev->flags);
|
|
|
return err;
|
|
|
}
|
|
|
|