[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 1.1 19/22] block: implement is_allocated for raw
From: |
Kevin Wolf |
Subject: |
Re: [Qemu-devel] [PATCH 1.1 19/22] block: implement is_allocated for raw |
Date: |
Wed, 09 May 2012 16:10:26 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:11.0) Gecko/20120329 Thunderbird/11.0.1 |
Am 09.05.2012 16:05, schrieb Paolo Bonzini:
> Il 09/05/2012 15:40, Kevin Wolf ha scritto:
>>>> +#ifndef SEEK_DATA
>>>> +#define SEEK_DATA 3
>>>> +#endif
>>>> +#ifndef SEEK_HOLE
>>>> +#define SEEK_HOLE 4
>>>> +#endif
>> How is that going to be portable? You assume that on non-Linux you'll
>> get -EINVAL, but what does guarantee that 3 or 4 aren't already used for
>> the standard SEEK_* constants or for a different non-standard extension?
>
> While SEEK_* is not guaranteed by POSIX to be 0/1/2, the values is so
> old that there may still exist programs that hard-code the values
> (similar to O_RDONLY/O_WRONLY/O_RDWR, though probably not any other O_*
> constant). It would be quite unwise to define them to something else.
> Even MS-DOS reused the values!
>
> AFAIK this is the only extension of lseek that's ever been added. It
> was done on Solaris first and then in Linux and the BSDs. It used 3/4
> there too, see for example http://bugs.python.org/msg119551 (Solaris)
> and http://mail-index.netbsd.org/tech-kern/2011/08/17/msg011231.html
> (NetBSD).
Why not simply #ifdef the whole code out and fall back to the current
"everything is allocated" behaviour when SEEK_DATA/HOLE aren't defined?
Kevin
- [Qemu-devel] [PATCH 1.1 21/22] stream: move is_allocated_above to block.c, (continued)
[Qemu-devel] [PATCH 1.1 12/22] qemu-io: fix the alloc command, Paolo Bonzini, 2012/05/08