OSDN Git Service

ataflop: use a separate gendisk for each media format
authorChristoph Hellwig <hch@lst.de>
Thu, 29 Oct 2020 14:58:38 +0000 (15:58 +0100)
committerJens Axboe <axboe@kernel.dk>
Mon, 16 Nov 2020 15:14:31 +0000 (08:14 -0700)
commitbf9c0538e485b591a2ee02d9adb8a99db4be5a2a
treed3720c2a0445410c0b15aee226a2f61be46e8f6c
parent0033a9b41fc219e1e0d673e0a42179577a7d68ad
ataflop: use a separate gendisk for each media format

The Atari floppy driver usually autodetects the media when used with the
ormal /dev/fd? devices, which also are the only nodes created by udev.
But it also supports various aliases that force a given media format.
That is currently supported using the blk_register_region framework
which finds the floppy gendisk even for a 'mismatched' dev_t.  The
problem with this (besides the code complexity) is that it creates
multiple struct block_device instances for the whole device of a
single gendisk, which can lead to interesting issues in code not
aware of that fact.

To fix this just create a separate gendisk for each of the aliases
if they are accessed.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/block/ataflop.c