[Ext2-devel] Re: Linux performance bug: fsync() for files with zero links
Erik Mouw
erik at harddisk-recovery.com
Tue Feb 28 16:30:17 UTC 2006
On Tue, Feb 28, 2006 at 08:50:53PM +0500, Victor Porton wrote:
> On 28-Feb-2006 Erik Mouw wrote:
> > It even makes sense on a single machine with multiple programs still
> > accessing the same file. You want fsync() and fdatasync() to work
> > regardless of the amount of links. Not doing so could subtly break
> > programs. For example:
>
> Erik, what you said above is wrong.
>
> There are no need to sync this file to disk (except of when we are out of
> memory). It is enough to sync the buffers in MEMORY.
>
> From man write(2):
>
> write writes up to count bytes to the file referenced by the file
> descriptor fd from the buffer starting at buf. POSIX requires that a
> read() which can be proved to occur after a write() has returned
> returns the new data. Note that not all file systems are POSIX con-
> forming.
AFAIK that's read() from the same process, not read() from another
process. Otherwise there would be no need for fsync()/fdatasync().
But look at my example. tail(1) uses fstat64() to figure out if
/var/log/messages changed. Your proposal for a patch will break that.
Again: the number of links of an inode is not a reason to break
established semantics.
Erik
--
+-- Erik Mouw -- www.harddisk-recovery.com -- +31 70 370 12 90 --
| Lab address: Delftechpark 26, 2628 XH, Delft, The Netherlands
More information about the Ext3-users
mailing list