This is the mail archive of the libc-help@sourceware.org mailing list for the glibc project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On Thu, Dec 31, 2009 at 04:23:33PM +0000, Paulo J. Matos wrote: > Unfortunately it seems that my requirements are even more constrained. > Just remembered that my servers are running NFS which seem to make > semaphores useless since they seem to use /dev/shm. > Thought about flock but wikipedia says: > "Whether flock locks work on network filesystems, such as NFS, is > implementation-dependent. On BSD systems flock calls are successful > no-ops. On Linux prior to 2.6.12 flock calls on NFS files would only > act locally. Kernel 2.6.12 and above implement flock calls on NFS > files using POSIX byte range locks. These locks will be visible to > other NFS clients that implement fcntl()/POSIX locks.[1]" > > On the other hand one of the servers runs 2.6.16 and all the others > are still in 2.4.21. As you can imagine I am not admin on these so > there's no way I build new kernels. > > Is there any solution for me? (I still have the mkdir solution pending > until I confirm it is indeed atomic). Well, according to the man page for mkdir: There are many infelicities in the protocol underlying NFS. Some of these affect mkdir(). open("lockfile", O_CREAT | O_EXCL ...) also have problems, but the manual page has a workaround: O_EXCL is only supported on NFS when using NFSv3 or later on kernel 2.6 or later. In environments where NFS O_EXCL support is not provided, programs that rely on it for performing locking tasks will contain a race condition. Portable programs that want to perform atomic file locking using a lockfile, and need to avoid reliance on NFS support for O_EXCL, can create a unique file on the same file system (e.g., incorporating hostname and PID), and use link(2) to make a link to the lockfile. If link(2) returns 0, the lock is successful. Otherwise, use stat(2) on the unique file to check if its link count has increased to 2, in which case the lock is also successful. -- lfr 0/0
Attachment:
pgp00000.pgp
Description: PGP signature
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |