md: replace last_sync_action with new enum type
The only difference is that "none" is removed and initial last_sync_action will be idle. On the one hand, this value is introduced by commit c4a395514516 ("MD: Remember the last sync operation that was performed"), and the usage described in commit message is not affected. On the other hand, last_sync_action is not used in mdadm or mdmon, and none of the tests that I can find. Signed-off-by: Yu Kuai <yukuai3@huawei.com> Signed-off-by: Song Liu <song@kernel.org> Link: https://lore.kernel.org/r/20240611132251.1967786-10-yukuai1@huaweicloud.com
This commit is contained in:
parent
7d9f107a4e
commit
d249e54188
@ -3542,7 +3542,7 @@ static void raid_status(struct dm_target *ti, status_type_t type,
|
||||
recovery = rs->md.recovery;
|
||||
state = decipher_sync_action(mddev, recovery);
|
||||
progress = rs_get_progress(rs, recovery, state, resync_max_sectors);
|
||||
resync_mismatches = (mddev->last_sync_action && !strcasecmp(mddev->last_sync_action, "check")) ?
|
||||
resync_mismatches = mddev->last_sync_action == ACTION_CHECK ?
|
||||
atomic64_read(&mddev->resync_mismatches) : 0;
|
||||
|
||||
/* HM FIXME: do we want another state char for raid0? It shows 'D'/'A'/'-' now */
|
||||
|
@ -768,7 +768,7 @@ int mddev_init(struct mddev *mddev)
|
||||
init_waitqueue_head(&mddev->recovery_wait);
|
||||
mddev->reshape_position = MaxSector;
|
||||
mddev->reshape_backwards = 0;
|
||||
mddev->last_sync_action = "none";
|
||||
mddev->last_sync_action = ACTION_IDLE;
|
||||
mddev->resync_min = 0;
|
||||
mddev->resync_max = MaxSector;
|
||||
mddev->level = LEVEL_NONE;
|
||||
@ -5149,7 +5149,8 @@ __ATTR_PREALLOC(sync_action, S_IRUGO|S_IWUSR, action_show, action_store);
|
||||
static ssize_t
|
||||
last_sync_action_show(struct mddev *mddev, char *page)
|
||||
{
|
||||
return sprintf(page, "%s\n", mddev->last_sync_action);
|
||||
return sprintf(page, "%s\n",
|
||||
md_sync_action_name(mddev->last_sync_action));
|
||||
}
|
||||
|
||||
static struct md_sysfs_entry md_last_scan_mode = __ATTR_RO(last_sync_action);
|
||||
@ -8963,7 +8964,7 @@ void md_do_sync(struct md_thread *thread)
|
||||
|
||||
action = md_sync_action(mddev);
|
||||
desc = md_sync_action_name(action);
|
||||
mddev->last_sync_action = desc;
|
||||
mddev->last_sync_action = action;
|
||||
|
||||
/*
|
||||
* Before starting a resync we must have set curr_resync to
|
||||
|
@ -426,13 +426,12 @@ struct mddev {
|
||||
struct md_thread __rcu *thread; /* management thread */
|
||||
struct md_thread __rcu *sync_thread; /* doing resync or reconstruct */
|
||||
|
||||
/* 'last_sync_action' is initialized to "none". It is set when a
|
||||
* sync operation (i.e "data-check", "requested-resync", "resync",
|
||||
* "recovery", or "reshape") is started. It holds this value even
|
||||
/*
|
||||
* Set when a sync operation is started. It holds this value even
|
||||
* when the sync thread is "frozen" (interrupted) or "idle" (stopped
|
||||
* or finished). It is overwritten when a new sync operation is begun.
|
||||
* or finished). It is overwritten when a new sync operation is begun.
|
||||
*/
|
||||
const char *last_sync_action;
|
||||
enum sync_action last_sync_action;
|
||||
sector_t curr_resync; /* last block scheduled */
|
||||
/* As resync requests can complete out of order, we cannot easily track
|
||||
* how much resync has been completed. So we occasionally pause until
|
||||
|
Loading…
x
Reference in New Issue
Block a user