[Gluster-devel] [bug] unify_lookup_cbk should retry without revalidate flag when revalidate failed
LI Daobing
lidaobing at gmail.com
Mon Jan 7 07:41:56 UTC 2008
Hello,
this story is a little long.
consider a two computer, and each computer have one server and one
client model. Computer C1's server is a simple posix+server, C1's
client is a unify on two clients, one client connect to C1's server,
another client connect to C2's server, unify use rr schedule. C2's
server and client use the same conf as the C1.(ns on both server is
OK).
In computer C1's mount diretory M1, we create two file `f1' and `f2',
f1 will stored on C1 and f2 will stored on C2. use ls command to make
fuse init the inode of f1 and f2. Also do run ls in C2's mount
directory to assure f2's fuse will init these two inodes.
then in C1's mount directory M1, run following command 'rm f2; mv f1 f2"
then in C2's mount directory M2, run "cat f2", you will got following
error[1]. more badly, you don't know how to jump out this stat
without restart glusterfs.
[1]
$ cat f2
cat: f2: File descriptor in bad state
In our case, it's more bad, we have 9 clients, and when this happen,
we have to restart 8 clients(in fact, we restart all, :) )
I think, we can avoid this problem in the unify_lookup_cbk, when a
revalidate lookup returned with error, we re-lookup without revalidate
flag, then we can got the correct sub-volume again.
Any suggestion? Thanks.
BTW, there is a more complex case if C2 is opening f1 and f2, and I
don't care that case (at least now).
--
Best Regards,
LI Daobing
More information about the Gluster-devel
mailing list