[Dovecot] Re: 0.99.10.5 release candidate

Miquel van Smoorenburg miquels at cistron.net
Tue Jun 1 00:56:40 EEST 2004


According to Matthias Andree:
> Timo Sirainen <tss at iki.fi> writes:
> 
> > I thought Linux or BSDs didn't support fcntl locks as NFS client? And
> > I've heard they've always been more or less buggy..
> 
> Linux has been fine for a long time now (I believe that with ext2/ext3,
> NFS has been doing fine since 2.2.12 or so, for other file systems, XFS
> and reiserfs in particular, NFS was a problem until late into 2.4).

Linux as a client has supported NFS locking for years. As a server, you
need to use the kernel NFS server, not the user-level NFS server, to
get working NFS locking. That has been stable since 2.4.something.

I've been running lots of linux nfs servers and clients in NFSv3 mode with
locking enabled, all 2.4 kernels, for one or two years now. No problems.

But indeed, you need to use fcntl() locking on Linux to get NFS locking.
lockf() is implemented seperately and doesn't work over NFS. You can
use flock(), since that is just an interface to fcntl(), but that
is Linux specific - on other platforms flock() might not be an interface
to fcntl().

(BTW, it sucks that lockf() doesn't work over NFS - the POSIX fcntl()
 locking semantics are stupid. Closing any other fd in the same process
 that refers to the same file loses all the locks ? Wtf ? )

Mike.


More information about the dovecot mailing list