/* Disconnect */
__lov_del_obd(obd, tgt);
}
-
- if (lov->lov_tgts_kobj)
- kobject_put(lov->lov_tgts_kobj);
-
} else {
mutex_unlock(&lov->lov_lock);
}
obd_getref(obd);
- lov->lov_tgts_kobj = kobject_create_and_add("target_obds",
- &obd->obd_kset.kobj);
-
for (i = 0; i < lov->desc.ld_tgt_count; i++) {
tgt = lov->lov_tgts[i];
if (!tgt || obd_uuid_empty(&tgt->ltd_uuid))
GOTO(out, rc);
rc = lov_tunables_init(obd);
+ if (rc)
+ GOTO(out, rc);
+
+ lov->lov_tgts_kobj = kobject_create_and_add("target_obds",
+ &obd->obd_kset.kobj);
+
out:
return rc;
}
struct pool_desc *pool;
ENTRY;
+ if (lov->lov_tgts_kobj) {
+ kobject_put(lov->lov_tgts_kobj);
+ lov->lov_tgts_kobj = NULL;
+ }
+
list_for_each_safe(pos, tmp, &lov->lov_pool_list) {
pool = list_entry(pos, struct pool_desc, pool_list);
/* free pool structs */