From: Kit Westneat Date: Mon, 25 Jul 2016 19:45:25 +0000 (-0400) Subject: LU-8436 nodemap: MGS local MGC should not get_config X-Git-Tag: 2.8.57~49 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=e70a41c4316b5eb3a0b8e6b52c95653a2d4c85e5;hp=f0e2fc455895e6fd780be34fe79a2a198fd1651f LU-8436 nodemap: MGS local MGC should not get_config An MGC that is co-located with an MGS does not need to pull the nodemap config as the MGS will manage it directly. Having the MGC pull the config could lead to a race condition where new config changes are overwritten by the old config. Signed-off-by: Kit Westneat Change-Id: Ief62f44dd3ef75abb704edee0e55f7f1b1334e42 Reviewed-on: http://review.whamcloud.com/21500 Tested-by: Jenkins Tested-by: Maloo Reviewed-by: Andreas Dilger Reviewed-by: James Simmons Reviewed-by: John L. Hammond Reviewed-by: Oleg Drokin --- diff --git a/lustre/mgc/mgc_request.c b/lustre/mgc/mgc_request.c index b263c4b..7d35508 100644 --- a/lustre/mgc/mgc_request.c +++ b/lustre/mgc/mgc_request.c @@ -1573,6 +1573,7 @@ static int mgc_apply_recover_logs(struct obd_device *mgc, static int mgc_process_recover_nodemap_log(struct obd_device *obd, struct config_llog_data *cld) { + struct ptlrpc_connection *mgc_conn; struct ptlrpc_request *req = NULL; struct config_llog_instance *cfg = &cld->cld_cfg; struct mgs_config_body *body; @@ -1580,17 +1581,23 @@ static int mgc_process_recover_nodemap_log(struct obd_device *obd, struct nodemap_config *new_config = NULL; struct lu_nodemap *recent_nodemap = NULL; struct ptlrpc_bulk_desc *desc; - struct page **pages; + struct page **pages = NULL; __u64 config_read_offset = 0; - int nrpages; + int nrpages = 0; bool eof = true; bool mne_swab = false; int i; int ealen; int rc; - ENTRY; + mgc_conn = class_exp2cliimp(cld->cld_mgcexp)->imp_connection; + + /* don't need to get local config */ + if (cld_is_nodemap(cld) && + (LNET_NETTYP(LNET_NIDNET(mgc_conn->c_peer.nid)) == LOLND)) + GOTO(out, rc = 0); + /* allocate buffer for bulk transfer. * if this is the first time for this mgs to read logs, * CONFIG_READ_NRPAGES_INIT will be used since it will read all logs