int cfg_last_idx; /* for partial llog processing */
int cfg_flags;
__u32 cfg_lwp_idx;
+ __u32 cfg_sub_clds;
};
int class_config_parse_llog(const struct lu_env *env, struct llog_ctxt *ctxt,
char *name, struct config_llog_instance *cfg);
-enum {
- CONFIG_T_CONFIG = 0,
- CONFIG_T_SPTLRPC = 1,
- CONFIG_T_RECOVER = 2,
- CONFIG_T_PARAMS = 3,
- CONFIG_T_NODEMAP = 4,
- CONFIG_T_MAX = 5
-};
+#define CONFIG_T_CONFIG 0x01
+#define CONFIG_T_SPTLRPC 0x02
+#define CONFIG_T_RECOVER 0x04
+#define CONFIG_T_PARAMS 0x08
+#define CONFIG_T_NODEMAP 0x10
+
+/* Sub clds should be attached to the config_llog_data when processing
+ * config log for client or server target. */
+#define CONFIG_SUB_CLIENT (CONFIG_T_SPTLRPC | CONFIG_T_RECOVER | \
+ CONFIG_T_PARAMS)
+#define CONFIG_SUB_SERVER (CONFIG_SUB_CLIENT | CONFIG_T_NODEMAP)
#define PARAMS_FILENAME "params"
#define LCTL_UPCALL "lctl"
{
struct lustre_sb_info *lsi = s2lsi(sb);
struct config_llog_data *cld;
- struct config_llog_data *sptlrpc_cld;
- struct config_llog_data *params_cld;
- struct config_llog_data *nodemap_cld;
+ struct config_llog_data *sptlrpc_cld = NULL;
+ struct config_llog_data *params_cld = NULL;
+ struct config_llog_data *nodemap_cld = NULL;
char seclogname[32];
char *ptr;
int rc;
memcpy(seclogname, logname, ptr - logname);
strcpy(seclogname + (ptr - logname), "-sptlrpc");
- sptlrpc_cld = config_log_find_or_add(obd, seclogname, NULL,
- CONFIG_T_SPTLRPC, cfg);
- if (IS_ERR(sptlrpc_cld)) {
- CERROR("can't create sptlrpc log: %s\n", seclogname);
- GOTO(out, rc = PTR_ERR(sptlrpc_cld));
+ if (cfg->cfg_sub_clds & CONFIG_T_SPTLRPC) {
+ sptlrpc_cld = config_log_find_or_add(obd, seclogname, NULL,
+ CONFIG_T_SPTLRPC, cfg);
+ if (IS_ERR(sptlrpc_cld)) {
+ CERROR("can't create sptlrpc log: %s\n", seclogname);
+ GOTO(out, rc = PTR_ERR(sptlrpc_cld));
+ }
}
- nodemap_cld = NULL;
- if (IS_SERVER(lsi) && !IS_MGS(lsi)) {
+ if (!IS_MGS(lsi) && cfg->cfg_sub_clds & CONFIG_T_NODEMAP) {
nodemap_cld = config_log_find_or_add(obd, LUSTRE_NODEMAP_NAME,
NULL, CONFIG_T_NODEMAP,
cfg);
}
}
- params_cld = config_log_find_or_add(obd, PARAMS_FILENAME, sb,
- CONFIG_T_PARAMS, cfg);
- if (IS_ERR(params_cld)) {
- rc = PTR_ERR(params_cld);
- CERROR("%s: can't create params log: rc = %d\n",
- obd->obd_name, rc);
- GOTO(out_nodemap, rc);
+ if (cfg->cfg_sub_clds & CONFIG_T_PARAMS) {
+ params_cld = config_log_find_or_add(obd, PARAMS_FILENAME, sb,
+ CONFIG_T_PARAMS, cfg);
+ if (IS_ERR(params_cld)) {
+ rc = PTR_ERR(params_cld);
+ CERROR("%s: can't create params log: rc = %d\n",
+ obd->obd_name, rc);
+ GOTO(out_nodemap, rc);
+ }
}
cld = do_config_log_add(obd, logname, CONFIG_T_CONFIG, cfg, sb);
}
LASSERT(lsi->lsi_lmd);
- if (!(lsi->lsi_lmd->lmd_flags & LMD_FLG_NOIR)) {
+ if (!(lsi->lsi_lmd->lmd_flags & LMD_FLG_NOIR) &&
+ cfg->cfg_sub_clds & CONFIG_T_RECOVER) {
struct config_llog_data *recover_cld;
ptr = strrchr(seclogname, '-');