From: Alexander Zarochentsev Date: Sun, 30 May 2021 13:43:05 +0000 (+0300) Subject: LU-14928 mgs: allow md target re-register X-Git-Url: https://git.whamcloud.com/gitweb?a=commitdiff_plain;h=0fb850d17fb1aae393f8548a9b1a39a0c55a9c80;p=fs%2Flustre-release.git LU-14928 mgs: allow md target re-register In a DNE system, it is not safe to do writeconf of a MD target and attempt to mount (and re-register) it again, as it creates a weird MDT-MDT osp devices like fsname-MDT0001-osp-MDT0001" and makes the system non-functioning. The fix doesn't allow creation of illegal devices. Lustre-change: https://review.whamcloud.com/44594 Lustre-commit: e4f3f47f04c762770bc36c1e3fa7e92e94a36704 HPE-bug-id: LUS-10098 Signed-off-by: Alexander Zarochentsev Change-Id: I698ee6d70ac96f54eaec57b5c5fe553d130ba011 Reviewed-by: Alexander Boyko Reviewed-by: Artem Blagodarenko Reviewed-on: https://review.whamcloud.com/c/ex/lustre-release/+/53328 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Andreas Dilger --- diff --git a/lustre/mgs/mgs_llog.c b/lustre/mgs/mgs_llog.c index 0aece4b..f129f55 100644 --- a/lustre/mgs/mgs_llog.c +++ b/lustre/mgs/mgs_llog.c @@ -2225,7 +2225,12 @@ static int mgs_steal_client_llog_handler(const struct lu_env *env, if (sscanf(lustre_cfg_buf(lcfg, 2), "%d", &index) != 1) RETURN (-EINVAL); - + if (index == mti->mti_stripe_index) { + CDEBUG(D_INFO, + "attempt to create MDT%04x->MDT%04x osp device\n", + index, index); + RETURN(0); + } memcpy(tmti->mti_fsname, mti->mti_fsname, strlen(mti->mti_fsname)); tmti->mti_stripe_index = index; diff --git a/lustre/tests/conf-sanity.sh b/lustre/tests/conf-sanity.sh index 13b69ec..3f8329c 100644 --- a/lustre/tests/conf-sanity.sh +++ b/lustre/tests/conf-sanity.sh @@ -9788,6 +9788,18 @@ test_151() { } run_test 151 "damaged local config doesn't prevent mounting" +test_130() +{ + [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" + setupall + stop_mdt 2 || error "mdt2 stop failed" + do_facet mds2 "$TUNEFS --writeconf $(mdsdevname 2)" + start_mdt 2 || error "mdt2 start failed" + do_facet mds2 "$LCTL dl" | grep MDT0001-osp-MDT0001 && + error "Illegal OSP device created" || true +} +run_test 130 "re-register an MDT after writeconf" + if ! combined_mgs_mds ; then stop mgs fi