Commit 1b172e0b authored by Yu Kuai's avatar Yu Kuai Committed by Song Liu
Browse files

md/raid5-cache: use new apis to suspend array



Convert to use new apis, the old apis will be removed eventually.

Signed-off-by: default avatarYu Kuai <yukuai3@huawei.com>
Signed-off-by: default avatarSong Liu <song@kernel.org>
Link: https://lore.kernel.org/r/20231010151958.145896-9-yukuai1@huaweicloud.com
parent 3cddf86a
Loading
Loading
Loading
Loading
+8 −11
Original line number Diff line number Diff line
@@ -686,7 +686,6 @@ static void r5c_disable_writeback_async(struct work_struct *work)
					   disable_writeback_work);
	struct mddev *mddev = log->rdev->mddev;
	struct r5conf *conf = mddev->private;
	int locked = 0;

	if (log->r5c_journal_mode == R5C_JOURNAL_MODE_WRITE_THROUGH)
		return;
@@ -696,13 +695,13 @@ static void r5c_disable_writeback_async(struct work_struct *work)
	/* wait superblock change before suspend */
	wait_event(mddev->sb_wait,
		   !READ_ONCE(conf->log) ||
		   (!test_bit(MD_SB_CHANGE_PENDING, &mddev->sb_flags) &&
		    (locked = mddev_trylock(mddev))));
	if (locked) {
		mddev_suspend(mddev);
		   !test_bit(MD_SB_CHANGE_PENDING, &mddev->sb_flags));

	log = READ_ONCE(conf->log);
	if (log) {
		__mddev_suspend(mddev, false);
		log->r5c_journal_mode = R5C_JOURNAL_MODE_WRITE_THROUGH;
		mddev_resume(mddev);
		mddev_unlock(mddev);
		__mddev_resume(mddev);
	}
}

@@ -2586,9 +2585,7 @@ int r5c_journal_mode_set(struct mddev *mddev, int mode)
	    mode == R5C_JOURNAL_MODE_WRITE_BACK)
		return -EINVAL;

	mddev_suspend(mddev);
	conf->log->r5c_journal_mode = mode;
	mddev_resume(mddev);

	pr_debug("md/raid:%s: setting r5c cache mode to %d: %s\n",
		 mdname(mddev), mode, r5c_journal_mode_str[mode]);
@@ -2613,11 +2610,11 @@ static ssize_t r5c_journal_mode_store(struct mddev *mddev,
		if (strlen(r5c_journal_mode_str[mode]) == len &&
		    !strncmp(page, r5c_journal_mode_str[mode], len))
			break;
	ret = mddev_lock(mddev);
	ret = mddev_suspend_and_lock(mddev);
	if (ret)
		return ret;
	ret = r5c_journal_mode_set(mddev, mode);
	mddev_unlock(mddev);
	mddev_unlock_and_resume(mddev);
	return ret ?: length;
}