Current IDE floppy detection is hardcoded based on source file name. Make this smarter by attempting a floppy specific ioctl.
Signed-off-by: Cole Robinson <crobi...@redhat.com> --- block/raw-posix.c | 19 ++++++++++++++++++- 1 files changed, 18 insertions(+), 1 deletions(-) diff --git a/block/raw-posix.c b/block/raw-posix.c index 3ec58d0..5d6b9fb 100644 --- a/block/raw-posix.c +++ b/block/raw-posix.c @@ -1055,9 +1055,26 @@ static int floppy_open(BlockDriverState *bs, const char *filename, int flags) static int floppy_probe_device(const char *filename) { + int fd, ret; + struct floppy_struct fdparam; + if (strstart(filename, "/dev/fd", NULL)) return 100; - return 0; + + fd = open(filename, O_RDONLY | O_NONBLOCK); + if (fd < 0) { + return 0; + } + + /* Attempt to detect via a floppy specific ioctl */ + if (ioctl(fd, FDGETPRM, &fdparam) < 0 && errno == EINVAL) { + ret = 0; + } else { + ret = 100; + } + + close(fd); + return ret; } -- 1.6.6