Re: [patch 0/9] writeback data integrity and other fixes (take 3)

Nick Piggin
2008-10-30T02:16:20Z

On Wed, Oct 29, 2008 at 10:56:36AM -0400, Chris Mason wrote:
> On Wed, 2008-10-29 at 09:32 -0400, Ric Wheeler wrote:
> > Jamie Lokier wrote:
>
> > >> Is there anything that particularly makes it a file operation
> > >> as opposed to an inode operation?
> > >>
> > >
> > > In principle, is fsync() required to flush all dirty data written
> > > through any file descriptor ever, or just dirty data written through
> > > the file descriptor used for fsync()?
> > >
> > > -- Jamie
> > > --
> > >
> > http://www.opengroup.org/onlinepubs/009695399/functions/fsync.html
> >
> > Is a pointer to what seems to be the official posix spec for this - it
> > is definitely per file descriptor, not per file system, etc...
> >
>
> Maybe I'm reading Jamie's question wrong, but I think he's saying:
>
> /* open exactly the same file twice */
> fd = open("file");
> fd2 = open("file");
>
> write(fd, "stuff")
> write(fd2, "more stuff")
> fsync(fd);
>
> Does the fsync promise "more stuff" will be on disk? I think the answer
> should be yes.

I think so. And this is in the context of making ->fsync an inode
operation and avoid the NFS NULL-file problem... I don't think there
is any fd specific metadata that fsync has to deal with? Any other
reasons it has to be a file operation?