struct lustre_handle mgc_conn = {0, };
struct obd_export *exp = NULL;
struct llog_ctxt *rctxt, *lctxt;
- int allow_recov = 0;
+ int recov_bk = 1;
int rc;
LASSERT(mgc);
/* Don't retry if connect fails */
rc = obd_set_info(mgc->obd_self_export,
- strlen("initial_recov"), "initial_recov",
- sizeof(allow_recov), &allow_recov);
- if (rc)
+ strlen("init_recov_bk"), "init_recov_bk",
+ sizeof(recov_bk), &recov_bk);
+ if (rc) {
+ CERROR("can't set init_recov_bk %d\n", rc);
goto out;
+ }
rc = obd_connect(&mgc_conn, mgc, &(mgc->obd_uuid), NULL);
if (rc) {
if (rc)
GOTO(out, rc);
+ if (imp->imp_initial_recov_bk && initial_connect &&
+ /* last in list */
+ (imp->imp_conn_current->oic_item.next == &imp->imp_conn_list)) {
+ CERROR("Last connection (%d) for %s, turning off init_recov\n",
+ imp->imp_conn_cnt, imp->imp_target_uuid.uuid);
+ /* Don't retry if connect fails */
+ rc = 0;
+ obd_set_info(obd->obd_self_export,
+ strlen("initial_recov"), "initial_recov",
+ sizeof(rc), &rc);
+ }
+
rc = obd_reconnect(imp->imp_obd->obd_self_export, obd,
&obd->obd_uuid, &imp->imp_connect_data);
if (rc)