Messages in this thread | | | Date | Fri, 16 Mar 2001 12:11:47 +0000 | From | "Stephen C. Tweedie" <> | Subject | Re: O_DSYNC flag for open |
| |
Hi,
On Wed, Mar 14, 2001 at 10:26:42PM -0500, Tom Vier wrote: > fdatasync() is the same as fsync(), in linux.
No, in 2.4 fdatasync does the right thing and skips the inode flush if only the timestamps have changed.
> until fdatasync() is > implimented (ie, syncs the data only)
fdatasync is required to sync more than just the data: it has to sync the inode too if any fields other than the timestamps have changed. So, for appending to files or writing new files from scratch, fsync == fdatasync (because each write also changes the inode size). Only for updating existing files in place does fdatasync behave differently.
> #ifndef O_DSYNC > # define O_DSYNC O_SYNC > #endif
2.4's O_SYNC actually does a fdatasync internally. This is also the default behaviour of HPUX, which requires you to set a sysctl variable if you want O_SYNC to flush timestamp changes to disk.
Cheers, Stephen - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |