Re: ext3-2.4-0.9.4

Christoph Hellwig
2001-08-02T09:51:36Z

In article <20010802110341.B17927@emma1.emma.line.org> you wrote:
>
> http://www.opengroup.org/onlinepubs/007908799/xbd/glossary.html#tag_004_000_291
>
> "synchronised I/O data integrity completion
>
> [...]
>
> * For write, when the operation has been completed or diagnosed if
> unsuccessful. The write is complete only when the data specified in
> the write request is successfully transferred and all file system
> information required to retrieve the data is successfully transferred.
>
> File attributes that are not necessary for data retrieval (access
> time, modification time, status change time) need not be successfully
> transferred prior to returning to the calling process.

NOTE: _file_ attributes

>
> synchronised I/O file integrity completion
>
> Identical to a synchronised I/O data integrity completion with the
> addition that all file attributes relative to the I/O operation
> (including access time, modification time, status change time) will be
> successfully transferred prior to returning to the calling process."
>
> As I understand it, the directory entry's st_ino is a file attribute
> necessary for data retrieval and also contains the m/a/ctime, so it must
> be flushed to disk on fsync() as well.
>

As long as you have an open fd, no directory entry is needed for
data retrieval. In fact some fds never have a directory entry
(e.g. sockets - but these don't support fsync anyway) or do not have a
directory entry in their user-visble interface (e.g. posix shm).

And m/a/ctime is in the inode of the file, not in the directory enrty.
(at least for usual UNIX filesystems).

> Well, if there's not a single dirent, you cannot retrieve the data,

Of course you can, you can pass and fd for an unliked file everywhere
using AF_LOCAL descriptor passing.

Christoph

--
Of course it doesn't work. We've performed a software upgrade.