qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH V2 1/3] Darwin: Fix incorrect check for fdatasyn


From: Alexandre Raymond
Subject: Re: [Qemu-devel] [PATCH V2 1/3] Darwin: Fix incorrect check for fdatasync() in configure
Date: Sun, 29 May 2011 22:32:07 -0400

I didn't notice anything broken. I just stumbled upon this bug while
reviewing the code.

Alexandre

On Sun, May 29, 2011 at 8:09 PM, Alexandre Raymond <address@hidden> wrote:
> Sure, I'm fine with that. I wasn't sure how much detail you actually
> wanted in this commit message :)
>
> Alexandre
>
> On Sun, May 29, 2011 at 7:36 PM, Andreas Färber <address@hidden> wrote:
>> Am 30.05.2011 um 00:22 schrieb Alexandre Raymond:
>>
>>> Under darwin (OS X 10.6.7), a symbol exists for the fdatasync() method
>>> but it is not supported because _POSIX_SYNCHRONIZED_IO is set to '-1'.
>>
>> Question: How did you notice? Did anything break that we could mention, or
>> did you just review the code?
>>
>>> Enable fdatasync() only if _POSIX_SYNCHRONIZED_IO is '>0', as per
>>> The Open Group Base Specifications Issue 7.
>>
>> Not quite what I meant. ;) Would you be okay with the following:
>>
>> configure: Fix check for fdatasync()
>>
>> Under Darwin, a symbol exists for the fdatasync() function, but it is
>> not supported. Yada yada. _POSIX_SYNCHRONIZED_IO is set to '-1'.
>>
>> According to POSIX:2008, a value of -1 means the feature is not supported.
>> A value of 0 means supported at compilation time, and a value greater 0
>> means supported at both compilation and run time.
>>
>> Enable fdatasync() only if _POSIX_SYNCHRONIZED_IO is '>0'.
>>
>> Andreas
>>
>>> Signed-off-by: Alexandre Raymond <address@hidden>
>>> ---
>>> configure |    8 +++++++-
>>> 1 files changed, 7 insertions(+), 1 deletions(-)
>>>
>>> diff --git a/configure b/configure
>>> index a318d37..b21ef75 100755
>>> --- a/configure
>>> +++ b/configure
>>> @@ -2477,7 +2477,13 @@ fi
>>> fdatasync=no
>>> cat > $TMPC << EOF
>>> #include <unistd.h>
>>> -int main(void) { return fdatasync(0); }
>>> +int main(void) {
>>> +#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
>>> +return fdatasync(0);
>>> +#else
>>> +#abort Not supported
>>> +#endif
>>> +}
>>> EOF
>>> if compile_prog "" "" ; then
>>>    fdatasync=yes
>>> --
>>> 1.7.5
>>>
>>
>>
>



reply via email to

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