dm vdo block-map: optimize enter_zone_read_only_mode
authorMike Snitzer <snitzer@kernel.org>
Mon, 20 Nov 2023 22:29:19 +0000 (17:29 -0500)
committerMike Snitzer <snitzer@kernel.org>
Tue, 20 Feb 2024 18:43:16 +0000 (13:43 -0500)
Rather than incrementally dequeue from the zone->flush_waiters
vdo_wait_queue, simply re-initialize it.

Reviewed-by: Ken Raeburn <raeburn@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@kernel.org>
Signed-off-by: Matthew Sakai <msakai@redhat.com>
drivers/md/dm-vdo/block-map.c

index a1f2c9d38192dd7d38bff7bbd018f4655d523851..7f9c4bc05f0254003abf34c6c6d7b1cce86159df 100644 (file)
@@ -641,12 +641,10 @@ static void enter_zone_read_only_mode(struct block_map_zone *zone, int result)
        vdo_enter_read_only_mode(zone->block_map->vdo, result);
 
        /*
-        * We are in read-only mode, so we won't ever write any page out. Just take all waiters off
-        * the queue so the zone can drain.
+        * We are in read-only mode, so we won't ever write any page out.
+        * Just take all waiters off the waitq so the zone can drain.
         */
-       while (vdo_waitq_has_waiters(&zone->flush_waiters))
-               vdo_waitq_dequeue_next_waiter(&zone->flush_waiters);
-
+       vdo_waitq_init(&zone->flush_waiters);
        check_for_drain_complete(zone);
 }