From: Christoph Hellwig Date: Fri, 5 May 2023 12:48:01 +0000 (-0400) Subject: block: avoid repeated work in blk_mark_disk_dead X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=066f6c204c83270979a76764e50c698ea102dc9f;p=users%2Fhch%2Fblock.git block: avoid repeated work in blk_mark_disk_dead Check if GD_DEAD is already set in blk_mark_disk_dead, and don't duplicate the work already done. Signed-off-by: Christoph Hellwig --- diff --git a/block/genhd.c b/block/genhd.c index 461999e94899..9a35b8443f0b 100644 --- a/block/genhd.c +++ b/block/genhd.c @@ -586,7 +586,9 @@ void blk_mark_disk_dead(struct gendisk *disk) /* * Fail any new I/O. */ - set_bit(GD_DEAD, &disk->state); + if (test_and_set_bit(GD_DEAD, &disk->state)) + return; + if (test_bit(GD_OWNS_QUEUE, &disk->state)) blk_queue_flag_set(QUEUE_FLAG_DYING, disk->queue);