@@ -8935,8 +8935,7 @@ int rdev_clear_badblocks(struct md_rdev *rdev, sector_t s, int sectors,
}
EXPORT_SYMBOL_GPL(rdev_clear_badblocks);
-static int md_notify_reboot(struct notifier_block *this,
- unsigned long code, void *x)
+static void md_stop_all_writes(void)
{
struct list_head *tmp;
struct mddev *mddev;
@@ -8960,11 +8959,17 @@ static int md_notify_reboot(struct notifier_block *this,
*/
if (need_delay)
mdelay(1000*1);
+}
+
+static int md_notify_reboot(struct notifier_block *this,
+ unsigned long code, void *x)
+{
+ md_stop_all_writes();
return NOTIFY_DONE;
}
-static struct notifier_block md_notifier = {
+static struct notifier_block md_reboot_notifier = {
.notifier_call = md_notify_reboot,
.next = NULL,
.priority = INT_MAX, /* before any real devices */
@@ -9001,7 +9006,7 @@ static int __init md_init(void)
blk_register_region(MKDEV(mdp_major, 0), 1UL<<MINORBITS, THIS_MODULE,
md_probe, NULL, NULL);
- register_reboot_notifier(&md_notifier);
+ register_reboot_notifier(&md_reboot_notifier);
raid_table_header = register_sysctl_table(raid_root_table);
md_geninit();
@@ -9241,7 +9246,7 @@ static __exit void md_exit(void)
unregister_blkdev(MD_MAJOR,"md");
unregister_blkdev(mdp_major, "mdp");
- unregister_reboot_notifier(&md_notifier);
+ unregister_reboot_notifier(&md_reboot_notifier);
unregister_sysctl_table(raid_table_header);
/* We cannot unload the modules while some process is
Introduce md_stop_all_writes() because the next patch will add a second caller for this function. Rename md_notifier into md_reboot_notifier to avoid that the name of this notifier will become confusing due to the next patch. This patch does not change any functionality. Signed-off-by: Bart Van Assche <bart.vanassche@wdc.com> Cc: Shaohua Li <shli@kernel.org> Cc: linux-raid@vger.kernel.org Cc: Ming Lei <ming.lei@redhat.com> Cc: Christoph Hellwig <hch@lst.de> Cc: Hannes Reinecke <hare@suse.com> Cc: Johannes Thumshirn <jthumshirn@suse.de> --- drivers/md/md.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-)