X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Ftests%2Fsanity-gns.sh;h=b55312a354d7f5d8d59a801d17b30cc36dc8e7c8;hb=0d48225629bcec79f9f1b350e23711846d60f565;hp=59e08f512ac845c0249fed1aa25e5f3eb3c8fee8;hpb=f1e7a2b3b110c7ef9ca7e62dc86db69983418802;p=fs%2Flustre-release.git diff --git a/lustre/tests/sanity-gns.sh b/lustre/tests/sanity-gns.sh index 59e08f5..b55312a 100644 --- a/lustre/tests/sanity-gns.sh +++ b/lustre/tests/sanity-gns.sh @@ -338,6 +338,9 @@ check_gns() { OPEN) echo -n "test data" > $OBJECT1/test_file1 >/dev/null 2>&1 ;; + LIST) + ls -la $OBJECT1/ + ;; CHDIR) cd $OBJECT1 || return $? ;; @@ -355,6 +358,9 @@ check_gns() { OPEN) echo -n "test data" > $OBJECT1/test_file$i >/dev/null 2>&1 & ;; + LIST) + ls -la $OBJECT1/ + ;; CHDIR) cd $OBJECT1 >/dev/null 2>&1 & ;; @@ -381,6 +387,10 @@ check_gns() { echo -n "test data" > $OBJECT1/test_file1 >/dev/null 2>&1 & echo -n "test data" > $OBJECT2/test_file1 >/dev/null 2>&1 & ;; + LIST) + ls -la $OBJECT1/ + ls -la $OBJECT2/ + ;; CHDIR) cd $OBJECT1 >/dev/null 2>&1 & cd $OBJECT2 >/dev/null 2>&1 & @@ -408,6 +418,11 @@ check_gns() { echo -n "test data" > $OBJECT1/test_file$i >/dev/null 2>&1 & mkdir $OBJECT1/dir$i & ;; + LIST) + touch $OBJECT1/file & + ls -la $OBJECT1/ & + mkdir $OBJECT1/dir$i & + ;; CHDIR) touch $OBJECT1/file$i & cd $OBJECT1 >/dev/null 2>&1 & @@ -1084,6 +1099,176 @@ $TIMOUT $TICK GENERIC BG OPEN || { run_test 2h " odd conditions (mounting in background) ===================" +test_3a() { + local LOOP_DEV=$(find_free_loop 2>/dev/null) + local LOOP_FILE="$TMP/gns_loop_3a" + local OBJECT=".mntinfo" + local TIMOUT=5 + local TICK=1 + + test "x$LOOP_DEV" != "x" && test -b $LOOP_DEV || + error "can't find free loop device" + + echo "preparing loop device $LOOP_DEV <-> $LOOP_FILE..." + cleanup_loop $LOOP_DEV $LOOP_FILE + setup_loop $LOOP_DEV $LOOP_FILE || error + + echo "setting up GNS timeouts and mount object..." + setup_gns $OBJECT $TIMOUT $TICK || error + + disable_gns + + echo "preparing mount object at $DIR/gns_test_3a/$OBJECT..." + setup_object $DIR/gns_test_3a $OBJECT "-t ext2 $LOOP_DEV" || error + + enable_gns + + echo "" + echo "testing GNS with GENERIC upcall in GENERIC mode" + + check_gns GENERIC $DIR/gns_test_3a $DIR/gns_test_3a \ +$TIMOUT $TICK GENERIC FG OPEN || { + disable_gns + cleanup_object $DIR/gns_test_3a + cleanup_loop $LOOP_DEV $LOOP_FILE + error + } + + chmod u-s $DIR/gns_test_3a || { + disable_gns + cleanup_object $DIR/gns_test_3a + cleanup_loop $LOOP_DEV $LOOP_FILE + error "can't chmod u-s $DIR/gns_test_3a" + } + + check_mnt $DIR/gns_test_3a && { + disable_gns + cleanup_object $DIR/gns_test_3a + cleanup_loop $LOOP_DEV $LOOP_FILE + error "chmod u-s $DIR/gns_test_3a caused mounting" + } + + disable_gns + cleanup_object $DIR/gns_test_3a + cleanup_loop $LOOP_DEV $LOOP_FILE + return 0 +} + +run_test 3a " removing mnt by chmod u-s =================================" + +test_3b() { + local LOOP_FILE1="$TMP/gns_loop_3b1" + local LOOP_FILE2="$TMP/gns_loop_3b2" + local LOOP_FILE3="$TMP/gns_loop_3b3" + local OBJECT=".mntinfo" + local LOOP_DEV1="" + local LOOP_DEV2="" + local LOOP_DEV3="" + local TIMOUT=5 + local TICK=1 + + disable_gns + + LOOP_DEV1=$(find_free_loop 2>/dev/null) + test "x$LOOP_DEV1" != "x" && test -b $LOOP_DEV1 || + error "can't find free loop device" + + echo "preparing loop device $LOOP_DEV1 <-> $LOOP_FILE1..." + cleanup_loop $LOOP_DEV1 $LOOP_FILE1 + setup_loop $LOOP_DEV1 $LOOP_FILE1 || error + + LOOP_DEV2=$(find_free_loop 2>/dev/null) + test "x$LOOP_DEV2" != "x" && test -b $LOOP_DEV2 || { + cleanup_loop $LOOP_DEV2 $LOOP_FILE2 + error "can't find free loop device" + } + + echo "preparing loop device $LOOP_DEV2 <-> $LOOP_FILE2..." + cleanup_loop $LOOP_DEV2 $LOOP_FILE2 + setup_loop $LOOP_DEV2 $LOOP_FILE2 || { + cleanup_loop $LOOP_DEV2 $LOOP_FILE2 + error + } + + LOOP_DEV3=$(find_free_loop 2>/dev/null) + test "x$LOOP_DEV3" != "x" && test -b $LOOP_DEV3 || { + cleanup_loop $LOOP_DEV1 $LOOP_FILE1 + cleanup_loop $LOOP_DEV2 $LOOP_FILE2 + error "can't find free loop device" + } + + echo "preparing loop device $LOOP_DEV3 <-> $LOOP_FILE3..." + cleanup_loop $LOOP_DEV3 $LOOP_FILE3 + setup_loop $LOOP_DEV3 $LOOP_FILE3 || { + cleanup_loop $LOOP_DEV1 $LOOP_FILE1 + cleanup_loop $LOOP_DEV2 $LOOP_FILE2 + error + } + + # prepare object1 + echo "preparing mount object at $DIR/gns_test_3b1/$OBJECT..." + setup_object $DIR/gns_test_3b1 $OBJECT "-t ext2 $LOOP_DEV1" || { + cleanup_loop $LOOP_DEV1 $LOOP_FILE1 + cleanup_loop $LOOP_DEV2 $LOOP_FILE2 + cleanup_loop $LOOP_DEV3 $LOOP_FILE3 + error + } + + # prepare object2 + mkdir -p $TMP/mnt || error + mount -t ext2 $LOOP_DEV2 $TMP/mnt || { + cleanup_object $DIR/gns_test_3b1 + cleanup_loop $LOOP_DEV1 $LOOP_FILE1 + cleanup_loop $LOOP_DEV2 $LOOP_FILE2 + cleanup_loop $LOOP_DEV3 $LOOP_FILE3 + error "cannot mount $LOOP_DEV2" + } + + echo "preparing mount object at $TMP/mnt/gns_test_3b2/$OBJECT..." + setup_object $TMP/mnt/gns_test_3b2 $OBJECT "-t ext2 $LOOP_DEV3" || { + cleanup_object $DIR/gns_test_3b1 + umount $TMP/mnt + cleanup_loop $LOOP_DEV1 $LOOP_FILE1 + cleanup_loop $LOOP_DEV2 $LOOP_FILE2 + cleanup_loop $LOOP_DEV3 $LOOP_FILE3 + error + } + umount $TMP/mnt || error + + echo "setting up GNS timeouts and mount object..." + setup_gns $OBJECT $TIMOUT $TICK || { + cleanup_object $DIR/gns_test_3b1 + cleanup_loop $LOOP_DEV1 $LOOP_FILE1 + cleanup_loop $LOOP_DEV2 $LOOP_FILE2 + cleanup_loop $LOOP_DEV3 $LOOP_FILE3 + error + } + + enable_gns + + echo "" + echo "testing GNS with GENERIC upcall in CONCUR2 mode" + + check_gns GENERIC $DIR/gns_test_3b1/gns_test_3b2 $DIR/gns_test_3b1/gns_test_3b2 $TIMOUT $TICK GENERIC FG LIST || { + disable_gns + cleanup_object $DIR/gns_test_3b1 + cleanup_loop $LOOP_DEV1 $LOOP_FILE1 + cleanup_loop $LOOP_DEV2 $LOOP_FILE2 + cleanup_loop $LOOP_DEV3 $LOOP_FILE3 + error + } + + disable_gns + + cleanup_object $DIR/gns_test_3b1 + cleanup_loop $LOOP_DEV1 $LOOP_FILE1 + cleanup_loop $LOOP_DEV2 $LOOP_FILE2 + cleanup_loop $LOOP_DEV3 $LOOP_FILE3 + return 0 +} + +run_test 3b " general GNS test - concurrent mount of 2 GNS mounts =======" + TMPDIR=$OLDTMPDIR TMP=$OLDTMP HOME=$OLDHOME