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

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")

Replies are listed 'Best First'.
Re: (tye)Re2: File locking on NFS
by tilly (Archbishop) on Apr 05, 2001 at 15:17 UTC
    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...