Commit 0b79e161 authored by John L. Hammond's avatar John L. Hammond Committed by Greg Kroah-Hartman

staging/lustre/mgc: remove server specific llog handling

In mgc_process_cfg_log() remove code to handle
LLOG_CONFIG_ORIG_CTXT. This context is not setup on clients.
Signed-off-by: default avatarJohn L. Hammond <john.hammond@intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent ecbed464
......@@ -1461,54 +1461,11 @@ static int mgc_process_recover_log(struct obd_device *obd,
return rc;
}
static int mgc_llog_local_copy(const struct lu_env *env,
struct obd_device *obd,
struct llog_ctxt *rctxt,
struct llog_ctxt *lctxt, char *logname)
{
char *temp_log;
int rc;
/*
* - copy it to backup using llog_backup()
* - copy remote llog to logname using llog_backup()
* - if failed then move backup to logname again
*/
OBD_ALLOC(temp_log, strlen(logname) + 1);
if (!temp_log)
return -ENOMEM;
sprintf(temp_log, "%sT", logname);
/* make a copy of local llog at first */
rc = llog_backup(env, obd, lctxt, lctxt, logname, temp_log);
if (rc < 0 && rc != -ENOENT)
goto out;
/* copy remote llog to the local copy */
rc = llog_backup(env, obd, rctxt, lctxt, logname, logname);
if (rc == -ENOENT) {
/* no remote llog, delete local one too */
llog_erase(env, lctxt, NULL, logname);
} else if (rc < 0) {
/* error during backup, get local one back from the copy */
llog_backup(env, obd, lctxt, lctxt, temp_log, logname);
out:
CERROR("%s: failed to copy remote log %s: rc = %d\n",
obd->obd_name, logname, rc);
}
llog_erase(env, lctxt, NULL, temp_log);
OBD_FREE(temp_log, strlen(logname) + 1);
return rc;
}
/* local_only means it cannot get remote llogs */
static int mgc_process_cfg_log(struct obd_device *mgc,
struct config_llog_data *cld, int local_only)
{
struct llog_ctxt *ctxt, *lctxt = NULL;
struct dt_object *cl_mgc_dir = mgc->u.cli.cl_mgc_configs_dir;
struct llog_ctxt *ctxt;
struct lustre_sb_info *lsi = NULL;
int rc = 0;
bool sptlrpc_started = false;
......@@ -1538,41 +1495,10 @@ static int mgc_process_cfg_log(struct obd_device *mgc,
ctxt = llog_get_context(mgc, LLOG_CONFIG_REPL_CTXT);
LASSERT(ctxt);
lctxt = llog_get_context(mgc, LLOG_CONFIG_ORIG_CTXT);
/* Copy the setup log locally if we can. Don't mess around if we're
* running an MGS though (logs are already local). */
if (lctxt && lsi && IS_SERVER(lsi) && !IS_MGS(lsi) &&
cl_mgc_dir != NULL &&
lu2dt_dev(cl_mgc_dir->do_lu.lo_dev) == lsi->lsi_dt_dev) {
if (!local_only)
/* Only try to copy log if we have the lock. */
rc = mgc_llog_local_copy(env, mgc, ctxt, lctxt,
cld->cld_logname);
if (local_only || rc) {
if (llog_is_empty(env, lctxt, cld->cld_logname)) {
LCONSOLE_ERROR_MSG(0x13a,
"Failed to get MGS log %s and no local copy.\n",
cld->cld_logname);
rc = -ENOENT;
goto out_pop;
}
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
* log has. */
llog_ctxt_put(ctxt);
ctxt = lctxt;
lctxt = NULL;
} else {
if (local_only) /* no local log at client side */ {
rc = -EIO;
goto out_pop;
}
}
if (cld_is_sptlrpc(cld)) {
sptlrpc_conf_log_update_begin(cld->cld_logname);
......@@ -1587,8 +1513,6 @@ static int mgc_process_cfg_log(struct obd_device *mgc,
out_pop:
__llog_ctxt_put(env, ctxt);
if (lctxt)
__llog_ctxt_put(env, lctxt);
/*
* update settings on existing OBDs. doing it inside
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment