]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
md: skip redundant raid_disks update when value is unchanged
authorAbd-Alrhman Masalkhi <abd.masalkhi@gmail.com>
Tue, 28 Apr 2026 13:05:24 +0000 (15:05 +0200)
committerYu Kuai <yukuai@fygo.io>
Sun, 31 May 2026 11:09:17 +0000 (19:09 +0800)
Calling update_raid_disks() with the same value as the current one
can trigger unnecessary work. For example, RAID1 will reallocate
resources such as the mempool for r1bio.

Signed-off-by: Abd-Alrhman Masalkhi <abd.masalkhi@gmail.com>
Link: https://patch.msgid.link/20260428130524.448063-1-abd.masalkhi@gmail.com
Signed-off-by: Yu Kuai <yukuai@fygo.io>
drivers/md/md.c

index 8b568eee87433ae85d740f9c881860624c9dbe11..6cb2c452f963c758457d0d87aa4c05571c2448f0 100644 (file)
@@ -4414,9 +4414,10 @@ raid_disks_store(struct mddev *mddev, const char *buf, size_t len)
        err = mddev_suspend_and_lock(mddev);
        if (err)
                return err;
-       if (mddev->pers)
-               err = update_raid_disks(mddev, n);
-       else if (mddev->reshape_position != MaxSector) {
+       if (mddev->pers) {
+               if (n != mddev->raid_disks)
+                       err = update_raid_disks(mddev, n);
+       } else if (mddev->reshape_position != MaxSector) {
                struct md_rdev *rdev;
                int olddisks = mddev->raid_disks - mddev->delta_disks;