Re: adding proper O_SYNC/O_DSYNC, was Re: O_DIRECT and barriers

From: Christoph Hellwig
Date: Fri Aug 28 2009 - 17:29:40 EST


On Fri, Aug 28, 2009 at 05:16:14PM -0400, Trond Myklebust wrote:
> On Fri, 2009-08-28 at 17:08 -0400, Christoph Hellwig wrote:
> > #define O_SYNC (O_FULLSYNC|O_DSYNC)
> >
> > - during the normal merge window I will add a real implementation for
> > for O_FULLSYNC and O_RSYNC
> >
> > P.S. better naming suggestions for O_FULLSYNC welcome
>
> Basically you are just ensuring that the metadata changes are being
> synced together with the data changes, so how about O_ISYNC (inode
> sync)?

Yeah. Thinking about this a bit more we should define this flag
much more clearly. In the obvious implementation it would not actually
do anything if it's set on it's own. We would only check it if O_DSYNC
is already set to decided if we want to set the datasync argument to
->fsync to 0 or 1 for the generic filesystems (and similar things for
filesystems not using the generic helper).

If we deem that this is too unsafe we could make sure O_DSYNC always
gets set on this fag in ->open, but if we make sure O_SYNC is defined
like the one above in the kernel headers and glibc we should be fine.

Although in that case a name that doesn't suggest that it actually does
something useful would be better.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/