X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Fmgs%2Fmgs_llog.c;h=6ba85cabc1d7a27a801417c02ffe0d85caacd755;hp=1fbc87d671cffe680d6667361cfe89b7023c96f3;hb=f52e7ac294e9091b1ef8e9f8151bd47625be5d8d;hpb=bbe5f8ec92c63cc4fcb9ab0b316e92fb2a3d9683;ds=sidebyside diff --git a/lustre/mgs/mgs_llog.c b/lustre/mgs/mgs_llog.c index 1fbc87d..6ba85ca 100644 --- a/lustre/mgs/mgs_llog.c +++ b/lustre/mgs/mgs_llog.c @@ -27,7 +27,7 @@ * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. * - * Copyright (c) 2011, 2013, Intel Corporation. + * Copyright (c) 2011, 2015, Intel Corporation. */ /* * This file is part of Lustre, http://www.lustre.org/ @@ -72,7 +72,7 @@ int class_dentry_readdir(const struct lu_env *env, LASSERT(dir->do_index_ops); iops = &dir->do_index_ops->dio_it; - it = iops->init(env, dir, LUDA_64BITHASH, BYPASS_CAPA); + it = iops->init(env, dir, LUDA_64BITHASH); if (IS_ERR(it)) RETURN(PTR_ERR(it)); @@ -334,12 +334,12 @@ static struct fs_db *mgs_new_fsdb(const struct lu_env *env, if (strlen(fsname) >= sizeof(fsdb->fsdb_name)) { CERROR("fsname %s is too long\n", fsname); - RETURN(NULL); + RETURN(ERR_PTR(-EINVAL)); } OBD_ALLOC_PTR(fsdb); if (!fsdb) - RETURN(NULL); + RETURN(ERR_PTR(-ENOMEM)); strcpy(fsdb->fsdb_name, fsname); mutex_init(&fsdb->fsdb_mutex); @@ -348,6 +348,7 @@ static struct fs_db *mgs_new_fsdb(const struct lu_env *env, if (strcmp(fsname, MGSSELF_NAME) == 0) { set_bit(FSDB_MGS_SELF, &fsdb->fsdb_flags); + fsdb->fsdb_mgs = mgs; } else { OBD_ALLOC(fsdb->fsdb_ost_index_map, INDEX_MAP_SIZE); OBD_ALLOC(fsdb->fsdb_mdt_index_map, INDEX_MAP_SIZE); @@ -380,7 +381,7 @@ err: name_destroy(&fsdb->fsdb_clilov); name_destroy(&fsdb->fsdb_clilmv); OBD_FREE_PTR(fsdb); - RETURN(NULL); + RETURN(ERR_PTR(rc)); } static void mgs_free_fsdb(struct mgs_device *mgs, struct fs_db *fsdb) @@ -443,11 +444,11 @@ int mgs_find_or_make_fsdb(const struct lu_env *env, CDEBUG(D_MGS, "Creating new db\n"); fsdb = mgs_new_fsdb(env, mgs, name); /* lock fsdb_mutex until the db is loaded from llogs */ - if (fsdb) + if (!IS_ERR(fsdb)) mutex_lock(&fsdb->fsdb_mutex); mutex_unlock(&mgs->mgs_mutex); - if (!fsdb) - RETURN(-ENOMEM); + if (IS_ERR(fsdb)) + RETURN(PTR_ERR(fsdb)); if (!test_bit(FSDB_MGS_SELF, &fsdb->fsdb_flags)) { /* populate the db from the client llog */ @@ -559,13 +560,14 @@ static int mgs_set_index(const struct lu_env *env, fsdb->fsdb_mdt_count ++; } - if (mti->mti_stripe_index >= INDEX_MAP_SIZE * 8) { - LCONSOLE_ERROR_MSG(0x13f, "Server %s requested index %d, " - "but the max index is %d.\n", - mti->mti_svname, mti->mti_stripe_index, - INDEX_MAP_SIZE * 8); + /* the last index(0xffff) is reserved for default value. */ + if (mti->mti_stripe_index >= INDEX_MAP_SIZE * 8 - 1) { + LCONSOLE_ERROR_MSG(0x13f, "Server %s requested index %u, " + "but index must be less than %u.\n", + mti->mti_svname, mti->mti_stripe_index, + INDEX_MAP_SIZE * 8 - 1); GOTO(out_up, rc = -ERANGE); - } + } if (test_bit(mti->mti_stripe_index, imap)) { if ((mti->mti_flags & LDD_F_VIRGIN) && @@ -823,21 +825,24 @@ static inline int record_add_uuid(const struct lu_env *env, struct llog_handle *llh, uint64_t nid, char *uuid) { - return record_base(env, llh, NULL, nid, LCFG_ADD_UUID, uuid, 0, 0, 0); + return record_base(env, llh, NULL, nid, LCFG_ADD_UUID, uuid, + NULL, NULL, NULL); } static inline int record_add_conn(const struct lu_env *env, struct llog_handle *llh, char *devname, char *uuid) { - return record_base(env, llh, devname, 0, LCFG_ADD_CONN, uuid, 0, 0, 0); + return record_base(env, llh, devname, 0, LCFG_ADD_CONN, uuid, + NULL, NULL, NULL); } static inline int record_attach(const struct lu_env *env, struct llog_handle *llh, char *devname, char *type, char *uuid) { - return record_base(env, llh,devname, 0, LCFG_ATTACH, type, uuid, 0, 0); + return record_base(env, llh, devname, 0, LCFG_ATTACH, type, uuid, + NULL, NULL); } static inline int record_setup(const struct lu_env *env, @@ -1315,8 +1320,8 @@ static inline int record_lov_add(const struct lu_env *env, char *lov_name, char *ost_uuid, char *index, char *gen) { - return record_base(env,llh,lov_name,0,LCFG_LOV_ADD_OBD, - ost_uuid, index, gen, 0); + return record_base(env, llh, lov_name, 0, LCFG_LOV_ADD_OBD, + ost_uuid, index, gen, NULL); } static inline int record_mount_opt(const struct lu_env *env, @@ -1324,8 +1329,8 @@ static inline int record_mount_opt(const struct lu_env *env, char *profile, char *lov_name, char *mdc_name) { - return record_base(env,llh,NULL,0,LCFG_MOUNTOPT, - profile,lov_name,mdc_name,0); + return record_base(env, llh, NULL, 0, LCFG_MOUNTOPT, + profile, lov_name, mdc_name, NULL); } static int record_marker(const struct lu_env *env, @@ -1441,10 +1446,12 @@ out_end: } /* write the lcfg in all logs for the given fs */ -int mgs_write_log_direct_all(const struct lu_env *env, struct mgs_device *mgs, - struct fs_db *fsdb, struct mgs_target_info *mti, - struct llog_cfg_rec *lcr, char *devname, - char *comment, int server_only) +static int mgs_write_log_direct_all(const struct lu_env *env, + struct mgs_device *mgs, + struct fs_db *fsdb, + struct mgs_target_info *mti, + struct llog_cfg_rec *lcr, char *devname, + char *comment, int server_only) { struct list_head log_list; struct mgs_direntry *dirent, *n; @@ -1468,7 +1475,9 @@ int mgs_write_log_direct_all(const struct lu_env *env, struct mgs_device *mgs, if (server_only && strstr(dirent->mde_name, "-client") != NULL) goto next; - if (strncmp(fsname, dirent->mde_name, len) != 0) + if (strlen(dirent->mde_name) <= len || + strncmp(fsname, dirent->mde_name, len) != 0 || + dirent->mde_name[len] != '-') goto next; CDEBUG(D_MGS, "Changing log %s\n", dirent->mde_name); @@ -1634,7 +1643,7 @@ static int mgs_steal_client_llog_handler(const struct lu_env *env, RETURN(rc); if (lcfg->lcfg_command == LCFG_ADD_UUID) { - uint64_t nodenid = lcfg->lcfg_nid; + __u64 nodenid = lcfg->lcfg_nid; if (strlen(tmti->mti_uuid) == 0) { /* target uuid not set, this config record is before @@ -1643,9 +1652,12 @@ static int mgs_steal_client_llog_handler(const struct lu_env *env, tmti->mti_nids[tmti->mti_nid_count] = nodenid; tmti->mti_nid_count++; } else { + char nidstr[LNET_NIDSTR_SIZE]; + /* failover node nid */ + libcfs_nid2str_r(nodenid, nidstr, sizeof(nidstr)); rc = add_param(tmti->mti_params, PARAM_FAILNODE, - libcfs_nid2str(nodenid)); + nidstr); } RETURN(rc); @@ -1891,17 +1903,20 @@ static int mgs_write_log_failnids(const struct lu_env *env, */ while (class_find_param(ptr, PARAM_FAILNODE, &ptr) == 0) { while (class_parse_nid(ptr, &nid, &ptr) == 0) { - if (failnodeuuid == NULL) { - /* We don't know the failover node name, - so just use the first nid as the uuid */ - rc = name_create(&failnodeuuid, - libcfs_nid2str(nid), ""); - if (rc) - return rc; - } - CDEBUG(D_MGS, "add nid %s for failover uuid %s, " - "client %s\n", libcfs_nid2str(nid), - failnodeuuid, cliname); + char nidstr[LNET_NIDSTR_SIZE]; + + if (failnodeuuid == NULL) { + /* We don't know the failover node name, + * so just use the first nid as the uuid */ + libcfs_nid2str_r(nid, nidstr, sizeof(nidstr)); + rc = name_create(&failnodeuuid, nidstr, ""); + if (rc != 0) + return rc; + } + CDEBUG(D_MGS, "add nid %s for failover uuid %s, " + "client %s\n", + libcfs_nid2str_r(nid, nidstr, sizeof(nidstr)), + failnodeuuid, cliname); rc = record_add_uuid(env, llh, nid, failnodeuuid); /* * If *ptr is ':', we have added all NIDs for @@ -1935,9 +1950,10 @@ static int mgs_write_log_mdc_to_lmv(const struct lu_env *env, char *nodeuuid = NULL; char *mdcuuid = NULL; char *lmvuuid = NULL; - char index[6]; - int i, rc; - ENTRY; + char index[6]; + char nidstr[LNET_NIDSTR_SIZE]; + int i, rc; + ENTRY; if (mgs_log_is_empty(env, mgs, logname)) { CERROR("log is empty! Logical error\n"); @@ -1947,7 +1963,8 @@ static int mgs_write_log_mdc_to_lmv(const struct lu_env *env, CDEBUG(D_MGS, "adding mdc for %s to log %s:lmv(%s)\n", mti->mti_svname, logname, lmvname); - rc = name_create(&nodeuuid, libcfs_nid2str(mti->mti_nids[0]), ""); + libcfs_nid2str_r(mti->mti_nids[0], nidstr, sizeof(nidstr)); + rc = name_create(&nodeuuid, nidstr, ""); if (rc) RETURN(rc); rc = name_create(&mdcname, mti->mti_svname, "-mdc"); @@ -1967,19 +1984,21 @@ static int mgs_write_log_mdc_to_lmv(const struct lu_env *env, "add mdc"); if (rc) GOTO(out_end, rc); - for (i = 0; i < mti->mti_nid_count; i++) { - CDEBUG(D_MGS, "add nid %s for mdt\n", - libcfs_nid2str(mti->mti_nids[i])); + for (i = 0; i < mti->mti_nid_count; i++) { + CDEBUG(D_MGS, "add nid %s for mdt\n", + libcfs_nid2str_r(mti->mti_nids[i], + nidstr, sizeof(nidstr))); rc = record_add_uuid(env, llh, mti->mti_nids[i], nodeuuid); if (rc) GOTO(out_end, rc); - } + } rc = record_attach(env, llh, mdcname, LUSTRE_MDC_NAME, lmvuuid); if (rc) GOTO(out_end, rc); - rc = record_setup(env, llh, mdcname, mti->mti_uuid, nodeuuid, 0, 0); + rc = record_setup(env, llh, mdcname, mti->mti_uuid, nodeuuid, + NULL, NULL); if (rc) GOTO(out_end, rc); rc = mgs_write_log_failnids(env, mti, llh, mdcname); @@ -2062,6 +2081,7 @@ static int mgs_write_log_osp_to_mdt(const struct lu_env *env, char *mdtname = NULL; char *lovname = NULL; char index_str[16]; + char nidstr[LNET_NIDSTR_SIZE]; int i, rc; ENTRY; @@ -2077,7 +2097,8 @@ static int mgs_write_log_osp_to_mdt(const struct lu_env *env, if (rc) RETURN(rc); - rc = name_create(&nodeuuid, libcfs_nid2str(mti->mti_nids[0]), ""); + libcfs_nid2str_r(mti->mti_nids[0], nidstr, sizeof(nidstr)); + rc = name_create(&nodeuuid, nidstr, ""); if (rc) GOTO(out_destory, rc); @@ -2113,11 +2134,12 @@ static int mgs_write_log_osp_to_mdt(const struct lu_env *env, for (i = 0; i < mti->mti_nid_count; i++) { CDEBUG(D_MGS, "add nid %s for mdt\n", - libcfs_nid2str(mti->mti_nids[i])); + libcfs_nid2str_r(mti->mti_nids[i], + nidstr, sizeof(nidstr))); rc = record_add_uuid(env, llh, mti->mti_nids[i], nodeuuid); if (rc) GOTO(out_end, rc); - } + } rc = record_attach(env, llh, ospname, LUSTRE_OSP_NAME, lovuuid); if (rc) @@ -2133,8 +2155,7 @@ static int mgs_write_log_osp_to_mdt(const struct lu_env *env, GOTO(out_end, rc); /* Add mdc(osp) to lod */ - snprintf(index_str, sizeof(mti->mti_stripe_index), "%d", - mti->mti_stripe_index); + snprintf(index_str, sizeof(index_str), "%d", mti->mti_stripe_index); rc = record_base(env, llh, lovname, 0, LCFG_ADD_MDC, mti->mti_uuid, index_str, "1", NULL); if (rc) @@ -2335,25 +2356,27 @@ static int mgs_write_log_osc_to_lov(const struct lu_env *env, char *logname, char *suffix, char *lovname, enum lustre_sec_part sec_part, int flags) { - struct llog_handle *llh = NULL; + struct llog_handle *llh = NULL; char *nodeuuid = NULL; char *oscname = NULL; char *oscuuid = NULL; char *lovuuid = NULL; char *svname = NULL; - char index[6]; - int i, rc; + char index[6]; + char nidstr[LNET_NIDSTR_SIZE]; + int i, rc; + ENTRY; - ENTRY; - CDEBUG(D_INFO, "adding osc for %s to log %s\n", - mti->mti_svname, logname); + CDEBUG(D_INFO, "adding osc for %s to log %s\n", + mti->mti_svname, logname); if (mgs_log_is_empty(env, mgs, logname)) { - CERROR("log is empty! Logical error\n"); - RETURN (-EINVAL); - } + CERROR("log is empty! Logical error\n"); + RETURN(-EINVAL); + } - rc = name_create(&nodeuuid, libcfs_nid2str(mti->mti_nids[0]), ""); + libcfs_nid2str_r(mti->mti_nids[0], nidstr, sizeof(nidstr)); + rc = name_create(&nodeuuid, nidstr, ""); if (rc) RETURN(rc); rc = name_create(&svname, mti->mti_svname, "-osc"); @@ -2404,16 +2427,19 @@ static int mgs_write_log_osc_to_lov(const struct lu_env *env, * (multiple interfaces), while nids after as failover node nids. * See mgs_steal_client_llog_handler() LCFG_ADD_UUID. */ - for (i = 0; i < mti->mti_nid_count; i++) { - CDEBUG(D_MGS, "add nid %s\n", libcfs_nid2str(mti->mti_nids[i])); + for (i = 0; i < mti->mti_nid_count; i++) { + CDEBUG(D_MGS, "add nid %s\n", + libcfs_nid2str_r(mti->mti_nids[i], + nidstr, sizeof(nidstr))); rc = record_add_uuid(env, llh, mti->mti_nids[i], nodeuuid); if (rc) GOTO(out_end, rc); - } + } rc = record_attach(env, llh, oscname, LUSTRE_OSC_NAME, lovuuid); if (rc) GOTO(out_end, rc); - rc = record_setup(env, llh, oscname, mti->mti_uuid, nodeuuid, 0, 0); + rc = record_setup(env, llh, oscname, mti->mti_uuid, nodeuuid, + NULL, NULL); if (rc) GOTO(out_end, rc); rc = mgs_write_log_failnids(env, mti, llh, oscname); @@ -2487,7 +2513,7 @@ static int mgs_write_log_ost(const struct lu_env *env, GOTO(out_end, rc); rc = record_setup(env, llh, mti->mti_svname, "dev"/*ignored*/, "type"/*ignored*/, - failout ? "n" : "f", 0/*options*/); + failout ? "n" : "f", NULL/*options*/); if (rc) GOTO(out_end, rc); rc = record_marker(env, llh, fsdb, CM_END, mti->mti_svname, "add ost"); @@ -2553,7 +2579,7 @@ out_end: GOTO(out_free, rc); } rc = mgs_write_log_osc_to_lov(env, mgs, fsdb, mti, logname, "", - fsdb->fsdb_clilov, LUSTRE_SP_CLI, 0); + fsdb->fsdb_clilov, LUSTRE_SP_CLI, flags); out_free: name_destroy(&logname); RETURN(rc); @@ -3046,6 +3072,9 @@ static int mgs_srpc_set_param_mem(struct fs_db *fsdb, } rset = &tgtconf->mtsc_rset; + } else if (strcmp(svname, MGSSELF_NAME) == 0) { + /* put _mgs related srpc rule directly in mgs ruleset */ + rset = &fsdb->fsdb_mgs->mgs_lut.lut_sptlrpc_rset; } else { rset = &fsdb->fsdb_srpc_gen; } @@ -3289,61 +3318,77 @@ static int mgs_write_log_param(const struct lu_env *env, GOTO(end, rc); } - if (class_match_param(ptr, PARAM_OSC""PARAM_ACTIVE, &tmp) == 0) { - /* active=0 means off, anything else means on */ - int flag = (*tmp == '0') ? CM_EXCLUDE : 0; - int i; + if (class_match_param(ptr, PARAM_OSC PARAM_ACTIVE, &tmp) == 0 || + class_match_param(ptr, PARAM_MDC PARAM_ACTIVE, &tmp) == 0) { + /* active=0 means off, anything else means on */ + int flag = (*tmp == '0') ? CM_EXCLUDE : 0; + bool deactive_osc = memcmp(ptr, PARAM_OSC PARAM_ACTIVE, + strlen(PARAM_OSC PARAM_ACTIVE)) == 0; + int i; - if (!(mti->mti_flags & LDD_F_SV_TYPE_OST)) { - LCONSOLE_ERROR_MSG(0x144, "%s: Only OSCs can " - "be (de)activated.\n", - mti->mti_svname); - GOTO(end, rc = -EINVAL); - } - LCONSOLE_WARN("Permanently %sactivating %s\n", - flag ? "de": "re", mti->mti_svname); - /* Modify clilov */ + if (!deactive_osc) { + __u32 index; + + rc = server_name2index(mti->mti_svname, &index, NULL); + if (rc < 0) + GOTO(end, rc); + + if (index == 0) { + LCONSOLE_ERROR_MSG(0x144, "%s: MDC0 can not be" + " (de)activated.\n", + mti->mti_svname); + GOTO(end, rc = -EINVAL); + } + } + + LCONSOLE_WARN("Permanently %sactivating %s\n", + flag ? "de" : "re", mti->mti_svname); + /* Modify clilov */ rc = name_create(&logname, mti->mti_fsname, "-client"); - if (rc) + if (rc < 0) GOTO(end, rc); rc = mgs_modify(env, mgs, fsdb, mti, logname, - mti->mti_svname, "add osc", flag); - name_destroy(&logname); - if (rc) - goto active_err; - /* Modify mdtlov */ - /* Add to all MDT logs for CMD */ - for (i = 0; i < INDEX_MAP_SIZE * 8; i++) { + mti->mti_svname, + deactive_osc ? "add osc" : "add mdc", flag); + name_destroy(&logname); + if (rc < 0) + goto active_err; + + /* Modify mdtlov */ + /* Add to all MDT logs for DNE */ + for (i = 0; i < INDEX_MAP_SIZE * 8; i++) { if (!test_bit(i, fsdb->fsdb_mdt_index_map)) - continue; + continue; rc = name_create_mdt(&logname, mti->mti_fsname, i); - if (rc) + if (rc < 0) GOTO(end, rc); rc = mgs_modify(env, mgs, fsdb, mti, logname, - mti->mti_svname, "add osc", flag); - name_destroy(&logname); - if (rc) - goto active_err; - } - active_err: - if (rc) { - LCONSOLE_ERROR_MSG(0x145, "Couldn't find %s in" - "log (%d). No permanent " - "changes were made to the " - "config log.\n", - mti->mti_svname, rc); + mti->mti_svname, + deactive_osc ? "add osc" : "add osp", + flag); + name_destroy(&logname); + if (rc < 0) + goto active_err; + } +active_err: + if (rc < 0) { + LCONSOLE_ERROR_MSG(0x145, "Couldn't find %s in" + "log (%d). No permanent " + "changes were made to the " + "config log.\n", + mti->mti_svname, rc); if (test_bit(FSDB_OLDLOG14, &fsdb->fsdb_flags)) - LCONSOLE_ERROR_MSG(0x146, "This may be" - " because the log" - "is in the old 1.4" - "style. Consider " - " --writeconf to " - "update the logs.\n"); - GOTO(end, rc); - } - /* Fall through to osc proc for deactivating live OSC - on running MDT / clients. */ - } + LCONSOLE_ERROR_MSG(0x146, "This may be" + " because the log" + "is in the old 1.4" + "style. Consider " + " --writeconf to " + "update the logs.\n"); + GOTO(end, rc); + } + /* Fall through to osc/mdc proc for deactivating live + OSC/OSP on running MDT / clients. */ + } /* Below here, let obd's XXX_process_config methods handle it */ /* All lov. in proc */ @@ -3463,6 +3508,78 @@ static int mgs_write_log_param(const struct lu_env *env, } } } + + /* For mdc activate/deactivate, it affects OSP on MDT as well */ + if (class_match_param(ptr, PARAM_MDC PARAM_ACTIVE, &tmp) == 0 && + rc == 0) { + char suffix[16]; + char *lodname = NULL; + char *param_str = NULL; + int i; + int index; + + /* replace mdc with osp */ + memcpy(ptr, PARAM_OSP, strlen(PARAM_OSP)); + rc = server_name2index(mti->mti_svname, &index, NULL); + if (rc < 0) { + memcpy(ptr, PARAM_MDC, strlen(PARAM_MDC)); + GOTO(end, rc); + } + + for (i = 0; i < INDEX_MAP_SIZE * 8; i++) { + if (!test_bit(i, fsdb->fsdb_mdt_index_map)) + continue; + + if (i == index) + continue; + + name_destroy(&logname); + rc = name_create_mdt(&logname, mti->mti_fsname, + i); + if (rc < 0) + break; + + if (mgs_log_is_empty(env, mgs, logname)) + continue; + + snprintf(suffix, sizeof(suffix), "-osp-MDT%04x", + i); + name_destroy(&cname); + rc = name_create(&cname, mti->mti_svname, + suffix); + if (rc < 0) + break; + + rc = mgs_wlp_lcfg(env, mgs, fsdb, mti, logname, + &mgi->mgi_bufs, cname, ptr); + if (rc < 0) + break; + + /* Add configuration log for noitfying LOD + * to active/deactive the OSP. */ + name_destroy(¶m_str); + rc = name_create(¶m_str, cname, + (*tmp == '0') ? ".active=0" : + ".active=1"); + if (rc < 0) + break; + + name_destroy(&lodname); + rc = name_create(&lodname, logname, "-mdtlov"); + if (rc < 0) + break; + + rc = mgs_wlp_lcfg(env, mgs, fsdb, mti, logname, + &mgi->mgi_bufs, lodname, + param_str); + if (rc < 0) + break; + } + memcpy(ptr, PARAM_MDC, strlen(PARAM_MDC)); + name_destroy(&lodname); + name_destroy(¶m_str); + } + name_destroy(&logname); name_destroy(&cname); GOTO(end, rc); @@ -3805,6 +3922,19 @@ static void print_lustre_cfg(struct lustre_cfg *lcfg) EXIT; } +/* Setup _mgs fsdb and log + */ +int mgs__mgs_fsdb_setup(const struct lu_env *env, struct mgs_device *mgs, + struct fs_db *fsdb) +{ + int rc; + ENTRY; + + rc = mgs_find_or_make_fsdb(env, mgs, MGSSELF_NAME, &fsdb); + + RETURN(rc); +} + /* Setup params fsdb and log */ int mgs_params_fsdb_setup(const struct lu_env *env, struct mgs_device *mgs, @@ -3960,7 +4090,7 @@ static int mgs_write_log_pool(const struct lu_env *env, if (rc) goto out; rc = record_base(env, llh, tgtname, 0, cmd, - fsname, poolname, ostname, 0); + fsname, poolname, ostname, NULL); if (rc) goto out; rc = record_marker(env, llh, fsdb, CM_END, tgtname, comment); @@ -3971,7 +4101,7 @@ out: int mgs_nodemap_cmd(const struct lu_env *env, struct mgs_device *mgs, enum lcfg_command_type cmd, const char *nodemap_name, - const char *param) + char *param) { lnet_nid_t nid[2]; __u32 idmap[2];