[Top][All Lists]
[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