@@ -264,6 +264,7 @@
#define OBD_FAIL_OST_STATFS_EINPROGRESS 0x231
#define OBD_FAIL_OST_SET_INFO_NET 0x232
#define OBD_FAIL_OST_DISCONNECT_DELAY 0x245
+#define OBD_FAIL_OST_PREPARE_DELAY 0x247
#define OBD_FAIL_LDLM 0x300
#define OBD_FAIL_LDLM_NAMESPACE_NEW 0x301
@@ -1457,7 +1457,6 @@ static int after_reply(struct ptlrpc_request *req)
lustre_msg_get_service_time(req->rq_repmsg));
rc = ptlrpc_check_status(req);
- imp->imp_connect_error = rc;
if (rc) {
/*
@@ -944,6 +944,7 @@ static int ptlrpc_connect_interpret(const struct lu_env *env,
return 0;
}
+ imp->imp_connect_error = rc;
if (rc) {
struct ptlrpc_request *free_req;
struct ptlrpc_request *tmp;
@@ -228,7 +228,8 @@ static void ptlrpc_pinger_process_import(struct obd_import *imp,
if (level == LUSTRE_IMP_DISCON && !imp_is_deactive(imp)) {
/* wait for a while before trying recovery again */
imp->imp_next_ping = ptlrpc_next_reconnect(imp);
- if (!imp->imp_no_pinger_recover)
+ if (!imp->imp_no_pinger_recover ||
+ imp->imp_connect_error == -EAGAIN)
ptlrpc_initiate_recovery(imp);
} else if (level != LUSTRE_IMP_FULL ||
imp->imp_obd->obd_no_recov ||