array */
struct mutex lov_lock;
struct obd_connect_data lov_ocd;
+ struct proc_dir_entry *targets_proc_entry;
atomic_t lov_refcount;
__u32 lov_death_row; /* tgts scheduled to be deleted */
__u32 lov_tgt_size; /* size of tgts array */
int lov_connects;
int lov_pool_count;
cfs_hash_t *lov_pools_hash_body; /* used for key access */
- cfs_list_t lov_pool_list; /* used for sequential access */
- cfs_proc_dir_entry_t *lov_pool_proc_entry;
+ struct list_head lov_pool_list; /* used for sequential access */
+ struct proc_dir_entry *lov_pool_proc_entry;
enum lustre_sec_part lov_sp_me;
/* Cached LRU and unstable data from upper layer */
struct lmv_desc desc;
struct obd_uuid cluuid;
struct obd_export *exp;
+ struct proc_dir_entry *targets_proc_entry;
struct mutex init_mutex;
int connected;
if (data)
lmv->conn_data = *data;
- if (obd->obd_type->typ_procsym == NULL) {
- obd->obd_type->typ_procsym = lprocfs_seq_register("target_obds",
- obd->obd_proc_entry,
- NULL, NULL);
- if (IS_ERR(obd->obd_type->typ_procsym)) {
+ if (lmv->targets_proc_entry == NULL) {
+ lmv->targets_proc_entry = lprocfs_seq_register("target_obds",
+ obd->obd_proc_entry,
+ NULL, NULL);
+ if (IS_ERR(lmv->targets_proc_entry)) {
CERROR("could not register /proc/fs/lustre/%s/%s/target_obds.",
obd->obd_type->typ_name, obd->obd_name);
- obd->obd_type->typ_procsym = NULL;
+ lmv->targets_proc_entry = NULL;
}
}
if (data != NULL && (data->ocd_connect_flags & OBD_CONNECT_REAL))
rc = lmv_check_connect(obd);
- if (rc && obd->obd_type->typ_procsym != NULL)
- lprocfs_remove(&obd->obd_type->typ_procsym);
- RETURN(rc);
+ if (rc && lmv->targets_proc_entry != NULL)
+ lprocfs_remove(&lmv->targets_proc_entry);
+ RETURN(rc);
}
static void lmv_set_timeouts(struct obd_device *obd)
mdc_obd->obd_name, mdc_obd->obd_uuid.uuid,
atomic_read(&obd->obd_refcount));
- if (obd->obd_type->typ_procsym != NULL) {
+ if (lmv->targets_proc_entry != NULL) {
struct proc_dir_entry *mdc_symlink;
LASSERT(mdc_obd->obd_type != NULL);
LASSERT(mdc_obd->obd_type->typ_name != NULL);
mdc_symlink = lprocfs_add_symlink(mdc_obd->obd_name,
- obd->obd_type->typ_procsym,
+ lmv->targets_proc_entry,
"../../../%s/%s",
mdc_obd->obd_type->typ_name,
mdc_obd->obd_name);
"/proc/fs/lustre/%s/%s/target_obds/%s.",
obd->obd_type->typ_name, obd->obd_name,
mdc_obd->obd_name);
- lprocfs_remove(&obd->obd_type->typ_procsym);
}
}
RETURN(0);
mdc_obd->obd_no_recov = obd->obd_no_recov;
}
- if (obd->obd_type->typ_procsym != NULL)
+ if (lmv->targets_proc_entry != NULL)
lprocfs_remove_proc_entry(mdc_obd->obd_name,
- obd->obd_type->typ_procsym);
+ lmv->targets_proc_entry);
rc = obd_fid_fini(tgt->ltd_exp->exp_obd);
if (rc)
lmv_disconnect_mdc(obd, lmv->tgts[i]);
}
- if (obd->obd_type->typ_procsym != NULL)
- lprocfs_remove(&obd->obd_type->typ_procsym);
+ if (lmv->targets_proc_entry != NULL)
+ lprocfs_remove(&lmv->targets_proc_entry);
else
CERROR("/proc/fs/lustre/%s/%s/target_obds missing\n",
obd->obd_type->typ_name, obd->obd_name);
CDEBUG(D_CONFIG, "Connected tgt idx %d %s (%s) %sactive\n", index,
obd_uuid2str(tgt_uuid), tgt_obd->obd_name, activate ? "":"in");
- if (obd->obd_type->typ_procsym != NULL) {
+ if (lov->targets_proc_entry != NULL) {
struct proc_dir_entry *osc_symlink;
struct obd_device *osc_obd;
LASSERT(osc_obd->obd_type->typ_name != NULL);
osc_symlink = lprocfs_add_symlink(osc_obd->obd_name,
- obd->obd_type->typ_procsym,
+ lov->targets_proc_entry,
"../../../%s/%s",
osc_obd->obd_type->typ_name,
osc_obd->obd_name);
"/proc/fs/lustre/%s/%s/target_obds/%s.",
obd->obd_type->typ_name, obd->obd_name,
osc_obd->obd_name);
- lprocfs_remove(&obd->obd_type->typ_procsym);
}
}
RETURN(0);
if (data)
lov->lov_ocd = *data;
- obd->obd_type->typ_procsym = lprocfs_seq_register("target_obds",
- obd->obd_proc_entry,
- NULL, NULL);
- if (IS_ERR(obd->obd_type->typ_procsym)) {
+ lov->targets_proc_entry = lprocfs_seq_register("target_obds",
+ obd->obd_proc_entry,
+ NULL, NULL);
+ if (IS_ERR(lov->targets_proc_entry)) {
CERROR("%s: could not register /proc/fs/lustre/%s/%s/target_obds.",
obd->obd_name, obd->obd_type->typ_name, obd->obd_name);
- obd->obd_type->typ_procsym = NULL;
+ lov->targets_proc_entry = NULL;
}
obd_getref(obd);
osc_obd->obd_fail = obd->obd_fail;
osc_obd->obd_no_recov = obd->obd_no_recov;
- if (obd->obd_type->typ_procsym)
+ if (lov->targets_proc_entry != NULL)
lprocfs_remove_proc_entry(osc_obd->obd_name,
- obd->obd_type->typ_procsym);
+ lov->targets_proc_entry);
}
obd_register_observer(osc_obd, NULL);
}
obd_putref(obd);
- if (obd->obd_type->typ_procsym)
- lprocfs_remove(&obd->obd_type->typ_procsym);
+ if (lov->targets_proc_entry != NULL)
+ lprocfs_remove(&lov->targets_proc_entry);
out:
rc = class_disconnect(exp); /* bz 9811 */