Kevan Benson a écrit :
Vincent Régnard wrote:
Anand Avati a écrit :
Kevan,
I just submitted a patch to fuse-devel which adds flock() support to
fuse.
You could either wait for the next fuse release, or install glusterfs's
patched fuse (2.7.0-glfs3) which has that patch included.
thanks,
avati
I run a small application that uses flock on a clustereds FS (glusterfs
1.3.7 with fuse 2.7.0-glfs5), it clearly shows that flock locking is not
working in that situation. Are you sure flock trouble has been solved ?
Works fine for me. You may want to post your configs in case there's a
problem there.
For testing flock support, I used this perl script that I wrote. The
only arguments are an optional file to lock and the length in seconds to
lock it for. Something like this: ./testlock.pl /mnt/glusterfs/lockfile 10
If you run this from multiple clients or mutliple connections to the
same client, it should be fairly obvious whether locking is working or not.
#!/usr/bin/perl
$| = 1;
use Fcntl ':flock';
my $file = shift || "./testlockfile";
my $delay = shift || 10;
my $hostname = `hostname`;
chomp($hostname);
print "testing flock on lockfile $file with $delay second delay on
$hostname\n";
print localtime(time())." :: opening file\n";
open(my $testfile, '>>', $file) or die("$!\n");
print localtime(time())." :: opened file\n";
print localtime(time())." :: locking file\n";
flock($testfile, LOCK_EX) or die("Error locking :: $!\n");
print localtime(time())." :: locked file\n";
print $testfile "$hostname start ".localtime(time())."\n";
sleep $delay;
print $testfile "$hostname end ".localtime(time())."\n";
flock($testfile, LOCK_UN) or die("Error locking :: $!\n");
print localtime(time())." :: unlocked file\n";
print localtime(time())." :: closing file\n";
close($testfile) or die("$!\n");
print localtime(time())." :: closed file\n";
exit 0;
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 ?
--
Vincent Régnard
vregnard@xxxxxxxxxxxxxxxx
TBS-internet.com
027 630 5902