From ffe259f81cda5b5cd9241362308ec26ebad194b8 Mon Sep 17 00:00:00 2001 From: Mikhail Pershin Date: Tue, 27 Jul 2021 13:37:01 +0300 Subject: [PATCH] LU-13055 changelog: use default mask if server has no mask When registering a new maskless user and server has no specific mask set then effective mask to be set to DEFAULT value Fixes: a15eb4f132 ("LU-13055 mdd: per-user changelog names and mask") Signed-off-by: Mikhail Pershin Change-Id: If799cb5cc29c60cce6ef6c987f2e493145e00e31 Reviewed-on: https://review.whamcloud.com/44404 Tested-by: jenkins Reviewed-by: Andreas Dilger Tested-by: Maloo Reviewed-by: Emoly Liu Reviewed-by: Oleg Drokin --- lustre/mdd/mdd_device.c | 5 +++++ lustre/tests/sanity.sh | 24 +++++++++++++++++++++++- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/lustre/mdd/mdd_device.c b/lustre/mdd/mdd_device.c index 0e7423b..f24c208 100644 --- a/lustre/mdd/mdd_device.c +++ b/lustre/mdd/mdd_device.c @@ -1782,6 +1782,11 @@ static int mdd_changelog_user_register(const struct lu_env *env, CHANGELOG_MINMASK, CHANGELOG_ALLMASK); if (rc) GOTO(out_users, rc); + } else if (mdd->mdd_cl.mc_proc_mask == CHANGELOG_MINMASK) { + /* a maskless users means default mask but only if server has + * no specific mask set + */ + rec->cur_mask = CHANGELOG_DEFMASK; } if (name && name[0]) { diff --git a/lustre/tests/sanity.sh b/lustre/tests/sanity.sh index 0bc9ff3..57fc1f7 100755 --- a/lustre/tests/sanity.sh +++ b/lustre/tests/sanity.sh @@ -16352,7 +16352,7 @@ test_160o() { changelog_register --user test_160o -m unlnk+close+open || error "changelog_register failed" - # drop server mask so it doesn't interfere + do_facet $SINGLEMDS $LCTL --device $mdt \ changelog_register -u "Tt3_-#" && error "bad symbols in name should fail" @@ -16443,6 +16443,28 @@ test_160p() { } run_test 160p "Changelog orphan cleanup with no users" +test_160q() { + local mdt="$(facet_svc $SINGLEMDS)" + local clu + + [[ $PARALLEL != "yes" ]] || skip "skip parallel run" + remote_mds_nodsh && skip "remote MDS with nodsh" + [ $MDS1_VERSION -ge $(version_code 2.14.54) ] || + skip "Need MDS version at least 2.14.54" + + # set server mask to minimal value like server init does + changelog_chmask "MARK" + clu=$(do_facet $SINGLEMDS $LCTL --device $mdt changelog_register -n) || + error "changelog_register failed" + # check effective mask again, should be treated as DEFMASK now + mask=$(do_facet $SINGLEMDS $LCTL get_param \ + mdd.$mdt.changelog_current_mask -n) + do_facet $SINGLEMDS $LCTL --device $mdt changelog_deregister $clu || + error "changelog_deregister failed" + [[ $mask == *"HLINK"* ]] || error "mask is not DEFMASK as expected" +} +run_test 160q "changelog effective mask is DEFMASK if not set" + test_161a() { [ $PARALLEL == "yes" ] && skip "skip parallel run" -- 1.8.3.1