|
@@ -8157,30 +8157,23 @@ static int md_notify_reboot(struct notifier_block *this,
|
|
|
struct mddev *mddev;
|
|
|
int need_delay = 0;
|
|
|
|
|
|
- if ((code == SYS_DOWN) || (code == SYS_HALT) || (code == SYS_POWER_OFF)) {
|
|
|
-
|
|
|
- printk(KERN_INFO "md: stopping all md devices.\n");
|
|
|
-
|
|
|
- for_each_mddev(mddev, tmp) {
|
|
|
- if (mddev_trylock(mddev)) {
|
|
|
- /* Force a switch to readonly even array
|
|
|
- * appears to still be in use. Hence
|
|
|
- * the '100'.
|
|
|
- */
|
|
|
- md_set_readonly(mddev, 100);
|
|
|
- mddev_unlock(mddev);
|
|
|
- }
|
|
|
- need_delay = 1;
|
|
|
+ for_each_mddev(mddev, tmp) {
|
|
|
+ if (mddev_trylock(mddev)) {
|
|
|
+ __md_stop_writes(mddev);
|
|
|
+ mddev->safemode = 2;
|
|
|
+ mddev_unlock(mddev);
|
|
|
}
|
|
|
- /*
|
|
|
- * certain more exotic SCSI devices are known to be
|
|
|
- * volatile wrt too early system reboots. While the
|
|
|
- * right place to handle this issue is the given
|
|
|
- * driver, we do want to have a safe RAID driver ...
|
|
|
- */
|
|
|
- if (need_delay)
|
|
|
- mdelay(1000*1);
|
|
|
+ need_delay = 1;
|
|
|
}
|
|
|
+ /*
|
|
|
+ * certain more exotic SCSI devices are known to be
|
|
|
+ * volatile wrt too early system reboots. While the
|
|
|
+ * right place to handle this issue is the given
|
|
|
+ * driver, we do want to have a safe RAID driver ...
|
|
|
+ */
|
|
|
+ if (need_delay)
|
|
|
+ mdelay(1000*1);
|
|
|
+
|
|
|
return NOTIFY_DONE;
|
|
|
}
|
|
|
|