diff options
| author | Li Nan <linan122@huawei.com> | 2026-01-05 14:02:55 +0300 |
|---|---|---|
| committer | Yu Kuai <yukuai@fnnas.com> | 2026-01-26 08:16:19 +0300 |
| commit | af9c40ff5aed8149572ae920f520df88356b7950 (patch) | |
| tree | 9a2f1cb80a5a6fe1f68fb9af205266463d1a8379 | |
| parent | cc0dab317acb871e11cd83225c90888397043fe8 (diff) | |
| download | linux-af9c40ff5aed8149572ae920f520df88356b7950.tar.xz | |
md: remove MD_RECOVERY_ERROR handling and simplify resync_offset update
Following previous patch "md: update curr_resync_completed even when
MD_RECOVERY_INTR is set", 'curr_resync_completed' always equals
'curr_resync' for resync, so MD_RECOVERY_ERROR can be removed.
Also, simplify resync_offset update logic.
Link: https://lore.kernel.org/linux-raid/20260105110300.1442509-8-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 | 21 | ||||
| -rw-r--r-- | drivers/md/md.h | 2 |
2 files changed, 4 insertions, 19 deletions
diff --git a/drivers/md/md.c b/drivers/md/md.c index 96f7eadbf959..3ef845af552b 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c @@ -9086,7 +9086,6 @@ void md_sync_error(struct mddev *mddev) { // stop recovery, signal do_sync .... set_bit(MD_RECOVERY_INTR, &mddev->recovery); - set_bit(MD_RECOVERY_ERROR, &mddev->recovery); md_wakeup_thread(mddev->thread); } EXPORT_SYMBOL(md_sync_error); @@ -9749,24 +9748,12 @@ update: if (!test_bit(MD_RECOVERY_CHECK, &mddev->recovery) && mddev->curr_resync > MD_RESYNC_ACTIVE) { + if (!test_bit(MD_RECOVERY_INTR, &mddev->recovery)) + mddev->curr_resync = MaxSector; + if (test_bit(MD_RECOVERY_SYNC, &mddev->recovery)) { - if (test_bit(MD_RECOVERY_INTR, &mddev->recovery)) { - if (mddev->curr_resync >= mddev->resync_offset) { - pr_debug("md: checkpointing %s of %s.\n", - desc, mdname(mddev)); - if (test_bit(MD_RECOVERY_ERROR, - &mddev->recovery)) - mddev->resync_offset = - mddev->curr_resync_completed; - else - mddev->resync_offset = - mddev->curr_resync; - } - } else - mddev->resync_offset = MaxSector; + mddev->resync_offset = mddev->curr_resync; } else { - if (!test_bit(MD_RECOVERY_INTR, &mddev->recovery)) - mddev->curr_resync = MaxSector; if (!test_bit(MD_RECOVERY_RESHAPE, &mddev->recovery) && test_bit(MD_RECOVERY_RECOVER, &mddev->recovery)) { rcu_read_lock(); diff --git a/drivers/md/md.h b/drivers/md/md.h index 4c3dc7a6e399..cda003f24e1e 100644 --- a/drivers/md/md.h +++ b/drivers/md/md.h @@ -652,8 +652,6 @@ enum recovery_flags { MD_RECOVERY_FROZEN, /* waiting for pers->start() to finish */ MD_RECOVERY_WAIT, - /* interrupted because io-error */ - MD_RECOVERY_ERROR, /* flags determines sync action, see details in enum sync_action */ |
