Skip to content

Commit

Permalink
raw-posix: Detect legacy floppy via ioctl on linux
Browse files Browse the repository at this point in the history
Current legacy floppy detection is hardcoded based on source file
name. Make this smarter on linux by attempting a floppy specific
ioctl.

v2:
    Give ioctl check higher priority than filename check
    s/IDE/legacy/

v3:
    Actually initialize 'prio' variable
    Check for ioctl success rather than absence of specific failure

v4:
    Explicitly mention that change is linux specific.

Signed-off-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
  • Loading branch information
crobinso authored and Anthony Liguori committed Jan 19, 2010
1 parent 3baf720 commit 2ebf7c4
Showing 1 changed file with 19 additions and 2 deletions.
21 changes: 19 additions & 2 deletions block/raw-posix.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
int prio = 0;
struct floppy_struct fdparam;

if (strstart(filename, "/dev/fd", NULL))
return 100;
return 0;
prio = 50;

fd = open(filename, O_RDONLY | O_NONBLOCK);
if (fd < 0) {
goto out;
}

/* Attempt to detect via a floppy specific ioctl */
ret = ioctl(fd, FDGETPRM, &fdparam);
if (ret >= 0)
prio = 100;

close(fd);
out:
return prio;
}


Expand Down

0 comments on commit 2ebf7c4

Please sign in to comment.