• Christoph Hellwig's avatar
    floppy: use a separate gendisk for each media format · 302cfee1
    Christoph Hellwig authored
    The floppy driver usually autodetects the media when used with the
    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: default avatarChristoph Hellwig <hch@lst.de>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    302cfee1
floppy.c 137 KB