local stripe_size=$(do_facet $SINGLEMDS \
"$LCTL get_param -n lod.$(facet_svc $SINGLEMDS)*.stripesize")
+ check_set_fallocate
+
# to allocate grant because it may run out due to test_15.
$LFS setstripe -c -1 $file1
dd if=/dev/zero of=$file1 bs=$stripe_size count=$OSTCOUNT oflag=sync
rm -f $file1
$LFS setstripe -c -1 $file1 # b=10919
- fsx -c 50 -p $FSXP -N $FSXNUM -l $((SIZE * 256)) -S 0 $file1 $file2 ||
+ $FSX -c 50 -p $FSXP -N $FSXNUM -l $((SIZE * 256)) -S 0 $file1 $file2 ||
error "fsx failed"
rm -f $file1
# O_DIRECT reads and writes must be aligned to the device block size.
- fsx -c 50 -p $FSXP -N $FSXNUM -l $((SIZE * 256)) -S 0 -Z -r 4096 \
+ $FSX -c 50 -p $FSXP -N $FSXNUM -l $((SIZE * 256)) -S 0 -Z -r 4096 \
-w 4096 $file1 $file2 || error "fsx with O_DIRECT failed."
}
run_test 16a "$FSXNUM iterations of dual-mount fsx"
local file2=$DIR2/$tfile
local stripe_size=($($LFS getstripe -S $DIR))
+ check_set_fallocate
+
# to allocate grant because it may run out due to test_15.
lfs setstripe -c -1 $file1
dd if=/dev/zero of=$file1 bs=$stripe_size count=$OSTCOUNT oflag=sync ||
lfs setstripe -c -1 $file1 # b=10919
# -o is set to 8192 because writes < 1 page and between 1 and 2 pages
# create a mix of tiny writes & normal writes
- fsx -c 50 -p $FSXP -N $FSXNUM -l $((SIZE * 256)) -o 8192 -S 0 \
+ $FSX -c 50 -p $FSXP -N $FSXNUM -l $((SIZE * 256)) -o 8192 -S 0 \
$file1 $file2 || error "fsx with tiny write failed."
}
run_test 16b "$FSXNUM iterations of dual-mount fsx at small size"
[ "$ost1_FSTYPE" != ldiskfs ] && skip "dio on ldiskfs only"
+ check_set_fallocate
+
# to allocate grant because it may run out due to test_15.
$LFS setstripe -c -1 $file1
dd if=/dev/zero of=$file1 bs=$stripe_size count=$OSTCOUNT oflag=sync
set_osd_param $list '' writethrough_cache_enable 0
$LFS setstripe -c -1 $file1 # b=10919
- fsx -c 50 -p $FSXP -N $FSXNUM -l $((SIZE * 256)) -S 0 $file1 $file2 ||
+ $FSX -c 50 -p $FSXP -N $FSXNUM -l $((SIZE * 256)) -S 0 $file1 $file2 ||
error "fsx failed"
rm -f $file1
local file1=$DIR1/$tfile
local file2=$DIR2/$tfile
local file3=$DIR1/file
+ local tmpfile=$(mktemp)
local stripe_size=$(do_facet $SINGLEMDS \
"$LCTL get_param -n lod.$(facet_svc $SINGLEMDS)*.stripesize")
# to allocate grant because it may run out due to test_15.
$LFS setstripe -c -1 $file1
+ stack_trap "rm -f $file1 $file2 $file3 $tmpfile"
dd if=/dev/zero of=$file1 bs=$stripe_size count=$OSTCOUNT oflag=sync
dd if=/dev/zero of=$file2 bs=$stripe_size count=$OSTCOUNT oflag=sync
rm -f $file1
- local tmpfile=`mktemp`
$LFS setstripe -c -1 $file1 # b=10919
$LCTL set_param ldlm.namespaces.*.lru_size=clear
# buffer read from another client
dd if=$file2 of=$file3 bs=1M count=100
diff $file3 $tmpfile || error "file different(3)"
-
- rm -f $file1 $file2 $file3 $tmpfile
-
}
run_test 16d "Verify DIO and buffer IO with two clients"
test_16e() { # LU-13227
+ # issue: LU-14314
+
+ (( "$MDS1_VERSION" >= $(version_code 2.13.53) )) ||
+ skip "Need MDS version at least 2.13.53"
+
local file1=$DIR1/$tfile
local file2=$DIR2/$tfile
}
run_test 108a "lseek: parallel updates"
+# LU-14110
+test_109() {
+ local i
+ local pid1 pid2
+
+ ! local_mode ||
+ skip "Clients need to be on different nodes than the servers"
+
+ umount_client $MOUNT
+ umount_client $MOUNT2
+
+ echo "Starting race between client mount instances (50 iterations):"
+ for i in {1..50}; do
+ log "Iteration $i"
+
+#define OBD_FAIL_ONCE|OBD_FAIL_LLITE_RACE_MOUNT 0x80001417
+ $LCTL set_param -n fail_loc=0x80001417
+
+ mount_client $MOUNT & pid1=$!
+ mount_client $MOUNT2 & pid2=$!
+ wait $pid1 || error "Mount $MOUNT fails with $?"
+ wait $pid2 || error "Mount $MOUNT2 fails with $?"
+
+ umount_client $MOUNT & pid1=$!
+ umount_client $MOUNT2 & pid2=$!
+ wait $pid1 || error "Umount $MOUNT fails with $?"
+ wait $pid2 || error "Umount $MOUNT2 fails with $?"
+
+ $LUSTRE_RMMOD || error "Fail to remove lustre modules"
+ load_modules
+ echo
+ done
+
+ mount_client $MOUNT
+ mount_client $MOUNT2
+}
+
+run_test 109 "Race with several mount instances on 1 node"
+
log "cleanup: ======================================================"
# kill and wait in each test only guarentee script finish, but command in script