]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
md: replace last_sync_action with new enum type
authorYu Kuai <yukuai3@huawei.com>
Tue, 11 Jun 2024 13:22:48 +0000 (21:22 +0800)
committerSong Liu <song@kernel.org>
Wed, 12 Jun 2024 16:32:57 +0000 (16:32 +0000)
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
drivers/md/dm-raid.c
drivers/md/md.c
drivers/md/md.h

index abe88d1e6735824488623ad3263c2de891e160a1..052c00c1eb1542271ce1bbb41d996d43463ed9b3 100644 (file)
@@ -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 */
index 5fa7b5f4bc6de5341bae64d7accf751cd3542b24..ab492e88586729a590d7c6dc8e64064d8789d752 100644 (file)
@@ -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
index ee06cb076f8c7d8559679bd1092b3f0cb0e372e1..41781e41d8ffc2c606af09dc908b2fd936fbfa63 100644 (file)
@@ -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