Whamcloud - gitweb
LU-8367 osp: enable replay for precreation request
[fs/lustre-release.git] / lustre / tests / conf-sanity.sh
index 7eae993..acf020d 100644 (file)
@@ -2985,7 +2985,7 @@ test_33a() { # bug 12333, was test_33
                --reformat $mgs_flag $mkfsoptions $fs2mdsdev $fs2mdsvdev ||
                exit 10
        add fs2ost $(mkfs_opts ost1 ${fs2ostdev}) --mgsnode=$MGSNID \
-               --fsname=${FSNAME2} --index=8191 --reformat $fs2ostdev \
+               --fsname=${FSNAME2} --index=0x1fff --reformat $fs2ostdev \
                $fs2ostvdev || exit 10
 
        start fs2mds $fs2mdsdev $MDS_MOUNT_OPTS && trap cleanup_fs2 EXIT INT
@@ -3007,6 +3007,15 @@ test_33a() { # bug 12333, was test_33
                error "$LFS getstripe $MOUNT2/hosts failed"
 
        umount $MOUNT2
+
+       # test lctl del_ost on large index
+       do_facet mgs "$LCTL del_ost -t ${FSNAME2}-OST1fff" ||
+               error "del_ost failed with $?"
+       $MOUNT_CMD $MGSNID:/${FSNAME2} $MOUNT2 || error "$MOUNT_CMD failed"
+       echo "ok."
+       $LFS df | grep -q OST1fff && error "del_ost did not remove OST1fff!"
+       umount $MOUNT2
+
        stop fs2ost -f
        stop fs2mds -f
        cleanup_nocli || error "cleanup_nocli failed with $?"
@@ -5576,6 +5585,7 @@ test_69() {
        start_ost || error "OST0 restart failure"
        wait_osc_import_state mds ost FULL
 
+       sleep $((TIMEOUT/2)) #object recreation requires some time
        mount_client $MOUNT || error "mount client failed"
        touch $DIR/$tdir/$tfile-last || error "create file after reformat"
        local idx=$($LFS getstripe -i $DIR/$tdir/$tfile-last)
@@ -5584,7 +5594,7 @@ test_69() {
        local iused=$($LFS df -i $MOUNT |
                awk '/OST0000/ { print $3 }'; exit ${PIPESTATUS[0]})
        log "On OST0, $iused used inodes rc=$?"
-       [ $iused -ge $((ost_max_pre/2 + 1000)) ] &&
+       [ $iused -ge $((ost_max_pre + 1000)) ] &&
                error "OST replacement created too many inodes; $iused"
        cleanup || error "cleanup failed with $?"
 }
@@ -8975,7 +8985,7 @@ cleanup_115()
 {
        trap 0
        stopall
-       rm -f $TMP/$tdir/lustre-mdt
+       do_facet mds1 rm -f $1
 }
 
 test_115() {
@@ -8984,79 +8994,79 @@ test_115() {
        fi
        [ -n "$FILESET" ] && skip "Not functional for FILESET set"
 
-       local dbfs_ver=$(do_facet $SINGLEMDS $DEBUGFS -V 2>&1)
+       local dbfs_ver=$(do_facet mds1 $DEBUGFS -V 2>&1)
 
        echo "debugfs version: $dbfs_ver"
        echo "$dbfs_ver" | egrep -w "1.44.3.wc1|1.44.5.wc1|1.45.2.wc1" &&
                skip_env "This version of debugfs doesn't show inode number"
 
-       IMAGESIZE=$((3072 << 30)) # 3072 GiB
+       local IMAGESIZE=$((3072 << 30)) # 3072 GiB
 
        stopall
 
-       local saved_flakey=${FLAKEY}
-
-       stack_trap "FLAKEY=$saved_flakey" EXIT
        FLAKEY=false
 
        echo "client1: "
-       lctl dl
+       $LCTL dl
        mount | grep lustre
        echo "mds1: "
-       do_facet mds1 "hostname; lctl dl; mount"
+       do_facet mds1 "hostname; $LCTL dl; mount"
        echo "ost1: "
-       do_facet ost1 "hostname; lctl dl; mount"
+       do_facet ost1 "hostname; $LCTL dl; mount"
        # We need MDT size 3072GB, because it is smallest
        # partition that can store 2B inodes
-       do_facet $SINGLEMDS "mkdir -p $TMP/$tdir"
+       do_facet mds1 "mkdir -p $TMP/$tdir"
        local mdsimgname=$TMP/$tdir/lustre-mdt
 
-       do_facet $SINGLEMDS "rm -f $mdsimgname"
-       do_facet $SINGLEMDS "touch $mdsimgname"
-       trap cleanup_115 RETURN EXIT
-       do_facet $SINGLEMDS "$TRUNCATE $mdsimgname $IMAGESIZE" ||
+       do_facet mds1 "rm -f $mdsimgname"
+       do_facet mds1 "touch $mdsimgname"
+       stack_trap "cleanup_115 $mdsimgname" EXIT
+       do_facet mds1 "$TRUNCATE $mdsimgname $IMAGESIZE" ||
                skip "Backend FS doesn't support sparse files"
-       local mdsdev=$(do_facet $SINGLEMDS "losetup -f")
+       local mdsdev=$(do_facet mds1 "losetup -f")
 
-       do_facet $SINGLEMDS "losetup $mdsdev $mdsimgname"
+       do_facet mds1 "losetup $mdsdev $mdsimgname"
 
        local mds_opts="$(mkfs_opts mds1 $(mdsdevname 1))        \
                --mkfsoptions='-O ea_inode,^resize_inode,meta_bg \
                -N 2247484000 -E lazy_itable_init' --device-size=$IMAGESIZE"
        add mds1 $mds_opts --mgs --reformat $mdsdev ||
                skip_env "format large MDT failed"
-       opts="$(mkfs_opts ost1 $(ostdevname 1)) \
-               $replace --reformat $(ostdevname 1) $(ostvdevname 1)"
+
+       local ostdev=$(ostdevname 1)
+
+       local opts="$(mkfs_opts ost1 $ostdev) \
+               --reformat $ostdev $ostdev"
        add ost1 $opts || error "add ost1 failed with new params"
-       start $SINGLEMDS  $mdsdev $MDS_MOUNT_OPTS || error "start MDS failed"
+       start mds1  $mdsdev $MDS_MOUNT_OPTS || error "start MDS failed"
        start_ost || error "start OSS failed"
        mount_client $MOUNT || error "mount client failed"
 
        mkdir -p $DIR/$tdir || error "mkdir $DIR/$tdir fail"
-       goal="/sys/fs/ldiskfs/$(basename $mdsdev)/inode_goal"
+       local goal="/sys/fs/ldiskfs/$(basename $mdsdev)/inode_goal"
        echo goal: $goal
        # 2147483648 is 0x80000000
-       do_facet $SINGLEMDS "echo 2147483648 >> $goal; grep . $goal"
+       do_facet mds1 "echo 2147483648 >> $goal; grep . $goal"
        touch $DIR/$tdir/$tfile
 
        # attrs from 1 to 16 go to block, 17th - to inode
+       local i
+
        for i in {1..17}; do
                local nm="trusted.ea$i"
-
                setfattr -n $nm -v $(printf "xattr%0250d" $i) $DIR/$tdir/$tfile
        done
 
-       do_facet $SINGLEMDS $DEBUGFS -c -R "stat ROOT/$tdir/$tfile" $mdsdev
+       do_facet mds1 "$DEBUGFS -c -R 'stat ROOT/$tdir/$tfile' $mdsdev"
 
        # inode <2147483649> trusted.ea16 (255)
-       local inode_num=$(do_facet $SINGLEMDS \
+       local inode_num=$(do_facet mds1 \
                        "$DEBUGFS -c -R 'stat ROOT/$tdir/$tfile' $mdsdev" |
                         awk '/ea17/ { print $2 }' |
                         sed -e 's/>//' -e 's/<//' -e 's/\"//')
        echo "inode num: $inode_num"
        [ $inode_num -ge 2147483648 ] || error "inode $inode_num too small"
-       do_facet $SINGLEMDS "losetup -d $mdsdev"
-       cleanup_115
+       do_facet mds1 "losetup -d $mdsdev"
 }
 run_test 115 "Access large xattr with inodes number over 2TB"
 
@@ -9531,6 +9541,61 @@ test_123ag() { # LU-15142
 }
 run_test 123ag "llog_print skips values deleted by set_param -P -d"
 
+test_123ah() { #LU-7668 del_ost
+       [ "$MGS_VERSION" -ge $(version_code 2.15.50) -a \
+          "$MDS1_VERSION" -ge $(version_code 2.15.50) ] ||
+               skip "Need both MGS and MDS version at least 2.15.50"
+
+       [ -d $MOUNT/.lustre ] || setupall
+       stack_trap "do_facet mds1 $LCTL set_param fail_loc=0" EXIT
+
+       local cmd="--device MGS llog_print"
+
+       cli_llogcnt_orig=$(do_facet mgs $LCTL $cmd $FSNAME-client |
+                               grep -c $FSNAME-OST0000)
+       mds1_llogcnt_orig=$(do_facet mgs $LCTL $cmd $FSNAME-MDT0000 |
+                               grep -c $FSNAME-OST0000)
+
+       [ $cli_llogcnt_orig -gt 0 ] ||
+               error "$FSNAME-OST0000 not found (client)"
+       [ $mds1_llogcnt_orig -gt 0 ] || error "$FSNAME-OST0000 not found (MDT)"
+
+       # -n/--dryrun should NOT modify catalog
+       do_facet mgs "$LCTL del_ost -n -t $FSNAME-OST0000" ||
+               error "del_ost --dryrun failed with $?"
+
+       local cli_llogcnt=$(do_facet mgs $LCTL $cmd $FSNAME-client |
+                       grep -c $FSNAME-OST0000)
+       local mds1_llogcnt=$(do_facet mgs $LCTL $cmd $FSNAME-MDT0000 |
+                       grep -c $FSNAME-OST0000)
+
+       [ $cli_llogcnt -eq $cli_llogcnt_orig ] ||
+               error "--dryrun error: $cli_llogcnt != $cli_llogcnt_orig"
+       [ $mds1_llogcnt -eq $mds1_llogcnt_orig ] ||
+               error "--dryrun error: $mds1_llogcnt != $mds1_llogcnt_orig"
+
+       # actual run
+       do_facet mgs "$LCTL del_ost --target $FSNAME-OST0000" ||
+               error "del_ost failed with $?"
+
+       local cli_llogcnt=$(do_facet mgs $LCTL $cmd $FSNAME-client |
+                       grep -c $FSNAME-OST0000)
+       local mds1_llogcnt=$(do_facet mgs $LCTL $cmd $FSNAME-MDT0000 |
+                       grep -c $FSNAME-OST0000)
+
+       # every catalog entry for OST0000 should have been cancelled
+       [ $cli_llogcnt -eq 0 ] || error "$FSNAME-OST0000 not cancelled (cli)"
+       [ $mds1_llogcnt -eq 0 ] || error "$FSNAME-OST0000 not cancelled (MDT)"
+
+       umount_client $MOUNT
+       mount_client $MOUNT
+
+       $LFS df | grep -q OST0000 && error "del_ost did not remove OST0000!"
+       cleanup
+       reformat_and_config
+}
+run_test 123ah "del_ost cancels config log entries correctly"
+
 test_123F() {
        remote_mgs_nodsh && skip "remote MGS with nodsh"