}
run_test 39m "test atime and mtime before 1970"
+test_39n() { # LU-3832
+ local atime_diff=$(do_facet $SINGLEMDS \
+ lctl get_param -n mdd.*MDT0000*.atime_diff)
+ local atime0
+ local atime1
+ local atime2
+
+ do_facet $SINGLEMDS lctl set_param -n mdd.*MDT0000*.atime_diff=1
+
+ rm -rf $DIR/$tfile
+ dd if=/dev/zero of=$DIR/$tfile bs=4096 count=1 status=noxfer
+ atime0=$(stat -c %X $DIR/$tfile)
+
+ sleep 5
+ $MULTIOP $DIR/$tfile oO_RDONLY:O_NOATIME:r4096c
+ atime1=$(stat -c %X $DIR/$tfile)
+
+ sleep 5
+ cancel_lru_locks mdc
+ cancel_lru_locks osc
+ $MULTIOP $DIR/$tfile oO_RDONLY:O_NOATIME:r4096c
+ atime2=$(stat -c %X $DIR/$tfile)
+
+ do_facet $SINGLEMDS \
+ lctl set_param -n mdd.*MDT0000*.atime_diff=$atime_diff
+
+ [ "$atime0" -eq "$atime1" ] || error "atime0 $atime0 != atime1 $atime1"
+ [ "$atime1" -eq "$atime2" ] || error "atime0 $atime0 != atime1 $atime1"
+}
+run_test 39n "check that O_NOATIME is honored"
+
test_40() {
dd if=/dev/zero of=$DIR/$tfile bs=4096 count=1
$RUNAS $OPENFILE -f O_WRONLY:O_TRUNC $DIR/$tfile &&
local STRIPE_SIZE=1048576
local FILE_LENGTH=$((STRIPE_SIZE*100))
local nreads=10000
- local osc
-
- setup_test101bc
+ local osc_rpc_stats
- cancel_lru_locks osc
- $LCTL set_param osc.*.rpc_stats 0
- $READS -f $DIR/$tfile -s$FILE_LENGTH -b65536 -n$nreads -t 180
- for osc in $($LCTL get_param -N osc.*); do
- if [ "$osc" == "osc.num_refs" ]; then
- continue
- fi
-
- local lines=$($LCTL get_param -n ${osc}.rpc_stats | wc | awk '{print $1}')
- if [ $lines -le 20 ]; then
- continue
- fi
+ setup_test101bc
- local rpc4k=$($LCTL get_param -n ${osc}.rpc_stats |
- awk '$1 == "1:" { print $2; exit; }')
- local rpc8k=$($LCTL get_param -n ${osc}.rpc_stats |
- awk '$1 == "2:" { print $2; exit; }')
- local rpc16k=$($LCTL get_param -n ${osc}.rpc_stats |
- awk '$1 == "4:" { print $2; exit; }')
- local rpc32k=$($LCTL get_param -n ${osc}.rpc_stats |
- awk '$1 == "8:" { print $2; exit; }')
-
- [ $rpc4k != 0 ] && error "Small 4k read IO ${rpc4k}!"
- [ $rpc8k != 0 ] && error "Small 8k read IO ${rpc8k}!"
- [ $rpc16k != 0 ] && error "Small 16k read IO ${rpc16k}!"
- [ $rpc32k != 0 ] && error "Small 32k read IO ${rpc32k}!"
- echo "${osc} rpc check passed!"
- done
- cleanup_test101bc
- true
+ cancel_lru_locks osc
+ $LCTL set_param osc.*.rpc_stats 0
+ $READS -f $DIR/$tfile -s$FILE_LENGTH -b65536 -n$nreads -t 180
+ for osc_rpc_stats in $($LCTL get_param -N osc.*.rpc_stats); do
+ local stats=$($LCTL get_param -n $osc_rpc_stats)
+ local lines=$(echo "$stats" | awk 'END {print NR;}')
+ local size
+
+ if [ $lines -le 20 ]; then
+ continue
+ fi
+ for size in 1 2 4 8; do
+ local rpc=$(echo "$stats" |
+ awk '($1 == "'$size':") {print $2; exit; }')
+ [ $rpc != 0 ] &&
+ error "Small $((size*4))k read IO $rpc !"
+ done
+ echo "$osc_rpc_stats check passed!"
+ done
+ cleanup_test101bc
+ true
}
run_test 101c "check stripe_size aligned read-ahead ================="
test_161c() {
[ $PARALLEL == "yes" ] && skip "skip parallel run" && return
+ [[ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.1.5) ]] &&
+ skip "Need MDS version at least 2.1.5" && return
# define CLF_RENAME_LAST 0x0001
# rename overwrite a target having nlink = 1 (changelog flag 0x1)
local USER=$(do_facet $SINGLEMDS $LCTL --device $MDT0 \
changelog_register -n)
+ rm -rf $DIR/$tdir
mkdir -p $DIR/$tdir
touch $DIR/$tdir/foo_161c
touch $DIR/$tdir/bar_161c
mv -f $DIR/$tdir/foo_161c $DIR/$tdir/bar_161c
+ $LFS changelog $MDT0 | grep RENME
local flags=$($LFS changelog $MDT0 | grep RENME | tail -1 | \
cut -f5 -d' ')
$LFS changelog_clear $MDT0 $USER 0
touch $DIR/$tdir/bar_161c
ln $DIR/$tdir/bar_161c $DIR/$tdir/foobar_161c
mv -f $DIR/$tdir/foo_161c $DIR/$tdir/bar_161c
+ $LFS changelog $MDT0 | grep RENME
flags=$($LFS changelog $MDT0 | grep RENME | tail -1 | cut -f5 -d' ')
$LFS changelog_clear $MDT0 $USER 0
if [ x$flags != "x0x0" ]; then
# rename doesn't overwrite a target (changelog flag 0x0)
touch $DIR/$tdir/foo_161c
mv -f $DIR/$tdir/foo_161c $DIR/$tdir/foo2_161c
+ $LFS changelog $MDT0 | grep RENME
flags=$($LFS changelog $MDT0 | grep RENME | tail -1 | cut -f5 -d' ')
$LFS changelog_clear $MDT0 $USER 0
if [ x$flags != "x0x0" ]; then
# define CLF_UNLINK_LAST 0x0001
# unlink a file having nlink = 1 (changelog flag 0x1)
rm -f $DIR/$tdir/foo2_161c
+ $LFS changelog $MDT0 | grep UNLNK
flags=$($LFS changelog $MDT0 | grep UNLNK | tail -1 | cut -f5 -d' ')
$LFS changelog_clear $MDT0 $USER 0
if [ x$flags != "x0x1" ]; then
# unlink a file having nlink > 1 (changelog flag 0x0)
ln -f $DIR/$tdir/bar_161c $DIR/$tdir/foobar_161c
rm -f $DIR/$tdir/foobar_161c
+ $LFS changelog $MDT0 | grep UNLNK
flags=$($LFS changelog $MDT0 | grep UNLNK | tail -1 | cut -f5 -d' ')
$LFS changelog_clear $MDT0 $USER 0
if [ x$flags != "x0x0" ]; then
$LCTL set_param fail_loc=0x1405
setfattr -n user.attr -v value $DIR/$tdir/$tfile &&
error "setfattr should have failed with ENOMEM"
- # attr pre-2.4.44-7 had a bug with rc
- getfattr -n user.attr $DIR/$tdir/$tfile &&
- error "getfattr should have failed with ENOMEM"
+ if [ ! -f /etc/SuSE-release ]; then
+ # attr pre-2.4.44-7 had a bug with rc
+ # LU-3703 - SLES clients have older attr
+ getfattr -n user.attr $DIR/$tdir/$tfile &&
+ error "getfattr should have failed with ENOMEM"
+ fi
$LCTL set_param fail_loc=0x0
rm -rf $DIR/$tdir