Patch "md: don't check MD_SB_CHANGE_CLEAN in md_allow_write" has been added to the 4.14-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
md: don't check MD_SB_CHANGE_CLEAN in md_allow_write
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
md-don-t-check-md_sb_change_clean-in-md_allow_write.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
b90f6ff080c52e2f05364210733df120e3c4e597Mon Sep 17 00:00:00 2001
From: Artur Paszkiewicz <[email protected]>
Date: Thu, 26 Oct 2017 15:56:54 +0200
Subject: md: don't check MD_SB_CHANGE_CLEAN in md_allow_write
From: Artur Paszkiewicz <[email protected]>
commit b90f6ff080c52e2f05364210733df120e3c4e597 upstream.
Only MD_SB_CHANGE_PENDING should be used to wait for transition from clean to dirty. Checking also MD_SB_CHANGE_CLEAN is unnecessary and can race with e.g. md_do_sync(). This sporadically causes a hang when changing consistency policy during resync:
INFO: task mdadm:6183 blocked for more than 30 seconds.
Not tainted 4.14.0-rc3+ #391
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
mdadm D12752 6183 6022 0x00000000
Call Trace:
__schedule+0x93f/0x990
schedule+0x6b/0x90
md_allow_write+0x100/0x130 [md_mod]
? do_wait_intr_irq+0x90/0x90
resize_stripes+0x3a/0x5b0 [raid456]
? kernfs_fop_write+0xbe/0x180
raid5_change_consistency_policy+0xa6/0x200 [raid456]
consistency_policy_store+0x2e/0x70 [md_mod]
md_attr_store+0x90/0xc0 [md_mod]
sysfs_kf_write+0x42/0x50
kernfs_fop_write+0x119/0x180
__vfs_write+0x28/0x110
? rcu_sync_lockdep_assert+0x12/0x60
? __sb_start_write+0x15a/0x1c0
? vfs_write+0xa3/0x1a0
vfs_write+0xb4/0x1a0
SyS_write+0x49/0xa0
entry_SYSCALL_64_fastpath+0x18/0xad--- drivers/md/md.c | 1 - 1 file changed, 1 deletion(-)
drivers/md/md.c +0 -1
@@ -8111,7 +8111,6 @@ void md_allow_write(struct mddev *mddev)sysfs_notify_dirent_safe (mddev->sysfs_state);/* wait for the dirty state to be recorded in the metadata */ wait_event (mddev->sb_wait, - !test_bit (MD_SB_CHANGE_CLEAN , &mddev->sb_flags) && !test_bit (MD_SB_CHANGE_PENDING , &mddev->sb_flags)); }else spin_unlock (&mddev->lock);
Patches currently in stable-queue which might be from [email protected] are
queue-4.14/md-don-t-check-md_sb_change_clean-in-md_allow_write.patch