On Fri, Apr 13, 2018 at 11:26:52AM +1200, Thomas Munro wrote:
> Hello,
>
> I work on PostgreSQL. I don't use OpenBSD, but recently I've been
> investigating how fsync() reports write-back errors on all operating
> systems that people like to run PostgreSQL on:
>
> https://wiki.postgresql.org/wiki/Fsync_Errors
>
> It seems to me that on OpenBSD, asynchronous write-back errors might
> not be reported to userspace in a subsequent call to fsync(), and
> synchronous write-back errors that are reported to userspace might not
> be reported in a follow-up call to fsync() (that is, retrying will
> appear to be successful but in fact your data is gone).
>
> Am I wrong? Perhaps some other code elsewhere will record the error
> at device, filesystem or inode level? I didn't try to test this: I
> simply compared the brelse() error handling code with that of FreeBSD
> and NetBSD whose behaviours are known to be correct and incorrect
> respectively, according to our assessment of what fsync() *should* do.
> (Or at least the behaviour that PostgreSQL relies on, when it reports
> that your data exists on disk as part of its checkpoint protocol).
> OpenBSD certainly appears to be like NetBSD in this respect, so I
> thought it was worth pinging your list and asking for an expert
> opinion.
>
> Do you think that my suspicion is correct? Would you consider that to
> be a bug?
>
> Thanks!
>
> Thomas Munro
Hi,
I noticed this report, but I did not have time to look into this yet.
Either I will be looking into this the coming time, or I'll try to
find another developer.
-Otto