Whamcloud - gitweb
LU-13055 changelog: use default mask if server has no mask 04/44404/3
authorMikhail Pershin <mpershin@whamcloud.com>
Tue, 27 Jul 2021 10:37:01 +0000 (13:37 +0300)
committerOleg Drokin <green@whamcloud.com>
Fri, 17 Sep 2021 14:07:57 +0000 (14:07 +0000)
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 <mpershin@whamcloud.com>
Change-Id: If799cb5cc29c60cce6ef6c987f2e493145e00e31
Reviewed-on: https://review.whamcloud.com/44404
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Emoly Liu <emoly@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/mdd/mdd_device.c
lustre/tests/sanity.sh

index 0e7423b..f24c208 100644 (file)
@@ -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]) {
index 0bc9ff3..57fc1f7 100755 (executable)
@@ -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"