The floppy driver usually autodetects the media when used with theReviewed-by: Hannes Reinecke <hare@xxxxxxx>
normal /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@xxxxxx>
---
drivers/block/floppy.c | 154 ++++++++++++++++++++++++++---------------
1 file changed, 97 insertions(+), 57 deletions(-)