summaryrefslogtreecommitdiffstats
path: root/drivers/md/md.c
diff options
context:
space:
mode:
authorShaohua Li2016-11-21 19:29:19 +0100
committerShaohua Li2016-11-24 04:30:25 +0100
commit034e33f5eda3c61edb838471f69ec42d64e1e94e (patch)
treede4cf540bbc599d64105a06a5b7d259363ca8db7 /drivers/md/md.c
parentraid5-cache: suspend reclaim thread instead of shutdown (diff)
downloadkernel-qcow2-linux-034e33f5eda3c61edb838471f69ec42d64e1e94e.tar.gz
kernel-qcow2-linux-034e33f5eda3c61edb838471f69ec42d64e1e94e.tar.xz
kernel-qcow2-linux-034e33f5eda3c61edb838471f69ec42d64e1e94e.zip
md: stop write should stop journal reclaim
__md_stop_writes currently doesn't stop raid5-cache reclaim thread. It's possible the reclaim thread is still running and doing write, which doesn't match what __md_stop_writes should do. The extra ->quiesce() call should not harm any raid types. For raid5-cache, this will guarantee we reclaim all caches before we update superblock. Signed-off-by: Shaohua Li <shli@fb.com> Reviewed-by: NeilBrown <neilb@suse.de> Cc: Song Liu <songliubraving@fb.com>
Diffstat (limited to 'drivers/md/md.c')
-rw-r--r--drivers/md/md.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/md/md.c b/drivers/md/md.c
index 297757a0ec0c..c7894fbbd8e5 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -5517,6 +5517,10 @@ static void __md_stop_writes(struct mddev *mddev)
del_timer_sync(&mddev->safemode_timer);
+ if (mddev->pers && mddev->pers->quiesce) {
+ mddev->pers->quiesce(mddev, 1);
+ mddev->pers->quiesce(mddev, 0);
+ }
bitmap_flush(mddev);
if (mddev->ro == 0 &&