Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 12 Jul 2020 23:12:50 +0300
From:      Konstantin Belousov <kostikbel@gmail.com>
To:        Eugene Grosbein <eugen@grosbein.net>
Cc:        Freebsd hackers list <freebsd-hackers@freebsd.org>
Subject:   Re: fsync(2)
Message-ID:  <20200712201250.GC44314@kib.kiev.ua>
In-Reply-To: <12fb648f-8c37-be9b-f18a-5dc2ec9a09c9@grosbein.net>
References:  <0cdc3315-0213-8522-c8d6-695c2ee02923@grosbein.net> <20200712190517.GA44314@kib.kiev.ua> <12fb648f-8c37-be9b-f18a-5dc2ec9a09c9@grosbein.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Jul 13, 2020 at 02:55:32AM +0700, Eugene Grosbein wrote:
> 13.07.2020 2:05, Konstantin Belousov wrote:
> 
> > On Mon, Jul 13, 2020 at 01:49:22AM +0700, Eugene Grosbein wrote:
> >> Hi!
> >>
> >> Assume we have parent process that created a file and keeps it open not writing anything there.
> >> The parent spawns a child passing file name and the child opens it,
> >> fills it with data and exits without fsync()'ing the file.
> >>
> >> In case of UFS there is upto 30 seconds time gap when file size is not updated,
> >> so if crash occurs, the file ends up empty.
> >>
> >> The question: will fsync() in parent work for such still open file descriptor?
> > 
> > fsync() syncs the vnode, not the file or file descriptor. So fsync() on
> > any file descriptor referencing the same vnode, is enough to ensure that
> > the data is written to the underlying volume.
> 
> Thanks! This seems to be undocumented.
> 
> https://pubs.opengroup.org/onlinepubs/009695399/functions/fsync.html does not mention
> implementation details (and could not) but our manual page could be improved, could it?

Our manual page for fsync(2) is already good enough IMO. It talks about
modified data of file. 'With the kernel-colored glasses', it means the
vnode there, but describing the fine difference between file and (vnode,
inode) is perhaps too much of useless details for normal application
writer.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20200712201250.GC44314>