Patch "md/r5cache: move mddev_lock() out of r5c_journal_mode_set()" 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/r5cache: move mddev_lock() out of r5c_journal_mode_set()
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-r5cache-move-mddev_lock-out-of-r5c_journal_mode_set.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
ff35f58e8f8eb520367879a0ccc6f2ec4b62b17bMon Sep 17 00:00:00 2001
From: Song Liu <[email protected]>
Date: Sun, 19 Nov 2017 22:17:00 -0800
Subject: md/r5cache: move mddev_lock() out of r5c_journal_mode_set()
From: Song Liu <[email protected]>
commit ff35f58e8f8eb520367879a0ccc6f2ec4b62b17b upstream.
r5c_journal_mode_set() is called by r5c_journal_mode_store() and raid_ctr() in dm-raid. We don't need mddev_lock() when calling from raid_ctr(). This patch fixes this by moves the mddev_lock() to r5c_journal_mode_store().
--- drivers/md/raid5-cache.c | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-)
drivers/md/raid5-cache.c +9 -13
@@ -2571,31 +2571,22 @@ static ssize_t r5c_journal_mode_show(strint r5c_journal_mode_set (struct mddev *mddev,int mode) {struct r5conf *conf; -int err;if (mode <R5C_JOURNAL_MODE_WRITE_THROUGH || mode >R5C_JOURNAL_MODE_WRITE_BACK )return -EINVAL ; - err =mddev_lock (mddev); -if (err) -return err; conf = mddev->private; -if (!conf || !conf->log) { -mddev_unlock (mddev); +if (!conf || !conf->log)return -ENODEV ; - }if (raid5_calc_degraded (conf) >0 && - mode ==R5C_JOURNAL_MODE_WRITE_BACK ) { -mddev_unlock (mddev); + mode ==R5C_JOURNAL_MODE_WRITE_BACK )return -EINVAL ; - }mddev_suspend (mddev); conf->log->r5c_journal_mode = mode;mddev_resume (mddev); -mddev_unlock (mddev);pr_debug ("md/raid:%s: setting r5c cache mode to %d: %s\n" ,mdname (mddev), mode, r5c_journal_mode_str[mode]);
@@ -2608,6 +2599,7 @@ static ssize_t r5c_journal_mode_store(st {int mode =ARRAY_SIZE (r5c_journal_mode_str);size_t len = length; +int ret;if (len <2 )return -EINVAL ;
@@ -2619,8 +2611,12 @@ static ssize_t r5c_journal_mode_store(stif (strlen (r5c_journal_mode_str[mode]) == len && !strncmp (page, r5c_journal_mode_str[mode], len))break ; - -return r5c_journal_mode_set (mddev, mode) ?: length; + ret =mddev_lock (mddev); +if (ret) +return ret; + ret =r5c_journal_mode_set (mddev, mode); +mddev_unlock (mddev); +return ret ?: length; }struct md_sysfs_entry
Patches currently in stable-queue which might be from [email protected] are
queue-4.14/md-r5cache-move-mddev_lock-out-of-r5c_journal_mode_set.patch