aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/md
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/md')
-rw-r--r--drivers/md/md.c37
1 files changed, 15 insertions, 22 deletions
diff --git a/drivers/md/md.c b/drivers/md/md.c
index ce88755baf4a..115a6dd85837 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -8157,30 +8157,23 @@ static int md_notify_reboot(struct notifier_block *this,
8157 struct mddev *mddev; 8157 struct mddev *mddev;
8158 int need_delay = 0; 8158 int need_delay = 0;
8159 8159
8160 if ((code == SYS_DOWN) || (code == SYS_HALT) || (code == SYS_POWER_OFF)) { 8160 for_each_mddev(mddev, tmp) {
8161 8161 if (mddev_trylock(mddev)) {
8162 printk(KERN_INFO "md: stopping all md devices.\n"); 8162 __md_stop_writes(mddev);
8163 8163 mddev->safemode = 2;
8164 for_each_mddev(mddev, tmp) { 8164 mddev_unlock(mddev);
8165 if (mddev_trylock(mddev)) {
8166 /* Force a switch to readonly even array
8167 * appears to still be in use. Hence
8168 * the '100'.
8169 */
8170 md_set_readonly(mddev, 100);
8171 mddev_unlock(mddev);
8172 }
8173 need_delay = 1;
8174 } 8165 }
8175 /* 8166 need_delay = 1;
8176 * certain more exotic SCSI devices are known to be
8177 * volatile wrt too early system reboots. While the
8178 * right place to handle this issue is the given
8179 * driver, we do want to have a safe RAID driver ...
8180 */
8181 if (need_delay)
8182 mdelay(1000*1);
8183 } 8167 }
8168 /*
8169 * certain more exotic SCSI devices are known to be
8170 * volatile wrt too early system reboots. While the
8171 * right place to handle this issue is the given
8172 * driver, we do want to have a safe RAID driver ...
8173 */
8174 if (need_delay)
8175 mdelay(1000*1);
8176
8184 return NOTIFY_DONE; 8177 return NOTIFY_DONE;
8185} 8178}
8186 8179