+ /* Generate a string unique to this super, in case some joker tries
+ * to mount the same fs at two mount points.
+ * Use the address of the super itself.
+ */
+ cfg->cfg_instance = sb;
+ cfg->cfg_uuid = lsi->lsi_llsbi->ll_sb_uuid;
+ cfg->cfg_callback = class_config_llog_handler;
+ cfg->cfg_sub_clds = CONFIG_SUB_CLIENT;
+ /* set up client obds */
+ err = lustre_process_log(sb, profilenm, cfg);
+ if (err < 0)
+ GOTO(out_debugfs, err);
+
+ /* Profile set with LCFG_MOUNTOPT so we can find our mdc and osc obds */
+ lprof = class_get_profile(profilenm);
+ if (lprof == NULL) {
+ LCONSOLE_ERROR_MSG(0x156, "The client profile '%s' could not be"
+ " read from the MGS. Does that filesystem "
+ "exist?\n", profilenm);
+ GOTO(out_debugfs, err = -EINVAL);
+ }
+ CDEBUG(D_CONFIG, "Found profile %s: mdc=%s osc=%s\n", profilenm,
+ lprof->lp_md, lprof->lp_dt);
+
+ dt_len = strlen(lprof->lp_dt) + instlen + 2;
+ OBD_ALLOC(dt, dt_len);
+ if (!dt)
+ GOTO(out_profile, err = -ENOMEM);
+ snprintf(dt, dt_len - 1, "%s-%p", lprof->lp_dt, cfg->cfg_instance);
+
+ md_len = strlen(lprof->lp_md) + instlen + 2;
+ OBD_ALLOC(md, md_len);
+ if (!md)
+ GOTO(out_free_dt, err = -ENOMEM);
+ snprintf(md, md_len - 1, "%s-%p", lprof->lp_md, cfg->cfg_instance);
+
+ /* connections, registrations, sb setup */
+ err = client_common_fill_super(sb, md, dt, mnt);