From d07df1a7397777fa0f0ac80377d69fd2e24dab0e Mon Sep 17 00:00:00 2001
From: tappro <tappro>
Date: Wed, 3 Sep 2008 08:11:46 +0000
Subject: [PATCH] - export handling for VBR   b:15391   i:rread, bzzz

---
 lustre/tests/replay-single.sh | 110 ++++++++++++++++++++++++++++++++++
 1 file changed, 110 insertions(+)

diff --git a/lustre/tests/replay-single.sh b/lustre/tests/replay-single.sh
index 33e7efcfc9..2c1c50c091 100755
--- a/lustre/tests/replay-single.sh
+++ b/lustre/tests/replay-single.sh
@@ -1686,6 +1686,116 @@ test_70b () {
 run_test 70b "mds recovery; $CLIENTCOUNT clients"
 # end multi-client tests
 
+# vbr export handling
+create_fake_exports ()
+{
+    local facet=$1
+    local num=$2
+#obd_fail_val = num;
+#define OBD_FAIL_TGT_FAKE_EXP 0x708
+    do_facet $facet "lctl set_param fail_val=$num"
+    do_facet $facet "lctl set_param fail_loc=0x80000708"
+    fail $facet
+}
+
+test_71a() {
+    do_facet mds $LCTL get_param version | grep -q ^lustre.*1.6 && \
+        skip "skipping test for old 1.6 servers" && return 0
+    UUID=$(lctl dl | awk '/mdc.*-mdc-/ { print $5 }')
+    echo "Client UUID is $UUID"
+    replay_barrier mds
+    umount $DIR
+    facet_failover mds
+    zconf_mount `hostname` $DIR || error "mount fails"
+    df $DIR || error "post-failover df failed"
+    do_facet mds "lctl get_param -n mds.${mds_svc}.stale_exports|grep $UUID" || \
+        error "no delayed exports"
+    OLD_AGE=$(do_facet mds "lctl get_param -n mds.${mds_svc}.stale_export_age")
+    NEW_AGE=10
+    do_facet mds "lctl set_param mds.${mds_svc}.stale_export_age=$NEW_AGE"
+    sleep $NEW_AGE
+    do_facet mds "lctl get_param -n mds.${mds_svc}.stale_exports|grep \"$UUID.*EXPIRED\"" || \
+        error "exports didn't expire"
+    do_facet mds "lctl set_param mds.${mds_svc}.evict_client=$UUID"
+    do_facet mds "lctl get_param -n mds.${mds_svc}.stale_exports|grep $UUID" && \
+        error "Export wasn't removed manually"
+    do_facet mds "lctl set_param mds.${mds_svc}.stale_export_age=$OLD_AGE"
+    return 0;
+}
+run_test 71a "lost client export is kept"
+
+test_71b() {
+    do_facet mds $LCTL get_param version | grep -q ^lustre.*1.6 && \
+        skip "skipping test for old 1.6 servers" && return 0
+    FAKE_NUM=10
+    create_fake_exports mds $FAKE_NUM
+    NUM=$(do_facet mds "lctl get_param -n mds.${mds_svc}.stale_exports|wc -l")
+    [ $NUM -eq 0 ] && error "no fake exports $NUM - $FAKE_NUM"
+    OLD_AGE=$(do_facet mds "lctl get_param -n mds.${mds_svc}.stale_export_age")
+    NEW_AGE=10
+    do_facet mds "lctl set_param mds.${mds_svc}.stale_export_age=$NEW_AGE"
+    sleep $NEW_AGE
+    EX_NUM=$(do_facet mds "lctl get_param -n mds.${mds_svc}.stale_exports|grep -c EXPIRED")
+    [ "$EX_NUM" -eq "$NUM" ] || error "not all exports are expired $EX_NUM != $NUM"
+    do_facet mds "lctl set_param mds.${mds_svc}.flush_stale_exports=1"
+    do_facet mds "lctl get_param -n mds.${mds_svc}.stale_exports|grep EXPIRED" && \
+        error "Exports weren't flushed"
+    do_facet mds "lctl set_param mds.${mds_svc}.stale_export_age=$OLD_AGE"
+    return 0;
+}
+run_test 71b "stale exports are expired, lctl flushes them"
+
+test_71c() {
+    do_facet mds $LCTL get_param version | grep -q ^lustre.*1.6 && \
+        skip "skipping test for old 1.6 servers" && return 0
+    FAKE_NUM=10
+    create_fake_exports mds $FAKE_NUM
+    NUM=$(do_facet mds "lctl get_param -n mds.${mds_svc}.stale_exports|wc -l")
+    [ "$NUM" -eq "$FAKE_NUM" ] || error "no fake exports $NUM - $FAKE_NUM"
+    OLD_AGE=$(do_facet mds "lctl get_param -n mds.${mds_svc}.stale_export_age")
+    NEW_AGE=10
+    do_facet mds "lctl set_param mds.${mds_svc}.stale_export_age=$NEW_AGE"
+    sleep $NEW_AGE
+    EX_NUM=$(do_facet mds "lctl get_param -n mds.${mds_svc}.stale_exports|grep -c EXPIRED")
+    [ "$EX_NUM" -eq "$NUM" ] || error "not all exports are expired $EX_NUM != $NUM"
+
+    umount $DIR
+    zconf_mount `hostname` $DIR || error "mount fails"
+
+    NUM=$(do_facet mds "lctl get_param -n mds.${mds_svc}.stale_exports|wc -l")
+    [ $NUM -eq 0 ] || error "$NUM fake exports are still exists"
+    do_facet mds "lctl set_param mds.${mds_svc}.stale_export_age=$OLD_AGE"
+    return 0;
+}
+run_test 71c "stale exports are expired, new client connection flush them"
+
+test_71d() {
+    do_facet mds $LCTL get_param version | grep -q ^lustre.*1.6 && \
+        skip "skipping test for old 1.6 servers" && return 0
+    FAKE_NUM=10
+    create_fake_exports mds $FAKE_NUM
+    NUM=$(do_facet mds "lctl get_param -n mds.${mds_svc}.stale_exports|wc -l")
+    [ "$NUM" -eq "$FAKE_NUM" ] || error "no fake exports $NUM - $FAKE_NUM"
+    OLD_AGE=$(do_facet mds "lctl get_param -n mds.${mds_svc}.stale_export_age")
+    NEW_AGE=10
+    do_facet mds "lctl conf_param ${mds_svc}.mdt.stale_export_age=$NEW_AGE"
+    sleep $NEW_AGE
+    EX_NUM=$(do_facet mds "lctl get_param -n mds.${mds_svc}.stale_exports|grep -c EXPIRED")
+    [ "$EX_NUM" -eq "$NUM" ] || error "not all exports are expired $EX_NUM != $NUM"
+
+    fail mds
+
+    FAIL_AGE=$(do_facet mds "lctl get_param -n mds.${mds_svc}.stale_export_age")
+    [ $FAIL_AGE -eq $NEW_AGE ] || error "new age wasn't set after recovery"
+    NUM=$(do_facet mds "lctl get_param -n mds.${mds_svc}.stale_exports|wc -l")
+    [ $NUM -eq 0 ] || error "$NUM fake exports are still exists"
+    do_facet mds "lctl conf_param ${mds_svc}.mdt.stale_export_age=$OLD_AGE"
+    return 0;
+}
+run_test 71d "expired exports, server init removes them, conf_param works"
+
+# end vbr exports tests
+
 equals_msg `basename $0`: test complete, cleaning up
 check_and_cleanup_lustre
 [ -f "$TESTSUITELOG" ] && cat $TESTSUITELOG || true
-- 
GitLab