Hi,

On 2016-03-17 20:09:53 +0300, Stas Kelvich wrote:
> Current implementation of pg_flush_data when called with zero offset and zero 
> nbytes is assumed to flush all file. In osx it uses mmap with these 
> arguments, but according to man: 
> 
> "[EINVAL]           The len argument was negative or zero. Historically, the 
> system call would not return an
>                         error if the argument was zero.  See other potential 
> additional restrictions in the COMPAT-
>                         IBILITY section below."
> 
> so it is generate a lot of warnings:
> 
> "WARNING:  could not mmap while flushing dirty data: Invalid argument"

Hm, yea, that's buggy.


> One possible solution for that is just fallback to pg_fdatasync in case when 
> offset = nbytes = 0.

Hm, that's a bit heavyweight. I'd rather do an lseek(SEEK_END) to get
the file size. Could you test that?


> Also there are no default ifdef inside this function, is there any
> check that will guarantee that pg_flush_data will not end up with
> empty body on some platform?

There doesn't need to be - it's purely "advisory", i.e. just an
optimization.

Greetings,

Andres Freund


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to