md: merge mddev serialize_policy into mddev_flags

There is not need to use a separate field in struct mddev, there are no
functional changes.

Link: https://lore.kernel.org/linux-raid/20260114171241.3043364-5-yukuai@fnnas.com
Signed-off-by: Yu Kuai <yukuai@fnnas.com>
Reviewed-by: Li Nan <linan122@huawei.com>
This commit is contained in:
Yu Kuai
2026-01-15 01:12:32 +08:00
parent 4f6d2e648c
commit 10787568cc
6 changed files with 22 additions and 16 deletions

View File

@@ -279,7 +279,8 @@ void mddev_destroy_serial_pool(struct mddev *mddev, struct md_rdev *rdev)
rdev_for_each(temp, mddev) {
if (!rdev) {
if (!mddev->serialize_policy ||
if (!test_bit(MD_SERIALIZE_POLICY,
&mddev->flags) ||
!rdev_need_serial(temp))
rdev_uninit_serial(temp);
else
@@ -5897,11 +5898,12 @@ static ssize_t serialize_policy_show(struct mddev *mddev, char *page)
if (mddev->pers == NULL || (mddev->pers->head.id != ID_RAID1))
return sprintf(page, "n/a\n");
else
return sprintf(page, "%d\n", mddev->serialize_policy);
return sprintf(page, "%d\n",
test_bit(MD_SERIALIZE_POLICY, &mddev->flags));
}
/*
* Setting serialize_policy to true to enforce write IO is not reordered
* Setting MD_SERIALIZE_POLICY enforce write IO is not reordered
* for raid1.
*/
static ssize_t
@@ -5914,7 +5916,7 @@ serialize_policy_store(struct mddev *mddev, const char *buf, size_t len)
if (err)
return err;
if (value == mddev->serialize_policy)
if (value == test_bit(MD_SERIALIZE_POLICY, &mddev->flags))
return len;
err = mddev_suspend_and_lock(mddev);
@@ -5926,11 +5928,13 @@ serialize_policy_store(struct mddev *mddev, const char *buf, size_t len)
goto unlock;
}
if (value)
if (value) {
mddev_create_serial_pool(mddev, NULL);
else
set_bit(MD_SERIALIZE_POLICY, &mddev->flags);
} else {
mddev_destroy_serial_pool(mddev, NULL);
mddev->serialize_policy = value;
clear_bit(MD_SERIALIZE_POLICY, &mddev->flags);
}
unlock:
mddev_unlock_and_resume(mddev);
return err ?: len;
@@ -6867,7 +6871,7 @@ static void __md_stop_writes(struct mddev *mddev)
md_update_sb(mddev, 1);
}
/* disable policy to guarantee rdevs free resources for serialization */
mddev->serialize_policy = 0;
clear_bit(MD_SERIALIZE_POLICY, &mddev->flags);
mddev_destroy_serial_pool(mddev, NULL);
}