diff --git a/lustre/ptlrpc/import.c b/lustre/ptlrpc/import.c index aba05cfcf2433290a6fb3796496c471c7b59df9b..eb4b5fa60605a7d2ee60af06b3633b2756a4814c 100644 --- a/lustre/ptlrpc/import.c +++ b/lustre/ptlrpc/import.c @@ -644,7 +644,14 @@ static int ptlrpc_connect_interpret(struct ptlrpc_request *request, *lustre_msg_get_handle(request->rq_repmsg); IMPORT_SET_STATE(imp, LUSTRE_IMP_FULL); - ptlrpc_activate_import(imp); + spin_lock(&imp->imp_lock); + if (imp->imp_invalid) { + spin_unlock(&imp->imp_lock); + ptlrpc_activate_import(imp); + } else { + spin_unlock(&imp->imp_lock); + } + GOTO(finish, rc = 0); } else { spin_unlock(&imp->imp_lock);