]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
client: fix fuse client hang because its bad session PipeConnection 29200/head
authorIvanGuan <yunfei.guan@xtaotech.com>
Wed, 17 Apr 2019 02:21:54 +0000 (10:21 +0800)
committerNathan Cutler <ncutler@suse.com>
Tue, 23 Jul 2019 10:21:38 +0000 (12:21 +0200)
commit098fab9f631d0a2074a17cdb52811c2ced4964dd
treefdac17b6b4daff02f601af79cd207e35710c9ffc
parentc1cd465c4f7a185c193fc8999a74b9ff428ac254
client: fix fuse client hang because its bad session PipeConnection
to mds.

There still has a risk client will hang all the time and which
happened in my enviroment a few days ago. Well konw, the start
of mds will go through four stages at least(replay, reconnect,
rejoin, active). According to current logic, we recived
replay mdsmap and marked down pipe will return directly and if
we miss the next reconnect mdsmap the client may hang all the
time becuase we lost the opportunity due to old_inc equal to
new_inc. So we shuold judge if we have lost MDSMap::reconnect
by comparing newstate and oldstate.

Fixes: http://tracker.ceph.com/issues/39305
Signed-off-by: Guan yunfei <yunfei.guan@xtaotech.com>
(cherry picked from commit 51c9f5cf9af61fe317259ac79a503ef8a7139622)

Conflicts:
src/client/Client.cc
- mimic has "kick_maxsize_requests(session); wake_inode_waiters(session);"
  where master has just "wake_up_session_caps(session, true)
src/client/Client.cc