diff options
| author | Li Nan <linan122@huawei.com> | 2026-01-05 14:02:57 +0300 |
|---|---|---|
| committer | Yu Kuai <yukuai@fnnas.com> | 2026-01-26 08:16:23 +0300 |
| commit | 8ff59a72478d6e9f9668e153dbdbdfad7928b123 (patch) | |
| tree | 24796a870ebbe973ace80fdba277e26b8c620620 | |
| parent | 6dd3aa08e83beeadf19f9d0f4110e5cd802a65d4 (diff) | |
| download | linux-8ff59a72478d6e9f9668e153dbdbdfad7928b123.tar.xz | |
md: move finish_reshape to md_finish_sync()
finish_reshape implementations of raid10 and raid5 only update mddev
and rdev configurations. Move these operations to md_finish_sync() as
it is more appropriate.
No functional changes.
Link: https://lore.kernel.org/linux-raid/20260105110300.1442509-10-linan666@huaweicloud.com
Signed-off-by: Li Nan <linan122@huawei.com>
Reviewed-by: Yu Kuai <yukuai@fnnas.com>
Signed-off-by: Yu Kuai <yukuai@fnnas.com>
| -rw-r--r-- | drivers/md/md.c | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/drivers/md/md.c b/drivers/md/md.c index 7b4fe7379bb6..d7f94b50694d 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c @@ -9475,6 +9475,8 @@ static void md_finish_sync(struct mddev *mddev, enum sync_action action) set_capacity_and_notify(mddev->gendisk, mddev->array_sectors); } + if (mddev->pers->finish_reshape) + mddev->pers->finish_reshape(mddev); break; /* */ case ACTION_CHECK: @@ -10312,7 +10314,7 @@ void md_reap_sync_thread(struct mddev *mddev) { struct md_rdev *rdev; sector_t old_dev_sectors = mddev->dev_sectors; - bool is_reshaped = false; + bool is_reshaped = test_bit(MD_RECOVERY_RESHAPE, &mddev->recovery); /* resync has finished, collect result */ md_unregister_thread(mddev, &mddev->sync_thread); @@ -10328,12 +10330,6 @@ void md_reap_sync_thread(struct mddev *mddev) set_bit(MD_SB_CHANGE_DEVS, &mddev->sb_flags); } } - if (test_bit(MD_RECOVERY_RESHAPE, &mddev->recovery) && - mddev->pers->finish_reshape) { - mddev->pers->finish_reshape(mddev); - if (mddev_is_clustered(mddev)) - is_reshaped = true; - } /* If array is no-longer degraded, then any saved_raid_disk * information must be scrapped. @@ -10360,8 +10356,9 @@ void md_reap_sync_thread(struct mddev *mddev) * be changed by md_update_sb, and MD_RECOVERY_RESHAPE is cleared, * so it is time to update size across cluster. */ - if (mddev_is_clustered(mddev) && is_reshaped - && !test_bit(MD_CLOSING, &mddev->flags)) + if (mddev_is_clustered(mddev) && is_reshaped && + mddev->pers->finish_reshape && + !test_bit(MD_CLOSING, &mddev->flags)) mddev->cluster_ops->update_size(mddev, old_dev_sectors); /* flag recovery needed just to double check */ set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); |
