}
test_34() { #16129
+ remote_ost_nodsh && skip "remote OST with nodsh" && return
local OPER
local lock_in
local lock_out
# pdirop tests
# test 40: check non-blocking operations
test_40a() {
+ remote_mds_nodsh && skip "remote MDS with nodsh" && return
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
touch $DIR2
run_test 40a "pdirops: create vs others =============="
test_40b() {
+ remote_mds_nodsh && skip "remote MDS with nodsh" && return
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
touch $DIR1/$tfile &
run_test 40b "pdirops: open|create and others =============="
test_40c() {
+ remote_mds_nodsh && skip "remote MDS with nodsh" && return
touch $DIR1/$tfile
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
run_test 40c "pdirops: link and others =============="
test_40d() {
+ remote_mds_nodsh && skip "remote MDS with nodsh" && return
touch $DIR1/$tfile
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
run_test 40d "pdirops: unlink and others =============="
test_40e() {
+ remote_mds_nodsh && skip "remote MDS with nodsh" && return
touch $DIR1/$tfile
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
# give multiop a chance to open
sleep 1
- $LFS mv -M $MDTIDX $DIR1/$tdir &&
+ $LFS migrate -m $MDTIDX $DIR1/$tdir &&
error "migrate open files should failed with open files"
kill -USR1 $pid
- $LFS mv -M $MDTIDX $DIR1/$tdir ||
+ $LFS migrate -m $MDTIDX $DIR1/$tdir ||
error "migrate remote dir error"
echo "Finish migration, then checking.."
}
run_test 82 "fsetxattr and fgetxattr on orphan files"
+test_83() {
+ [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
+ local pid1
+ local pid2
+
+ (
+ cd $DIR1
+ while true; do
+ $LFS mkdir -i1 -c2 $tdir
+ rmdir $tdir
+ done
+ ) &
+ pid1=$!
+ echo "start pid $pid1 to create/unlink striped directory"
+
+ # Access the directory at the same time
+ (
+ cd $DIR2
+ while true; do
+ stat $tdir > /dev/null 2>&1
+ done
+ ) &
+ pid2=$!
+ echo "start pid $pid2 to stat striped directory"
+
+ sleep 120
+ kill $pid1 $pid2
+ wait $pid1 $pid2
+
+ return 0
+}
+run_test 83 "access striped directory while it is being created/unlinked"
+
log "cleanup: ======================================================"
[ "$(mount | grep $MOUNT2)" ] && umount $MOUNT2