glusterfs 1.3.1 TLA 489 / Fuse 2.7.0 GLFS3
When writing a file from a client, an operation that does a listing on
that file from another client while the file is being written causes the
write operation to fail when the posix-locks feature is used.
I can replicate this with multiple config types, with AFR and Unify on
the server, or on the client, or in the simplest case, with absolutely
no special xlators besides posix-locks and a single server. Here's the
configs for that case:
Here's what it looks like:
# dd if=/dev/zero of=/mnt/glusterfs/testfile.10MB bs=1k count=10k
dd: writing `/mnt/glusterfs/testfile.10MB': Bad file descriptor
4006+0 records in
4005+0 records out
dd: closing output file `/mnt/glusterfs/testfile.10MB': Bad file descriptor
On the other client I'm simply running this to cause the error:
# ls /mnt/glusterfs/
Here's the configs for the simplest case:
# 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
volume trace
type debug/trace
subvolumes server
option debug on
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