in reply to (tye)Re: File locking on NFS
in thread File locking on NFS

I am not positive on rename, but I believe that it will actually be atomic on NFS partitions as long as the data does not cross file-system boundaries. If you know of solid documentation on this one way or another, that would be good.

As for locking, Linux dropped the use of fcntl/lockf for flock a while ago due to some nasty recurring bugs. So flock does not work over NFS for Linux any more. Also fcntl did not when I tried it work totally smoothly. But I did not tinker much, that was a while ago, and I know that in the last few 2.2 releases (and of course in the new 2.4 series) NFS was improved greatly.

Replies are listed 'Best First'.
(tye)Re2: File locking on NFS
by tye (Sage) on Apr 05, 2001 at 09:59 UTC

    google turned up this which says:

    Using a mail spool on a NFS mounted partition is not really safe, because locking (fcntl() and flock()) don't work over NFS without a lockd. That's why most systems also use dotlocking (mailbock.lock files). This works if the MTA and MUA use link() to lock the mailbox, since link() is guaranteed to be atomic, also over NFS.

    However most systems use open(file, O_CREAT|O_WRONLY|O_EXCL, mode) to creat a lockfile. And NFS doesn't know about O_EXCL, so this still doesn't work.

    I'm used to NFS with lockd (which was always broken when I started using NFS but was working great when I stopped using NFS several years ago).

    I distinctly recall reading about how unlink() isn't atomic over NFS so I'm still surprised that link() is guaranteed to be atomic over NFS, but I guess I'll get over that eventually. (:

    But our original querist should note that bit about NFS not knowing about O_EXCL!

            - tye (but my friends call me "Tye")
      That makes sense, and explains what jwz meant in why I hate Java by saying that, There is no way to access link() on Unix, which is the only reliable way to implement file locking.

      Far from that being random trivia, I have something that I need to do at work eventually where I will find that fact useful...