check_and_setup_lustre
(( $MDS1_VERSION >= $(version_code 2.14.0-ddn93) )) ||
- skip "need MDS >= 2.14.0-ddn93 for layout support"
+ skip "need MDS >= 2.14.0-ddn93 for compress layout support"
# $RUNAS_ID may get set incorrectly somewhere else
if [[ $UID -eq 0 && $RUNAS_ID -eq 0 ]]; then
local types_save=($(do_facet mds1 \
$LCTL get_param -n mdt.*.compress_types))
+ if [[ -z $(do_facet mds1 "$LCTL get_param mdt.*.compress_types") ]] &&
+ (( $MDS1_VERSION > $(version_code 2.14.0-ddn128-6-g70133e8f) ||
+ $MDS1_VERSION < $(version_code 2.14.0-ddn88-4-g0d1831c9e) )); then
+ # Test compressed *cannot* be created if MDS has no support.
+ # The above checks exclude MDS versions where CSDC *layout* was
+ # accepted, but before connect flag was added (compress_types).
+ $LFS setstripe -E eof -c 1 -Z lzo $DIR/$tfile &&
+ error "able to create file without compression"
+ fi
+
skip "MDT support for compression connect flags is disabled for now"
[[ -n "$types_save" ]] || skip "no MDT support for compress_types"
skip "need MDS > 2.14.0-ddn131-15-g3e1dd9d6ae for comp add"
local tf=$DIR/$tfile
- stack_trap "rm -f $tf; disable_compression"
- enable_compression
+ stack_trap "rm -f $tf"
+ compression_enabled || skip "compression is disabled ($(uname -a))"
$LFS setstripe -E1M $tf || error "setstripe failed"
$LFS setstripe -Eeof --component-add -Z gzip $tf ||
# Source should be a few MiB in size
$CHECKSTAT -s 14625450 $source || error "checkstat wrong size"
- stack_trap "rm -f $tf; disable_compression"
- enable_compression
+ stack_trap "rm -f $tf"
+ compression_enabled || skip "compression is disabled ($(uname -a))"
# Simple compressed layout
# Source should be a few MiB in size
$CHECKSTAT -s 14625450 $source || error "checkstat wrong size"
- stack_trap "rm -f $tf; disable_compression"
- enable_compression
+ stack_trap "rm -f $tf"
+ compression_enabled || skip "compression is disabled ($(uname -a))"
# Disable readahead so reads are not expanded to full chinks
$LCTL set_param osc.*.rpc_stats=c
# Source should be a few MiB in size
$CHECKSTAT -s 14625450 $source || error "checkstat wrong size"
- stack_trap "rm -f $tf; disable_compression"
- enable_compression
+ stack_trap "rm -f $tf"
+ compression_enabled || skip "compression is disabled ($(uname -a))"
local chunksizes=(
64
# Source should be a few MiB in size
$CHECKSTAT -s 14625450 $tmp_hdf || error "checkstat wrong size"
- stack_trap "rm -f $tf; disable_compression"
- enable_compression
+ stack_trap "rm -f $tf"
+ compression_enabled || skip "compression is disabled ($(uname -a))"
# Simple compressed layout
$LFS setstripe -E -1 -Z lz4:0 --compress-chunk=$chunksize $tf ||
# Source should be a few MiB in size
$CHECKSTAT -s 14625450 $source || error "checkstat wrong size"
- stack_trap "rm -f $tf; disable_compression"
- enable_compression
+ stack_trap "rm -f $tf"
+ compression_enabled || skip "compression is disabled ($(uname -a))"
# Disable readahead so reads are not expanded to full chinks
$LCTL set_param osc.*.rpc_stats=c
# Source should be a few MiB in size
$CHECKSTAT -s 14625450 $source || error "checkstat wrong size"
- stack_trap "rm -f $tf; disable_compression"
- enable_compression
+ stack_trap "rm -f $tf"
+ compression_enabled || skip "compression is disabled ($(uname -a))"
$LFS setstripe -E -1 -Z lz4:0 --compress-chunk=$chunksize $tf.source ||
error "set a compress component in $tf.source failed"
# Source should be a few MiB in size
$CHECKSTAT -s 14625450 $source || error "checkstat wrong size"
- stack_trap "rm -f $tf; disable_compression"
- enable_compression
+ stack_trap "rm -f $tf"
+ compression_enabled || skip "compression is disabled ($(uname -a))"
for compr_type in ${compr_types[@]}; do
for compr_level in ${compr_levels[@]}; do
local td=$DIR/$tdir
local source="/etc/ /bin/"
- stack_trap "rm -rf $td; disable_compression"
- enable_compression
+ stack_trap "rm -rf $td"
+ compression_enabled || skip "compression is disabled ($(uname -a))"
for compr_type in ${compr_types[@]}; do
for compr_level in ${compr_levels[@]}; do
}
run_test 1008 "validate directory space usage reduction with compression"
+test_1020() {
+ (( MDS1_VERSION >= $(version_code 2.14.0-ddn128) )) ||
+ skip "Need MDS version at least 2.14.0-ddn128"
+
+ test_mkdir -p $DIR/$tdir
+ local tf=$DIR/$tdir/$tfile
+ local hdf=$LUSTRE/tests/AMSR_E_L3_DailyOcean_V05_20111003.hdf
+ local tmp_hdf=$TMP/$tfile.hdf
+ local source=$tmp_hdf
+ local chunksize=128
+ local wb_compr=0 # write_bytes_compr
+ local wb_raw=0 # write_bytes_raw
+ local w_chunks=0 # write_chunks_compr
+ local rb_raw=0 # read_bytes_raw
+ local rb_compr=0 # read_bytes_compr
+ local r_chunks=0 # read_chunks_compr
+
+ # clear counters
+ lctl set_param osc.*.stats_compr 0
+
+ if [[ -f $hdf.bz2 ]] && type -p bzcat >/dev/null; then
+ bzcat $hdf.bz2 > $tmp_hdf
+ elif [[ -f $hdf.bz2 ]] && type -p bunzip2 >/dev/null; then
+ cp $hdf.bz2 $tmp_hdf.bz2 || error "cp $tmp_hdf.bz2"
+ bunzip2 $tmp_hdf.bz2 || error "bunzip2 $tmp_hdf.bz2"
+ else
+ skip_env "bunzip2 is not installed"
+ fi
+
+ compression_enabled || skip "compression is disabled ($(uname -a))"
+
+ lctl set_param debug=sec debug_mb=256
+
+ # Disable readahead so reads are not expanded to full chinks
+ $LCTL set_param osc.*.rpc_stats=c
+ read_ahead_mb=$($LCTL get_param -n llite.*.max_read_ahead_mb)
+ $LCTL set_param llite.*.max_read_ahead_mb=0
+ stack_trap "$LCTL set_param llite.*.max_read_ahead_mb=$read_ahead_mb" EXIT
+
+
+ # Simple compressed layout + (OST-0000 and stripe_count == 1)
+ $LFS setstripe -i 0 -c 1 -E -1 \
+ -Z lz4:0 --compress-chunk=$chunksize $DIR/$tdir ||
+ error "set a compress component in $DIR/$tdir failed"
+
+ cp -a $source $tf || error "copy $hdf to $tf failed"
+ sync
+ cancel_lru_locks osc
+
+ wb_compr=$(lctl get_param osc.$FSNAME-OST0000*.stats_compr |
+ awk '/write_bytes_compr:/ { print $2 }')
+
+ wb_raw=$(lctl get_param osc.$FSNAME-OST0000*.stats_compr |
+ awk '/write_bytes_raw:/ { print $2 }')
+
+ w_chunks=$(lctl get_param osc.$FSNAME-OST0000*.stats_compr |
+ awk '/write_chunks_compr:/ { print $2 }')
+
+ dd if=$tf of=/dev/null bs=1M || error "read $tf via dd failed"
+
+ rb_compr=$(lctl get_param osc.$FSNAME-OST0000*.stats_compr |
+ awk '/read_bytes_compr:/ { print $2 }')
+
+ rb_raw=$(lctl get_param osc.$FSNAME-OST0000*.stats_compr |
+ awk '/read_bytes_raw:/ { print $2 }')
+
+ r_chunks=$(lctl get_param osc.$FSNAME-OST0000*.stats_compr |
+ awk '/read_chunks_compr:/ { print $2 }')
+
+ # Print stats for debug
+ du --block-size=1 $tf
+ lctl get_param osc.$FSNAME-OST0000*.stats_compr
+
+ # Uncomment the check after adding the server part.
+ # (( rb_compr == wb_compr )) ||
+ # error "compr size does not match. '$rb_compr' != '$wb_compr'"
+
+ (( rb_raw == wb_raw )) ||
+ error "original size does not match. '$rb_raw' != '$wb_raw'"
+
+ # Uncomment the check after adding the server part.
+ # (( r_chunks == w_chunks )) ||
+ # error "num of chunks does not match. '$r_chunks' != '$w_chunks'"
+}
+run_test 1020 "Сhecking compression counters"
+
test_1080() {
(( MDS1_VERSION >= $(version_code 2.14.0-ddn128) )) ||
skip "Need MDS version at least 2.14.0-ddn128"
local compressed=$LUSTRE/tests/compressed.bin
local broken_header=$TMP/$tfile.4
- enable_compression
+ compression_enabled || skip "compression is disabled ($(uname -a))"
# Use pre-created compressed file
hexdump -C $compressed | head
cat $compressed > $tf
}
run_test 1080 "Compression header error tolerance"
-test_1020() {
- (( MDS1_VERSION >= $(version_code 2.14.0-ddn128) )) ||
- skip "Need MDS version at least 2.14.0-ddn128"
-
- test_mkdir -p $DIR/$tdir
- local tf=$DIR/$tdir/$tfile
- local hdf=$LUSTRE/tests/AMSR_E_L3_DailyOcean_V05_20111003.hdf
- local tmp_hdf=$TMP/$tfile.hdf
- local source=$tmp_hdf
- local chunksize=128
- local wb_compr=0 # write_bytes_compr
- local wb_raw=0 # write_bytes_raw
- local w_chunks=0 # write_chunks_compr
- local rb_raw=0 # read_bytes_raw
- local rb_compr=0 # read_bytes_compr
- local r_chunks=0 # read_chunks_compr
-
- # clear counters
- lctl set_param osc.*.stats_compr 0
-
- if [[ -f $hdf.bz2 ]] && type -p bzcat >/dev/null; then
- bzcat $hdf.bz2 > $tmp_hdf
- elif [[ -f $hdf.bz2 ]] && type -p bunzip2 >/dev/null; then
- cp $hdf.bz2 $tmp_hdf.bz2 || error "cp $tmp_hdf.bz2"
- bunzip2 $tmp_hdf.bz2 || error "bunzip2 $tmp_hdf.bz2"
- else
- skip_env "bunzip2 is not installed"
- fi
-
- stack_trap "rm -f $tf; disable_compression"
- enable_compression
-
- lctl set_param debug=sec debug_mb=256
-
- # Disable readahead so reads are not expanded to full chinks
- $LCTL set_param osc.*.rpc_stats=c
- read_ahead_mb=$($LCTL get_param -n llite.*.max_read_ahead_mb)
- $LCTL set_param llite.*.max_read_ahead_mb=0
- stack_trap "$LCTL set_param llite.*.max_read_ahead_mb=$read_ahead_mb" EXIT
-
-
- # Simple compressed layout + (OST-0000 and stripe_count == 1)
- $LFS setstripe -i 0 -c 1 -E -1 \
- -Z lz4:0 --compress-chunk=$chunksize $DIR/$tdir ||
- error "set a compress component in $DIR/$tdir failed"
-
- cp -a $source $tf || error "copy $hdf to $tf failed"
- sync
- cancel_lru_locks osc
-
- wb_compr=$(lctl get_param osc.$FSNAME-OST0000*.stats_compr |
- awk '/write_bytes_compr:/ { print $2 }')
-
- wb_raw=$(lctl get_param osc.$FSNAME-OST0000*.stats_compr |
- awk '/write_bytes_raw:/ { print $2 }')
-
- w_chunks=$(lctl get_param osc.$FSNAME-OST0000*.stats_compr |
- awk '/write_chunks_compr:/ { print $2 }')
-
- dd if=$tf of=/dev/null bs=1M || error "read $tf via dd failed"
-
- rb_compr=$(lctl get_param osc.$FSNAME-OST0000*.stats_compr |
- awk '/read_bytes_compr:/ { print $2 }')
-
- rb_raw=$(lctl get_param osc.$FSNAME-OST0000*.stats_compr |
- awk '/read_bytes_raw:/ { print $2 }')
-
- r_chunks=$(lctl get_param osc.$FSNAME-OST0000*.stats_compr |
- awk '/read_chunks_compr:/ { print $2 }')
-
- # Print stats for debug
- du --block-size=1 $tf
- lctl get_param osc.$FSNAME-OST0000*.stats_compr
-
- # Uncomment the check after adding the server part.
- # (( rb_compr == wb_compr )) ||
- # error "compr size does not match. '$rb_compr' != '$wb_compr'"
-
- (( rb_raw == wb_raw )) ||
- error "original size does not match. '$rb_raw' != '$wb_raw'"
-
- # Uncomment the check after adding the server part.
- # (( r_chunks == w_chunks )) ||
- # error "num of chunks does not match. '$r_chunks' != '$w_chunks'"
-}
-run_test 1020 "Сhecking compression counters"
-
complete_test $SECONDS
check_and_cleanup_lustre
declare -a logs=($ONLY)