Subject: Re: Is O_EXCL in open(2) broken over NFS ?
To: Aidan Cully <aidan@kublai.com>
From: Manuel Bouyer <bouyer@antioche.lip6.fr>
List: tech-userlevel
Date: 07/23/2000 22:26:32
On Sun, Jul 23, 2000 at 01:57:55PM -0400, Aidan Cully wrote:
> Interestingly enough, I just looked at NetBSD's implementation of
> O_EXCL over NFS, and saw the following:
> if (v3 && (fmode & O_EXCL) && error == NFSERR_NOTSUPP) {
> fmode &= ~O_EXCL;
> goto again;
> }
> So, if the server doesn't support the NFSV3CREATE_EXCLUSIVE operation,
It would be a lame server then :)
> NetBSD silently tries again without the O_EXCL bit set. I don't know
> what the proper solution for NetBSD is, here... I know that what we
> did at my old job was to call 'open' on a guaranteed unique filename,
> and then link()/unlink() it into place, since NFS couldn't guarantee
> O_EXCL processing, but could guarantee that link() would fail if the
> file already existed. At the least, I'd hope that an #ifdef NFS_DIAG
> (or something) could do a
> printf("nfs_create: O_EXCL operation not supported by server.");
> to let the user know at some level that O_EXCL isn't doing what sie
> thinks it is.
Sure, or maybe the syscall should fail with EOPNOTSUPP. Dropping O_EXCL
silently isn't a good thing.
--
Manuel Bouyer <bouyer@antioche.eu.org>
--