From: Henrik Korkuc Date: Sun, 19 Feb 2017 09:44:20 +0000 (+0200) Subject: client/Client.cc: add feature to reconnect client after MDS reset X-Git-Tag: v12.0.2~59^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F13522%2Fhead;p=ceph.git client/Client.cc: add feature to reconnect client after MDS reset Client.cc marks session as stale instead of reconecting after received reset from MDS. On MDS side session is closed so MDS is ignoring cap renew. This adds option to reconnect stale client sessions instead of just marking sessions stale. Fixes: http://tracker.ceph.com/issues/18757 Signed-off-by: Henrik Korkuc --- diff --git a/doc/cephfs/client-config-ref.rst b/doc/cephfs/client-config-ref.rst index a789a6d4d16c..ce5562fae406 100644 --- a/doc/cephfs/client-config-ref.rst +++ b/doc/cephfs/client-config-ref.rst @@ -147,6 +147,12 @@ :Type: Integer :Default: ``131072`` (128KB) +``client_reconnect_stale`` + +:Description: Automatically reconnect stale session. +:Type: Boolean +:Default: ``false`` + ``client_snapdir`` :Description: Set the snapshot directory name. diff --git a/src/client/Client.cc b/src/client/Client.cc index 8d711553fc8f..e336d1611e54 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -12708,8 +12708,16 @@ void Client::ms_handle_remote_reset(Connection *con) break; case MetaSession::STATE_OPEN: - ldout(cct, 1) << "reset from mds we were open; mark session as stale" << dendl; - s->state = MetaSession::STATE_STALE; + { + const md_config_t *conf = cct->_conf; + if (conf->client_reconnect_stale) { + ldout(cct, 1) << "reset from mds we were open; close mds session for reconnect" << dendl; + _closed_mds_session(s); + } else { + ldout(cct, 1) << "reset from mds we were open; mark session as stale" << dendl; + s->state = MetaSession::STATE_STALE; + } + } break; case MetaSession::STATE_NEW: diff --git a/src/common/config_opts.h b/src/common/config_opts.h index c9a9beefff68..8794f50c8b9b 100644 --- a/src/common/config_opts.h +++ b/src/common/config_opts.h @@ -423,6 +423,7 @@ OPTION(client_trace, OPT_STR, "") OPTION(client_readahead_min, OPT_LONGLONG, 128*1024) // readahead at _least_ this much. OPTION(client_readahead_max_bytes, OPT_LONGLONG, 0) // default unlimited OPTION(client_readahead_max_periods, OPT_LONGLONG, 4) // as multiple of file layout period (object size * num stripes) +OPTION(client_reconnect_stale, OPT_BOOL, false) // automatically reconnect stale session OPTION(client_snapdir, OPT_STR, ".snap") OPTION(client_mountpoint, OPT_STR, "/") OPTION(client_mount_uid, OPT_INT, -1)