qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2] raw-posix: Detect legacy floppy via ioctl


From: Cole Robinson
Subject: Re: [Qemu-devel] [PATCH v2] raw-posix: Detect legacy floppy via ioctl
Date: Wed, 13 Jan 2010 18:44:11 -0500
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.4pre) Gecko/20090922 Fedora/3.0-3.9.b4.fc12 Thunderbird/3.0b4

On 01/13/2010 06:07 PM, Anthony Liguori wrote:
> On 01/12/2010 09:29 AM, Cole Robinson wrote:
>> Current legacy floppy detection is hardcoded based on source file
>> name. Make this smarter by attempting a floppy specific ioctl.
>>
>> v2: Give ioctl check higher priority than filename check,
>>      s/IDE/legacy/
>>
>> Signed-off-by: Cole Robinson<address@hidden>
>> ---
>>   block/raw-posix.c |   20 ++++++++++++++++++--
>>   1 files changed, 18 insertions(+), 2 deletions(-)
>>
>> diff --git a/block/raw-posix.c b/block/raw-posix.c
>> index b7254d8..d67280e 100644
>> --- a/block/raw-posix.c
>> +++ b/block/raw-posix.c
>> @@ -1055,9 +1055,25 @@ static int floppy_open(BlockDriverState *bs,
>> const char *filename, int flags)
>>
>>   static int floppy_probe_device(const char *filename)
>>   {
>> +    int fd, ret, prio;
>> +    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&&  errno == EINVAL))
>>    
> 
> These two patches break boot from an image file.  My suspicious is that
> it's failing because the errno is ENOSYS.
> 

Ugh, sorry about that.

> You probably want to do the opposite and check for a positive return
> result instead of checking for the absence of a positive result.
> 

Sounds good.

Thanks,
Cole




reply via email to

[Prev in Thread] Current Thread [Next in Thread]