VFS/Posix question

Thomas Schoebel-Theuer (schoebel@eicheinformatik.uni-stuttgart.de)
10 Feb 1997 10:40:49 GMT


I'm just doing some patches in the kernel for enabling omirr-support.
omirr (online mirror) will support *symmetric* online mirroring of filesystems
once it is available.

I have found the following curiosity: if open() is called with flags
O_CREAT | O_EXCL , is returns an error if the "file" already exists.
However, what is really implemented is to check whether some _inode_
with the given name already exists. If the name exists in the form of
a symlink pointing in turn to a non-existant name, it will be an error, too.
However, I would expect that the non-existing name should be created
instead (without returning an error), as is the case with leaving out the
O_EXCL bit.

I don't have access to the Posix standards. Could anyone clarify what
should be the correct behaviour?

-- Thomas