}
/********************** config llog list **********************/
-static struct list_head config_llog_list = LIST_HEAD_INIT(config_llog_list);
+static CFS_LIST_HEAD(config_llog_list);
static spinlock_t config_list_lock = SPIN_LOCK_UNLOCKED;
/* Take a reference to a config log */
if (rc)
GOTO(err_decref, rc);
- rc = obd_llog_init(obd, OBD_LLOG_GROUP, obd, 0, NULL, NULL);
+ rc = obd_llog_init(obd, &obd->obd_olg, obd, 0, NULL, NULL);
if (rc) {
CERROR("failed to setup llogging subsystems\n");
GOTO(err_cleanup, rc);
cfs_waitq_init(&rq_waitq);
}
spin_unlock(&config_list_lock);
-
+
RETURN(rc);
err_cleanup:
RETURN(rc);
}
-int mgc_reconnect_import(struct obd_import *imp)
-{
- /* Force a new connect attempt */
- ptlrpc_invalidate_import(imp);
- /* Do a fresh connect next time by zeroing the handle */
- ptlrpc_disconnect_import(imp, 1);
- /* Wait for all invalidate calls to finish */
- if (atomic_read(&imp->imp_inval_count) > 0) {
- int rc;
- struct l_wait_info lwi = LWI_INTR(LWI_ON_SIGNAL_NOOP, NULL);
- rc = l_wait_event(imp->imp_recovery_waitq,
- (atomic_read(&imp->imp_inval_count) == 0),
- &lwi);
- if (rc)
- CERROR("Interrupted, inval=%d\n",
- atomic_read(&imp->imp_inval_count));
- }
-
- /* Allow reconnect attempts */
- imp->imp_obd->obd_no_recov = 0;
- /* Remove 'invalid' flag */
- ptlrpc_activate_import(imp);
- /* Attempt a new connect */
- ptlrpc_recover_import(imp, NULL);
- return 0;
-}
-
int mgc_set_info_async(struct obd_export *exp, obd_count keylen,
void *key, obd_count vallen, void *val,
struct ptlrpc_request_set *set)
ptlrpc_import_state_name(imp->imp_state));
/* Resurrect if we previously died */
if (imp->imp_invalid || value > 1)
- mgc_reconnect_import(imp);
+ ptlrpc_reconnect_import(imp);
RETURN(0);
}
/* FIXME move this to mgc_process_config */
- if (KEY_IS("register_target")) {
+ if (KEY_IS(KEY_REGISTER_TARGET)) {
struct mgs_target_info *mti;
if (vallen != sizeof(struct mgs_target_info))
RETURN(-EINVAL);
rc = mgc_target_register(exp, mti);
RETURN(rc);
}
- if (KEY_IS("set_fs")) {
+ if (KEY_IS(KEY_SET_FS)) {
struct super_block *sb = (struct super_block *)val;
struct lustre_sb_info *lsi;
if (vallen != sizeof(struct super_block))
}
RETURN(rc);
}
- if (KEY_IS("clear_fs")) {
+ if (KEY_IS(KEY_CLEAR_FS)) {
if (vallen != 0)
RETURN(-EINVAL);
rc = mgc_fs_cleanup(exp->exp_obd);
switch (event) {
case IMP_EVENT_DISCON:
/* MGC imports should not wait for recovery */
- ptlrpc_invalidate_import(imp);
break;
case IMP_EVENT_INACTIVE:
break;
RETURN(rc);
}
-static int mgc_llog_init(struct obd_device *obd, int group,
+static int mgc_llog_init(struct obd_device *obd, struct obd_llog_group *olg,
struct obd_device *tgt, int count,
struct llog_catid *logid, struct obd_uuid *uuid)
{
struct llog_ctxt *ctxt;
- struct obd_llog_group *olg = &obd->obd_olg;
int rc;
ENTRY;
- LASSERT(group == OBD_LLOG_GROUP);
- LASSERT(olg->olg_group == group);
+ LASSERT(olg == &obd->obd_olg);
rc = llog_setup(obd, olg, LLOG_CONFIG_ORIG_CTXT, tgt, 0, NULL,
&llog_lvfs_ops);
"\n", cld->cld_logname);
GOTO(out_pop, rc = -ENOTCONN);
}
- LCONSOLE_WARN("Failed to get MGS log %s, using "
- "local copy.\n", cld->cld_logname);
+ CDEBUG(D_MGC, "Failed to get MGS log %s, using local "
+ "copy for now, will try to update later.\n",
+ cld->cld_logname);
}
/* Now, whether we copied or not, start using the local llog.
If we failed to copy, we'll start using whatever the old