case CEPH_SESSION_OPEN:
                if (session->s_state == CEPH_MDS_SESSION_RECONNECTING)
                        pr_info("mds%d reconnect success\n", session->s_mds);
-               session->s_state = CEPH_MDS_SESSION_OPEN;
-               session->s_features = features;
-               renewed_caps(mdsc, session, 0);
-               if (test_bit(CEPHFS_FEATURE_METRIC_COLLECT, &session->s_features))
-                       metric_schedule_delayed(&mdsc->metric);
+
+               if (session->s_state == CEPH_MDS_SESSION_OPEN) {
+                       pr_notice("mds%d is already opened\n", session->s_mds);
+               } else {
+                       session->s_state = CEPH_MDS_SESSION_OPEN;
+                       session->s_features = features;
+                       renewed_caps(mdsc, session, 0);
+                       if (test_bit(CEPHFS_FEATURE_METRIC_COLLECT,
+                                    &session->s_features))
+                               metric_schedule_delayed(&mdsc->metric);
+               }
+
+               /*
+                * The connection maybe broken and the session in client
+                * side has been reinitialized, need to update the seq
+                * anyway.
+                */
+               if (!session->s_seq && seq)
+                       session->s_seq = seq;
+
                wake = 1;
                if (mdsc->stopping)
                        __close_session(mdsc, session);
 
        CEPHFS_FEATURE_MULTI_RECONNECT,
        CEPHFS_FEATURE_DELEG_INO,
        CEPHFS_FEATURE_METRIC_COLLECT,
+       CEPHFS_FEATURE_ALTERNATE_NAME,
+       CEPHFS_FEATURE_NOTIFY_SESSION_STATE,
 
-       CEPHFS_FEATURE_MAX = CEPHFS_FEATURE_METRIC_COLLECT,
+       CEPHFS_FEATURE_MAX = CEPHFS_FEATURE_NOTIFY_SESSION_STATE,
 };
 
 #define CEPHFS_FEATURES_CLIENT_SUPPORTED {     \
        CEPHFS_FEATURE_MULTI_RECONNECT,         \
        CEPHFS_FEATURE_DELEG_INO,               \
        CEPHFS_FEATURE_METRIC_COLLECT,          \
+       CEPHFS_FEATURE_NOTIFY_SESSION_STATE,    \
 }
 
 /*