qemu-devel
[Top][All Lists]
Advanced

[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



reply via email to

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