diff options
Diffstat (limited to 'drivers/md')
-rw-r--r-- | drivers/md/md.c | 37 |
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 | ||