@@ -471,6 +471,7 @@ static int lmv_check_connect(struct obd_device *obd)
continue;
--lmv->lmv_mdt_descs.ltd_lmv_desc.ld_active_tgt_count;
+ obd_register_observer(tgt->ltd_exp->exp_obd, NULL);
obd_disconnect(tgt->ltd_exp);
}
@@ -134,8 +134,10 @@ int lov_connect_osc(struct obd_device *obd, u32 index, int activate,
tgt_obd = lov->lov_tgts[index]->ltd_obd;
if (!tgt_obd->obd_set_up) {
- CERROR("Target %s not set up\n", obd_uuid2str(tgt_uuid));
- return -EINVAL;
+ rc = -EINVAL;
+ CERROR("%s: target not set up: rc = %d\n",
+ obd_uuid2str(tgt_uuid), rc);
+ return rc;
}
/* override the sp_me from lov */
@@ -159,7 +161,7 @@ int lov_connect_osc(struct obd_device *obd, u32 index, int activate,
rc = obd_register_observer(tgt_obd, obd);
if (rc) {
- CERROR("Target %s register_observer error %d\n",
+ CERROR("%s: target register_observer error: rc = %d\n",
obd_uuid2str(tgt_uuid), rc);
return rc;
}
@@ -174,8 +176,9 @@ int lov_connect_osc(struct obd_device *obd, u32 index, int activate,
rc = obd_connect(NULL, &lov->lov_tgts[index]->ltd_exp, tgt_obd,
&lov_osc_uuid, data, lov->lov_cache);
if (rc || !lov->lov_tgts[index]->ltd_exp) {
- CERROR("Target %s connect error %d\n",
+ CERROR("%s: target connect error: rc = %d\n",
obd_uuid2str(tgt_uuid), rc);
+ obd_register_observer(tgt_obd, NULL);
return -ENODEV;
}
@@ -380,6 +380,10 @@ static int sptlrpc_rule_set_choose(struct sptlrpc_rule_set *rset,
struct sptlrpc_rule *r;
int n;
+ if (nid_is_lo0(nid))
+ /* do not enforce any sec flavor on loopback connection */
+ return 0;
+
for (n = 0; n < rset->srs_nrule; n++) {
r = &rset->srs_rules[n];