-
-static int ptlrpc_recover_import_no_retry(struct obd_import *imp,
- char *new_uuid)
-{
- int rc;
- int in_recovery = 0;
- struct l_wait_info lwi;
- ENTRY;
-
- /* Check if reconnect is already in progress */
- cfs_spin_lock(&imp->imp_lock);
- if (imp->imp_state != LUSTRE_IMP_DISCON) {
- in_recovery = 1;
- }
- cfs_spin_unlock(&imp->imp_lock);
-
- if (in_recovery == 1)
- RETURN(-EALREADY);
-
- rc = ptlrpc_connect_import(imp, new_uuid);
- if (rc)
- RETURN(rc);
-
- CDEBUG(D_HA, "%s: recovery started, waiting\n",
- obd2cli_tgt(imp->imp_obd));
-
- lwi = LWI_TIMEOUT(cfs_timeout_cap(cfs_time_seconds(obd_timeout)),
- NULL, NULL);
- rc = l_wait_event(imp->imp_recovery_waitq,
- !ptlrpc_import_in_recovery(imp), &lwi);
- CDEBUG(D_HA, "%s: recovery finished\n",
- obd2cli_tgt(imp->imp_obd));
-
- RETURN(rc);
-}