[Gluster-devel] Locking a new file fails
Kevan Benson
kbenson at a-1networks.com
Thu Aug 9 20:16:59 UTC 2007
When opening and flocking a new file (that is, one that doesn't pre-exist), a
second client trying to open and lock a file of the same name does not block
waiting for the lock. If the file already exists, the second file lock
blocks as expected.
Two processes on the same client do correctly block on the file if it's on a
glusterfs mount.
server.vol:
volume share
type storage/posix
option directory /exports/test
end-volume
volume brick
type features/posix-locks
subvolumes share
end-volume
volume server
type protocol/server
option transport-type tcp/server
option listen-port 6996
subvolumes brick
option auth.ip.brick.allow *
end-volume
client.vol:
volume brick
type protocol/client
option transport-type tcp/client
option remote-host 172.16.1.81
option remote-port 6996
option remote-subvolume brick
end-volume
Test program:
#!/usr/bin/perl
$| = 1;
use Fcntl ':flock';
my $file = shift or "./testlockfile";
my $delay = shift or 10;
my $hostname = `hostname`;
chomp($hostname);
print "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);
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);
print localtime(time())." :: unlocked file\n";
exit 0;
Command line (run from each client):
/mnt/glusterfs/testlock.pl /mnt/glusterfs/testfile7 5
--
- Kevan Benson
- A-1 Networks
More information about the Gluster-devel
mailing list