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