Vincent Régnard wrote:
Using this latter script reveals that locking is working fine :)). Using my program properly also works. I was actually removing the lock file when it was locked by another instance ! So my programm was misbehaving after that. But the question is "why is it possible to remove a file when it is locked?". I can imagine the answer is that system call is not the same. Should'nt glusterfs translator forbid or delay unlink() on a file when it knows a file is locked ?
File locking is advisory unless you set specific bits in the file mode. That is, programs will only wait on a previously locked file if they attempt to lock it themselves. Because of this, advisory locking requires all accessing programs to correctly try to obtain a lock on the file. Any program that accesses the file that doesn't attempt to obtain a lock can do anything with the file without honoring, or even knowing about any existing locks. In this case, your manual removal of the lock file acted as the misbehaving program.
In summary, it's not a fuse or glusterfs problem, it's just how locking works.
-- -Kevan Benson -A-1 Networks