aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/md/md.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/md/md.c')
-rw-r--r--drivers/md/md.c20
1 files changed, 13 insertions, 7 deletions
diff --git a/drivers/md/md.c b/drivers/md/md.c
index 1b1d32694f6f..ee759b193e9a 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -3046,7 +3046,7 @@ action_store(mddev_t *mddev, const char *page, size_t len)
3046 } 3046 }
3047 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); 3047 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery);
3048 md_wakeup_thread(mddev->thread); 3048 md_wakeup_thread(mddev->thread);
3049 sysfs_notify(&mddev->kobj, NULL, "sync_action"); 3049 sysfs_notify_dirent(mddev->sysfs_action);
3050 return len; 3050 return len;
3051} 3051}
3052 3052
@@ -3684,6 +3684,7 @@ static int do_md_run(mddev_t * mddev)
3684 printk(KERN_WARNING 3684 printk(KERN_WARNING
3685 "md: cannot register extra attributes for %s\n", 3685 "md: cannot register extra attributes for %s\n",
3686 mdname(mddev)); 3686 mdname(mddev));
3687 mddev->sysfs_action = sysfs_get_dirent(mddev->kobj.sd, "sync_action");
3687 } else if (mddev->ro == 2) /* auto-readonly not meaningful */ 3688 } else if (mddev->ro == 2) /* auto-readonly not meaningful */
3688 mddev->ro = 0; 3689 mddev->ro = 0;
3689 3690
@@ -3754,7 +3755,8 @@ static int do_md_run(mddev_t * mddev)
3754 mddev->changed = 1; 3755 mddev->changed = 1;
3755 md_new_event(mddev); 3756 md_new_event(mddev);
3756 sysfs_notify_dirent(mddev->sysfs_state); 3757 sysfs_notify_dirent(mddev->sysfs_state);
3757 sysfs_notify(&mddev->kobj, NULL, "sync_action"); 3758 if (mddev->sysfs_action)
3759 sysfs_notify_dirent(mddev->sysfs_action);
3758 sysfs_notify(&mddev->kobj, NULL, "degraded"); 3760 sysfs_notify(&mddev->kobj, NULL, "degraded");
3759 kobject_uevent(&disk_to_dev(mddev->gendisk)->kobj, KOBJ_CHANGE); 3761 kobject_uevent(&disk_to_dev(mddev->gendisk)->kobj, KOBJ_CHANGE);
3760 return 0; 3762 return 0;
@@ -3854,9 +3856,12 @@ static int do_md_stop(mddev_t * mddev, int mode, int is_open)
3854 mddev->queue->merge_bvec_fn = NULL; 3856 mddev->queue->merge_bvec_fn = NULL;
3855 mddev->queue->unplug_fn = NULL; 3857 mddev->queue->unplug_fn = NULL;
3856 mddev->queue->backing_dev_info.congested_fn = NULL; 3858 mddev->queue->backing_dev_info.congested_fn = NULL;
3857 if (mddev->pers->sync_request) 3859 if (mddev->pers->sync_request) {
3858 sysfs_remove_group(&mddev->kobj, &md_redundancy_group); 3860 sysfs_remove_group(&mddev->kobj, &md_redundancy_group);
3859 3861 if (mddev->sysfs_action)
3862 sysfs_put(mddev->sysfs_action);
3863 mddev->sysfs_action = NULL;
3864 }
3860 module_put(mddev->pers->owner); 3865 module_put(mddev->pers->owner);
3861 mddev->pers = NULL; 3866 mddev->pers = NULL;
3862 /* tell userspace to handle 'inactive' */ 3867 /* tell userspace to handle 'inactive' */
@@ -6155,7 +6160,7 @@ void md_check_recovery(mddev_t *mddev)
6155 mddev->recovery = 0; 6160 mddev->recovery = 0;
6156 /* flag recovery needed just to double check */ 6161 /* flag recovery needed just to double check */
6157 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); 6162 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery);
6158 sysfs_notify(&mddev->kobj, NULL, "sync_action"); 6163 sysfs_notify_dirent(mddev->sysfs_action);
6159 md_new_event(mddev); 6164 md_new_event(mddev);
6160 goto unlock; 6165 goto unlock;
6161 } 6166 }
@@ -6216,7 +6221,7 @@ void md_check_recovery(mddev_t *mddev)
6216 mddev->recovery = 0; 6221 mddev->recovery = 0;
6217 } else 6222 } else
6218 md_wakeup_thread(mddev->sync_thread); 6223 md_wakeup_thread(mddev->sync_thread);
6219 sysfs_notify(&mddev->kobj, NULL, "sync_action"); 6224 sysfs_notify_dirent(mddev->sysfs_action);
6220 md_new_event(mddev); 6225 md_new_event(mddev);
6221 } 6226 }
6222 unlock: 6227 unlock:
@@ -6224,7 +6229,8 @@ void md_check_recovery(mddev_t *mddev)
6224 clear_bit(MD_RECOVERY_RUNNING, &mddev->recovery); 6229 clear_bit(MD_RECOVERY_RUNNING, &mddev->recovery);
6225 if (test_and_clear_bit(MD_RECOVERY_RECOVER, 6230 if (test_and_clear_bit(MD_RECOVERY_RECOVER,
6226 &mddev->recovery)) 6231 &mddev->recovery))
6227 sysfs_notify(&mddev->kobj, NULL, "sync_action"); 6232 if (mddev->sysfs_action)
6233 sysfs_notify_dirent(mddev->sysfs_action);
6228 } 6234 }
6229 mddev_unlock(mddev); 6235 mddev_unlock(mddev);
6230 } 6236 }