On Saturday, February 16, 2019, Abel Abraham Camarillo Ojeda <
acam...@verlet.org> wrote:

>
>
> On Saturday, February 16, 2019, Maximilian Lorlacks <
> maxlor...@protonmail.com> wrote:
>
>>
>> ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
>> On Thursday, January 31, 2019 11:31 PM, Alexander Bluhm <
>> alexander.bl...@gmx.net> wrote:
>>
>> > On Thu, Jan 31, 2019 at 04:26:45PM -0500, Ted Unangst wrote:
>> >
>> > > Instead, we note that the write failed and mark a flag in the vnode.
>> Future
>> > > calls to fsync will then return EIO when this flag is set. We clear
>> the flag
>> > > when the vnode is released.
>> >
>> > Sounds reasonable.
>> >
>> > OK bluhm@
>>
>> People may object to errors being lost when the vnode is released,
>> as that would lose errors in a scenario like write -> close -> open
>> -> fsync.  I do not claim to know if anyone actually does that in the
>> wild, however.
>
>
> Sorry for my incomplete comment, but I remember a lengthy discussion in
> the postgres mailing list about fsync, retries of it, loss of state and
> such, they were very concerned about openbsd behavior I think...
>
> Will try to find that thread ...
>

Is this related?

https://lwn.net/Articles/752063/

Again, sorry if it's noise



>
>
>>
>> If the above diff is accepted, it may be worth to also add the
>> following diff to fsync.2 to document the behavior:
>>
>> diff --git lib/libc/sys/fsync.2 lib/libc/sys/fsync.2
>> index c9831ca09..5ee765986 100644
>> --- lib/libc/sys/fsync.2
>> +++ lib/libc/sys/fsync.2
>> @@ -66,6 +66,19 @@ and
>>  .Fn fdatasync
>>  should be used by programs that require a file to be in a known state,
>>  for example, in building a simple transaction facility.
>> +.Pp
>> +If
>> +.Fn fsync
>> +or
>> +.Fn fdatasync
>> +fails with
>> +.Er EIO ,
>> +the state of the on-disk data may only have been partially written.
>> +Future attempts to call these functions will continue failing with
>> +.Er EIO
>> +until the all copies of the underlying
>> +.Fa fd
>> +have been closed.
>>  .Sh RETURN VALUES
>>  .Rv -std fsync fdatasync
>>  .Sh ERRORS
>>
>>

Reply via email to