]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
md/raid1: replace wait loop with wait_event_idle() in raid1_write_request()
authorAbd-Alrhman Masalkhi <abd.masalkhi@gmail.com>
Thu, 23 Apr 2026 10:13:01 +0000 (12:13 +0200)
committerYu Kuai <yukuai@fnnas.com>
Tue, 28 Apr 2026 12:44:38 +0000 (20:44 +0800)
The wait loop is equivalent to wait_event_idle(); use it to improve
readability.

Signed-off-by: Abd-Alrhman Masalkhi <abd.masalkhi@gmail.com>
Link: https://lore.kernel.org/linux-raid/20260423101303.48196-2-abd.masalkhi@gmail.com
Signed-off-by: Yu Kuai <yukuai@fnnas.com>
drivers/md/raid1.c

index ba91f7e61920d47f597f3e9b053c080154bdc919..64d970e2ef50fda96a632956c39ffcca52b0fe3e 100644 (file)
@@ -1510,21 +1510,14 @@ static void raid1_write_request(struct mddev *mddev, struct bio *bio,
            mddev->cluster_ops->area_resyncing(mddev, WRITE,
                     bio->bi_iter.bi_sector, bio_end_sector(bio))) {
 
-               DEFINE_WAIT(w);
                if (bio->bi_opf & REQ_NOWAIT) {
                        bio_wouldblock_error(bio);
                        return;
                }
-               for (;;) {
-                       prepare_to_wait(&conf->wait_barrier,
-                                       &w, TASK_IDLE);
-                       if (!mddev->cluster_ops->area_resyncing(mddev, WRITE,
-                                                       bio->bi_iter.bi_sector,
-                                                       bio_end_sector(bio)))
-                               break;
-                       schedule();
-               }
-               finish_wait(&conf->wait_barrier, &w);
+               wait_event_idle(conf->wait_barrier,
+                               !mddev->cluster_ops->area_resyncing(mddev, WRITE,
+                                                                   bio->bi_iter.bi_sector,
+                                                                   bio_end_sector(bio)));
        }
 
        /*