block: prevent block device lookups at the beginning of del_gendisk
authorChristoph Hellwig <hch@lst.de>
Fri, 14 May 2021 13:18:41 +0000 (15:18 +0200)
committerJens Axboe <axboe@kernel.dk>
Thu, 20 May 2021 13:59:35 +0000 (07:59 -0600)
commit6c60ff048ca1e0739f39aa25996543c6e662a46c
tree2cbd9f0a9f9c0e49600c999500d7c388e6c8ec4e
parent9a66e6bd7e9ba51d83854aaf7670014e9538e462
block: prevent block device lookups at the beginning of del_gendisk

As an artifact of how gendisk lookup used to work in earlier kernels,
GENHD_FL_UP is only cleared very late in del_gendisk, and a global lock
is used to prevent opens from succeeding while del_gendisk is tearing
down the gendisk.  Switch to clearing the flag early and under bd_mutex
so that callers can use bd_mutex to stabilize the flag, which removes
the need for the global mutex.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Ming Lei <ming.lei@redhat.com>
Link: https://lore.kernel.org/r/20210514131842.1600568-2-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/genhd.c
fs/block_dev.c
include/linux/genhd.h