Whamcloud - gitweb
LU-12095 ptlrpc: ocd_connect_flags are wrong during reconnect
[fs/lustre-release.git] / lustre / ptlrpc / import.c
index 174c12b..b8b9951 100644 (file)
@@ -654,11 +654,12 @@ int ptlrpc_connect_import(struct obd_import *imp)
        int set_transno = 0;
        __u64 committed_before_reconnect = 0;
        struct ptlrpc_request *request;
        int set_transno = 0;
        __u64 committed_before_reconnect = 0;
        struct ptlrpc_request *request;
+       struct obd_connect_data ocd;
        char *bufs[] = { NULL,
                         obd2cli_tgt(imp->imp_obd),
                         obd->obd_uuid.uuid,
                         (char *)&imp->imp_dlm_handle,
        char *bufs[] = { NULL,
                         obd2cli_tgt(imp->imp_obd),
                         obd->obd_uuid.uuid,
                         (char *)&imp->imp_dlm_handle,
-                        (char *)&imp->imp_connect_data,
+                        (char *)&ocd,
                         NULL };
        struct ptlrpc_connect_async_args *aa;
        int rc;
                         NULL };
        struct ptlrpc_connect_async_args *aa;
        int rc;
@@ -705,15 +706,16 @@ int ptlrpc_connect_import(struct obd_import *imp)
 
        /* Reset connect flags to the originally requested flags, in case
         * the server is updated on-the-fly we will get the new features. */
 
        /* Reset connect flags to the originally requested flags, in case
         * the server is updated on-the-fly we will get the new features. */
-       imp->imp_connect_data.ocd_connect_flags = imp->imp_connect_flags_orig;
-       imp->imp_connect_data.ocd_connect_flags2 = imp->imp_connect_flags2_orig;
+       ocd = imp->imp_connect_data;
+       ocd.ocd_connect_flags = imp->imp_connect_flags_orig;
+       ocd.ocd_connect_flags2 = imp->imp_connect_flags2_orig;
        /* Reset ocd_version each time so the server knows the exact versions */
        /* Reset ocd_version each time so the server knows the exact versions */
-       imp->imp_connect_data.ocd_version = LUSTRE_VERSION_CODE;
+       ocd.ocd_version = LUSTRE_VERSION_CODE;
        imp->imp_msghdr_flags &= ~MSGHDR_AT_SUPPORT;
        imp->imp_msghdr_flags &= ~MSGHDR_CKSUM_INCOMPAT18;
 
        rc = obd_reconnect(NULL, imp->imp_obd->obd_self_export, obd,
        imp->imp_msghdr_flags &= ~MSGHDR_AT_SUPPORT;
        imp->imp_msghdr_flags &= ~MSGHDR_CKSUM_INCOMPAT18;
 
        rc = obd_reconnect(NULL, imp->imp_obd->obd_self_export, obd,
-                          &obd->obd_uuid, &imp->imp_connect_data, NULL);
+                          &obd->obd_uuid, &ocd, NULL);
        if (rc)
                GOTO(out, rc);
 
        if (rc)
                GOTO(out, rc);