Whamcloud - gitweb
LU-2687 test: add b2_4 zfs image for conf-sanity test_32a
[fs/lustre-release.git] / lustre / tests / conf-sanity.sh
index cc0f3dc..dc753df 100644 (file)
@@ -75,8 +75,8 @@ if [[ "$LDISKFS_MKFS_OPTS" != *lazy_itable_init* ]]; then
 fi
 
 [ $(facet_fstype $SINGLEMDS) = "zfs" ] &&
-# bug number for skipped test:        LU-2778 LU-2059
-       ALWAYS_EXCEPT="$ALWAYS_EXCEPT 57b     50h"
+# bug number for skipped test:        LU-2778 LU-2059 LU-4444
+       ALWAYS_EXCEPT="$ALWAYS_EXCEPT 57b     50h     69"
 
 init_logging
 
@@ -1062,6 +1062,78 @@ test_28() {
 }
 run_test 28 "permanent parameter setting"
 
+test_28a() { # LU-4221
+       [[ $(lustre_version_code ost1) -ge $(version_code 2.5.52) ]] ||
+               { skip "Need OST version at least 2.5.52" && return 0; }
+       [ "$(facet_fstype ost1)" = "zfs" ] &&
+               skip "LU-4221: no such proc params for ZFS OSTs" && return
+
+       local name
+       local param
+       local cmd
+       local old
+       local new
+       local device="$FSNAME-OST0000"
+
+       setup
+
+       # In this test we will set three kinds of proc parameters with
+       # lctl conf_param:
+       # 1. the ones moved from the OFD to the OSD, and only their
+       #    symlinks kept in obdfilter
+       # 2. non-symlink ones in the OFD
+       # 3. non-symlink ones in the OSD
+
+       # Check 1.
+       # prepare a symlink parameter in the OFD
+       name="writethrough_cache_enable"
+       param="$device.ost.$name"
+       cmd="$LCTL get_param -n obdfilter.$device.$name"
+
+       # conf_param the symlink parameter in the OFD
+       old=$(do_facet ost1 $cmd)
+       new=$(((old + 1) % 2))
+       set_conf_param_and_check ost1 "$cmd" "$param" $new ||
+               error "lctl conf_param $device.ost.$param=$new failed"
+
+       # conf_param the target parameter in the OSD
+       param="$device.osd.$name"
+       cmd="$LCTL get_param -n osd-*.$device.$name"
+       set_conf_param_and_check ost1 "$cmd" "$param" $old ||
+               error "lctl conf_param $device.osd.$param=$old failed"
+
+       # Check 2.
+       # prepare a non-symlink parameter in the OFD
+       name="client_cache_seconds"
+       param="$device.ost.$name"
+       cmd="$LCTL get_param -n obdfilter.$device.$name"
+
+       # conf_param the parameter in the OFD
+       old=$(do_facet ost1 $cmd)
+       new=$((old * 2))
+       set_conf_param_and_check ost1 "$cmd" "$param" $new ||
+               error "lctl conf_param $device.ost.$param=$new failed"
+       set_conf_param_and_check ost1 "$cmd" "$param" $old ||
+               error "lctl conf_param $device.ost.$param=$old failed"
+
+       # Check 3.
+       # prepare a non-symlink parameter in the OSD
+       name="lma_self_repair"
+       param="$device.osd.$name"
+       cmd="$LCTL get_param -n osd-*.$device.$name"
+
+       # conf_param the parameter in the OSD
+       old=$(do_facet ost1 $cmd)
+       new=$(((old + 1) % 2))
+       set_conf_param_and_check ost1 "$cmd" "$param" $new ||
+               error "lctl conf_param $device.osd.$param=$new failed"
+       set_conf_param_and_check ost1 "$cmd" "$param" $old ||
+               error "lctl conf_param $device.osd.$param=$old failed"
+
+       cleanup
+}
+run_test 28a "set symlink parameters permanently with conf_param"
+
 test_29() {
        [ "$OSTCOUNT" -lt "2" ] && skip_env "$OSTCOUNT < 2, skipping" && return
         setup > /dev/null 2>&1
@@ -1335,6 +1407,7 @@ t32_check() {
 
 t32_test_cleanup() {
        local tmp=$TMP/t32
+       local fstype=$(facet_fstype $SINGLEMDS)
        local rc=$?
 
        if $shall_cleanup_lustre; then
@@ -1352,6 +1425,10 @@ t32_test_cleanup() {
 
        $r rm -rf $tmp
        rm -rf $tmp
+       if [ $fstype == "zfs" ]; then
+               $r $ZPOOL destroy t32fs-mdt1 || rc=$?
+               $r $ZPOOL destroy t32fs-ost1 || rc=$?
+       fi
        return $rc
 }
 
@@ -1514,6 +1591,8 @@ t32_test() {
        local nrpcs
        local list
        local fstype=$(facet_fstype $SINGLEMDS)
+       local mdt_dev=$tmp/mdt
+       local ost_dev=$tmp/ost
 
        trap 'trap - RETURN; t32_test_cleanup' RETURN
 
@@ -1536,17 +1615,31 @@ t32_test() {
        local version=$(version_code $img_commit)
        [[ $version -gt $(version_code 2.4.0) ]] && ff_convert="no"
 
+       if [ $fstype == "zfs" ]; then
+               # import pool first
+               $r $ZPOOL import -f -d $tmp t32fs-mdt1
+               $r $ZPOOL import -f -d $tmp t32fs-ost1
+               mdt_dev=t32fs-mdt1/mdt1
+               ost_dev=t32fs-ost1/ost1
+               wait_update_facet $SINGLEMDS "$ZPOOL list |
+                       awk '/^t32fs-mdt1/ { print \\\$1 }'" "t32fs-mdt1" || {
+                               error_noexit "import zfs pool failed"
+                               return 1
+                       }
+       fi
+
        $r $LCTL set_param debug="$PTLDEBUG"
 
-       $r $TUNEFS --dryrun $tmp/mdt || {
+       $r $TUNEFS --dryrun $mdt_dev || {
                $r losetup -a
                error_noexit "tunefs.lustre before mounting the MDT"
                return 1
        }
        if [ "$writeconf" ]; then
-               mopts=loop,writeconf
+               mopts=writeconf
                if [ $fstype == "ldiskfs" ]; then
-                       $r $TUNEFS --quota $tmp/mdt || {
+                       mopts="loop,$mopts"
+                       $r $TUNEFS --quota $mdt_dev || {
                                $r losetup -a
                                error_noexit "Enable mdt quota feature"
                                return 1
@@ -1561,18 +1654,25 @@ t32_test() {
                        local osthost=$(facet_active_host ost1)
                        local ostnid=$(do_node $osthost $LCTL list_nids | head -1)
 
-                       $r mount -t lustre -o loop,nosvc $tmp/mdt $tmp/mnt/mdt
+                       mopts=nosvc
+                       if [ $fstype == "ldiskfs" ]; then
+                               mopts="loop,$mopts"
+                       fi
+                       $r mount -t lustre -o $mopts $mdt_dev $tmp/mnt/mdt
                        $r lctl replace_nids $fsname-OST0000 $ostnid
                        $r lctl replace_nids $fsname-MDT0000 $nid
                        $r umount -d $tmp/mnt/mdt
                fi
 
-               mopts=loop,exclude=$fsname-OST0000
+               mopts=exclude=$fsname-OST0000
+               if [ $fstype == "ldiskfs" ]; then
+                       mopts="loop,$mopts"
+               fi
        fi
 
        t32_wait_til_devices_gone $node
 
-       $r mount -t lustre -o $mopts $tmp/mdt $tmp/mnt/mdt || {
+       $r mount -t lustre -o $mopts $mdt_dev $tmp/mnt/mdt || {
                $r losetup -a
                error_noexit "Mounting the MDT"
                return 1
@@ -1617,23 +1717,27 @@ t32_test() {
                return 1
        fi
 
-       $r $TUNEFS --dryrun $tmp/ost || {
+       $r $TUNEFS --dryrun $ost_dev || {
                error_noexit "tunefs.lustre before mounting the OST"
                return 1
        }
        if [ "$writeconf" ]; then
-               mopts=loop,mgsnode=$nid,$writeconf
+               mopts=mgsnode=$nid,$writeconf
                if [ $fstype == "ldiskfs" ]; then
-                       $r $TUNEFS --quota $tmp/ost || {
+                       mopts="loop,$mopts"
+                       $r $TUNEFS --quota $ost_dev || {
                                $r losetup -a
                                error_noexit "Enable ost quota feature"
                                return 1
                        }
                fi
        else
-               mopts=loop,mgsnode=$nid
+               mopts=mgsnode=$nid
+               if [ $fstype == "ldiskfs" ]; then
+                       mopts="loop,$mopts"
+               fi
        fi
-       $r mount -t lustre -o $mopts $tmp/ost $tmp/mnt/ost || {
+       $r mount -t lustre -o $mopts $ost_dev $tmp/mnt/ost || {
                error_noexit "Mounting the OST"
                return 1
        }
@@ -1873,13 +1977,17 @@ t32_test() {
                }
 
                # mount a second time to make sure we didnt leave upgrade flag on
-               $r $TUNEFS --dryrun $tmp/mdt || {
+               $r $TUNEFS --dryrun $mdt_dev || {
                        $r losetup -a
                        error_noexit "tunefs.lustre before remounting the MDT"
                        return 1
                }
-               $r mount -t lustre -o loop,exclude=$fsname-OST0000 $tmp/mdt \
-                                $tmp/mnt/mdt || {
+
+               mopts=exclude=$fsname-OST0000
+               if [ $fstype == "ldiskfs" ]; then
+                       mopts="loop,$mopts"
+               fi
+               $r mount -t lustre -o $mopts $mdt_dev $tmp/mnt/mdt || {
                        error_noexit "Remounting the MDT"
                        return 1
                }
@@ -3907,7 +4015,8 @@ test_69() {
 
        mkdir -p $DIR/$tdir
        $LFS setstripe -i 0 $DIR/$tdir
-       createmany -o $DIR/$tdir/$tfile- $num_create
+       createmany -o $DIR/$tdir/$tfile- $num_create ||
+               error "createmany: failed to create $num_create files: $?"
        # delete all of the files with objects on OST0 so the
        # filesystem is not inconsistent later on
        $LFS find $MOUNT --ost 0 | xargs rm