* actual sending.
* Returns 0 on success or error code.
*/
-int ptlrpc_connect_import(struct obd_import *imp, char *new_uuid)
+int ptlrpc_connect_import(struct obd_import *imp)
{
struct obd_device *obd = imp->imp_obd;
int initial_connect = 0;
&imp->imp_connect_data.ocd_transno);
cfs_spin_unlock(&imp->imp_lock);
- if (new_uuid) {
- struct obd_uuid uuid;
-
- obd_str2uuid(&uuid, new_uuid);
- rc = import_set_conn_priority(imp, &uuid);
- if (rc)
- GOTO(out, rc);
- }
-
rc = import_select_connection(imp);
if (rc)
GOTO(out, rc);
static void ptlrpc_maybe_ping_import_soon(struct obd_import *imp)
{
#ifdef __KERNEL__
- /* the pinger takes care of issuing the next reconnect request */
- return;
+ int force_verify;
+
+ cfs_spin_lock(&imp->imp_lock);
+ force_verify = imp->imp_force_verify != 0;
+ cfs_spin_unlock(&imp->imp_lock);
+
+ if (force_verify)
+ ptlrpc_pinger_wake_up();
#else
/* liblustre has no pinger thread, so we wakeup pinger anyway */
ptlrpc_pinger_wake_up();
/* All imports are pingable */
imp->imp_pingable = 1;
imp->imp_force_reconnect = 0;
+ imp->imp_force_verify = 0;
if (aa->pcaa_initial_connect) {
if (msg_flags & MSG_CONNECT_REPLAYABLE) {
"invalidating and reconnecting\n",
obd2cli_tgt(imp->imp_obd),
imp->imp_connection->c_remote_uuid.uuid);
- ptlrpc_connect_import(imp, NULL);
+ ptlrpc_connect_import(imp);
RETURN(0);
}
} else {
}
imp->imp_connect_data = *ocd;
+ CDEBUG(D_HA, "obd %s to target with inst %u\n",
+ imp->imp_obd->obd_name, ocd->ocd_instance);
exp = class_conn2export(&imp->imp_dlm_handle);
cfs_spin_unlock(&imp->imp_lock);
/* We sent to the server ocd_cksum_types with bits set
* for algorithms we understand. The server masked off
* the checksum types it doesn't support */
- if ((ocd->ocd_cksum_types & OBD_CKSUM_ALL) == 0) {
+ if ((ocd->ocd_cksum_types & cksum_types_supported()) == 0) {
LCONSOLE_WARN("The negotiation of the checksum "
"alogrithm to use with server %s "
"failed (%x/%x), disabling "
"checksums\n",
obd2cli_tgt(imp->imp_obd),
ocd->ocd_cksum_types,
- OBD_CKSUM_ALL);
+ cksum_types_supported());
cli->cl_checksum = 0;
cli->cl_supp_cksum_types = OBD_CKSUM_CRC32;
- cli->cl_cksum_type = OBD_CKSUM_CRC32;
} else {
cli->cl_supp_cksum_types = ocd->ocd_cksum_types;
-
- if (ocd->ocd_cksum_types & OSC_DEFAULT_CKSUM)
- cli->cl_cksum_type = OSC_DEFAULT_CKSUM;
- else if (ocd->ocd_cksum_types & OBD_CKSUM_ADLER)
- cli->cl_cksum_type = OBD_CKSUM_ADLER;
- else
- cli->cl_cksum_type = OBD_CKSUM_CRC32;
}
} else {
/* The server does not support OBD_CONNECT_CKSUM.
* Enforce CRC32 for backward compatibility*/
cli->cl_supp_cksum_types = OBD_CKSUM_CRC32;
- cli->cl_cksum_type = OBD_CKSUM_CRC32;
}
+ cli->cl_cksum_type =cksum_type_select(cli->cl_supp_cksum_types);
if (ocd->ocd_connect_flags & OBD_CONNECT_BRW_SIZE)
cli->cl_max_pages_per_rpc =
req->rq_import->imp_obd->obd_name,
req->rq_status);
}
- ptlrpc_connect_import(req->rq_import, NULL);
+ ptlrpc_connect_import(req->rq_import);
}
RETURN(0);