+ lustre_cfg_bufs_reset(&bufs, NULL);
+ lustre_cfg_bufs_set_string(&bufs, 1, peer);
+ lcfg = lustre_cfg_new(LCFG_ADD_UUID, &bufs);
+ lcfg->lcfg_nid = nid;
+ rc = class_process_config(lcfg);
+ lustre_cfg_free(lcfg);
+ if (rc < 0)
+ GOTO(out, rc);
+
+ lustre_cfg_bufs_reset(&bufs, name);
+ lustre_cfg_bufs_set_string(&bufs, 1, LUSTRE_MGC_NAME);
+ lustre_cfg_bufs_set_string(&bufs, 2, mgc_uuid.uuid);
+ lcfg = lustre_cfg_new(LCFG_ATTACH, &bufs);
+ rc = class_process_config(lcfg);
+ lustre_cfg_free(lcfg);
+ if (rc < 0)
+ GOTO(out_del_uuid, rc);
+
+ lustre_cfg_bufs_reset(&bufs, name);
+ lustre_cfg_bufs_set_string(&bufs, 1, LUSTRE_MGS_OBDNAME);
+ lustre_cfg_bufs_set_string(&bufs, 2, peer);
+ lcfg = lustre_cfg_new(LCFG_SETUP, &bufs);
+ rc = class_process_config(lcfg);
+ lustre_cfg_free(lcfg);
+ if (rc < 0)
+ GOTO(out_detach, rc);
+
+ while ((mdsnid = strsep(&mgsnid, ","))) {
+ nid = libcfs_str2nid(mdsnid);
+ lustre_cfg_bufs_reset(&bufs, NULL);
+ lustre_cfg_bufs_set_string(&bufs, 1, libcfs_nid2str(nid));
+ lcfg = lustre_cfg_new(LCFG_ADD_UUID, &bufs);
+ lcfg->lcfg_nid = nid;
+ rc = class_process_config(lcfg);
+ lustre_cfg_free(lcfg);
+ if (rc) {
+ CERROR("Add uuid for %s failed %d\n",
+ libcfs_nid2str(nid), rc);
+ continue;
+ }
+
+ lustre_cfg_bufs_reset(&bufs, name);
+ lustre_cfg_bufs_set_string(&bufs, 1, libcfs_nid2str(nid));
+ lcfg = lustre_cfg_new(LCFG_ADD_CONN, &bufs);
+ lcfg->lcfg_nid = nid;
+ rc = class_process_config(lcfg);
+ lustre_cfg_free(lcfg);
+ if (rc) {
+ CERROR("Add conn for %s failed %d\n",
+ libcfs_nid2str(nid), rc);
+ continue;
+ }