}
run_test 39d "sync write should update mtime"
+pdo_sched() {
+ # how long 40-47 take with specific delay
+ # sleep 0.1 # 78s
+ sleep 0.2 # 103s
+ # sleep 0.3 # 124s
+ # sleep 0.5 # 164s
+}
+
# check that pid exists hence second operation wasn't blocked by first one
# if it is so then there is no conflict, return 0
# else second operation is conflicting with first one, return 1
check_pdo_conflict() {
local pid=$1
local conflict=0
- sleep 1 # to ensure OP1 is finished on client if OP2 is blocked by OP1
+ pdo_sched # to ensure OP1 is finished on client if OP2 is blocked by OP1
if [[ `ps --pid $pid | wc -l` == 1 ]]; then
conflict=1
echo "Conflict"
# test 40: check non-blocking operations
test_40a() {
remote_mds_nodsh && skip "remote MDS with nodsh" && return
+ cancel_lru_locks mdc
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
touch $DIR2
mkdir $DIR1/$tfile &
- PID1=$!
- sleep 1
+ PID1=$!; pdo_sched
touch $DIR2/$tfile-2
check_pdo_conflict $PID1 || error "create is blocked"
mkdir $DIR2/$tfile-3
# all operations above shouldn't wait the first one
check_pdo_conflict $PID1 || error "parallel operation is blocked"
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
wait $PID1
rm -rf $DIR/$tfile*
return 0
test_40b() {
remote_mds_nodsh && skip "remote MDS with nodsh" && return
+ cancel_lru_locks mdc
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
touch $DIR1/$tfile &
- PID1=$!
- sleep 1
+ PID1=$!; pdo_sched
# open|create
touch $DIR2/$tfile-2
check_pdo_conflict $PID1 || error "create is blocked"
# all operations above shouldn't wait the first one
check_pdo_conflict $PID1 || error "parallel operation is blocked"
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
wait $PID1
rm -rf $DIR/$tfile*
return 0
test_40c() {
remote_mds_nodsh && skip "remote MDS with nodsh" && return
+ cancel_lru_locks mdc
touch $DIR1/$tfile
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
link $DIR1/$tfile $DIR1/$tfile-0 &
- PID1=$!
- sleep 1
+ PID1=$!; pdo_sched
# open|create
touch $DIR2/$tfile-2
check_pdo_conflict $PID1 || error "create is blocked"
# all operations above shouldn't wait the first one
check_pdo_conflict $PID1 || error "parallel operation is blocked"
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
wait $PID1
rm -rf $DIR/$tfile*
return 0
test_40d() {
remote_mds_nodsh && skip "remote MDS with nodsh" && return
+ cancel_lru_locks mdc
touch $DIR1/$tfile
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
rm $DIR1/$tfile &
- PID1=$!
- sleep 1
+ PID1=$!; pdo_sched
# open|create
touch $DIR2/$tfile-2
check_pdo_conflict $PID1 || error "create is blocked"
# all operations above shouldn't wait the first one
check_pdo_conflict $PID1 || error "parallel operation is blocked"
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
wait $PID1
return 0
}
test_40e() {
remote_mds_nodsh && skip "remote MDS with nodsh" && return
+ cancel_lru_locks mdc
touch $DIR1/$tfile
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
mv $DIR1/$tfile $DIR1/$tfile-0 &
- PID1=$!
- sleep 1
+ PID1=$!; pdo_sched
# open|create
touch $DIR2/$tfile-2
check_pdo_conflict $PID1 || error "create is blocked"
# all operations above shouldn't wait the first one
check_pdo_conflict $PID1 || error "parallel operation is blocked"
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
wait $PID1
rm -rf $DIR/$tfile*
return 0
# test 41: create blocking operations
test_41a() {
+ cancel_lru_locks mdc
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
$MULTIOP $DIR1/$tfile oO_CREAT:O_RDWR:c &
- PID1=$!
- sleep 1
- mkdir $DIR2/$tfile && error "mkdir must fail"
+ PID1=$! ; pdo_sched
+ mkdir $DIR2/$tfile &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; echo "mkdir isn't blocked"; }
+ wait $PID2 ; [ $? -ne 0 ] || error "mkdir must fail"
rm -rf $DIR/$tfile*
return 0
}
run_test 41a "pdirops: create vs mkdir =============="
test_41b() {
+ cancel_lru_locks mdc
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
$MULTIOP $DIR1/$tfile oO_CREAT:O_RDWR:c &
- PID1=$!
- sleep 1
- $MULTIOP $DIR2/$tfile oO_CREAT:O_EXCL:c && error "create must fail"
+ PID1=$! ; pdo_sched
+ $MULTIOP $DIR2/$tfile oO_CREAT:O_EXCL:c &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "create isn't blocked"; }
+ wait $PID2 ; [ $? -ne 0 ] || error "create must fail"
rm -rf $DIR/$tfile*
return 0
}
run_test 41b "pdirops: create vs create =============="
test_41c() {
+ cancel_lru_locks mdc
touch $DIR1/$tfile-2
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
$MULTIOP $DIR1/$tfile oO_CREAT:O_RDWR:c &
- PID1=$!
- sleep 1
- link $DIR2/$tfile-2 $DIR2/$tfile && error "link must fail"
+ PID1=$! ; pdo_sched
+ link $DIR2/$tfile-2 $DIR2/$tfile &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "link isn't blocked"; }
+ wait $PID2 ; [ $? -ne 0 ] || error "link must fail"
rm -rf $DIR/$tfile*
return 0
}
run_test 41c "pdirops: create vs link =============="
test_41d() {
+ cancel_lru_locks mdc
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
$MULTIOP $DIR1/$tfile oO_CREAT:O_RDWR:c &
- PID1=$!
- sleep 1
- rm $DIR2/$tfile || error "unlink must succeed"
+ PID1=$! ; pdo_sched
+ rm $DIR2/$tfile &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "unlink isn't blocked"; }
+ wait $PID2 ; [ $? -eq 0 ] || error "unlink must succeed"
rm -rf $DIR/$tfile*
return 0
}
run_test 41d "pdirops: create vs unlink =============="
test_41e() {
+ cancel_lru_locks mdc
touch $DIR1/$tfile-2
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
$MULTIOP $DIR1/$tfile oO_CREAT:O_RDWR:c &
- PID1=$!
- sleep 1
- mv $DIR2/$tfile-2 $DIR2/$tfile || error "rename must succeed"
+ PID1=$! ; pdo_sched
+ mv $DIR2/$tfile-2 $DIR2/$tfile &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "rename isn't blocked"; }
+ wait $PID2 ; [ $? -eq 0 ] || error "rename must succeed"
rm -rf $DIR/$tfile*
return 0
}
run_test 41e "pdirops: create and rename (tgt) =============="
test_41f() {
+ cancel_lru_locks mdc
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
$MULTIOP $DIR1/$tfile oO_CREAT:O_RDWR:c &
- PID1=$!
- sleep 1
- mv $DIR2/$tfile $DIR2/$tfile-2 || error "rename must succeed"
+ PID1=$! ; pdo_sched
+ mv $DIR2/$tfile $DIR2/$tfile-2 &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "rename isn't blocked"; }
+ wait $PID2 ; [ $? -eq 0 ] || error "rename must succeed"
rm -rf $DIR/$tfile*
return 0
}
run_test 41f "pdirops: create and rename (src) =============="
test_41g() {
+ cancel_lru_locks mdc
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
$MULTIOP $DIR1/$tfile oO_CREAT:O_RDWR:c &
- PID1=$!
- sleep 1
- stat $DIR2/$tfile > /dev/null || error "stat must succeed"
+ PID1=$! ; pdo_sched
+ stat $DIR2/$tfile > /dev/null &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "getattr isn't blocked"; }
+ wait $PID2 ; [ $? -eq 0 ] || error "stat must succeed"
rm -rf $DIR/$tfile*
return 0
}
run_test 41g "pdirops: create vs getattr =============="
test_41h() {
+ cancel_lru_locks mdc
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
$MULTIOP $DIR1/$tfile oO_CREAT:O_RDWR:c &
- PID1=$!
- sleep 1
- ls -lia $DIR2/ > /dev/null
+ PID1=$! ; pdo_sched
+ ls -lia $DIR2/ > /dev/null &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "readdir isn't blocked"; }
+ wait $PID2
rm -rf $DIR/$tfile*
return 0
}
# test 42: unlink and blocking operations
test_42a() {
+ cancel_lru_locks mdc
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
mkdir $DIR1/$tfile &
- PID1=$!
- sleep 1
- mkdir $DIR2/$tfile && error "mkdir must fail"
+ PID1=$! ; pdo_sched
+ mkdir $DIR2/$tfile &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "mkdir isn't blocked"; }
+ wait $PID2 ; [ $? -ne 0 ] || error "mkdir must fail"
rm -rf $DIR/$tfile*
return 0
}
run_test 42a "pdirops: mkdir vs mkdir =============="
test_42b() {
+ cancel_lru_locks mdc
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
mkdir $DIR1/$tfile &
- PID1=$!
- sleep 1
- $MULTIOP $DIR2/$tfile oO_CREAT:O_EXCL:c && error "create must fail"
+ PID1=$! ; pdo_sched
+ $MULTIOP $DIR2/$tfile oO_CREAT:O_EXCL:c &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "create isn't blocked"; }
+ wait $PID2 ; [ $? -ne 0 ] || error "create must fail"
rm -rf $DIR/$tfile*
return 0
}
run_test 42b "pdirops: mkdir vs create =============="
test_42c() {
+ cancel_lru_locks mdc
touch $DIR1/$tfile-2
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
mkdir $DIR1/$tfile &
- PID1=$!
- sleep 1
- link $DIR2/$tfile-2 $DIR2/$tfile && error "link must fail"
+ PID1=$! ; pdo_sched
+ link $DIR2/$tfile-2 $DIR2/$tfile &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "link isn't blocked"; }
+ wait $PID2 ; [ $? -ne 0 ] || error "link must fail"
rm -rf $DIR/$tfile*
return 0
}
run_test 42c "pdirops: mkdir vs link =============="
test_42d() {
+ cancel_lru_locks mdc
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
mkdir $DIR1/$tfile &
- PID1=$!
- sleep 1
- rmdir $DIR2/$tfile || error "unlink must succeed"
+ PID1=$! ; pdo_sched
+ rmdir $DIR2/$tfile &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "unlink isn't blocked"; }
+ wait $PID2 ; [ $? -eq 0 ] || error "unlink must succeed"
rm -rf $DIR/$tfile*
return 0
}
run_test 42d "pdirops: mkdir vs unlink =============="
test_42e() {
+ cancel_lru_locks mdc
touch $DIR1/$tfile-2
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
mkdir $DIR1/$tfile &
- PID1=$!
- sleep 1
- mv -T $DIR2/$tfile-2 $DIR2/$tfile && error "rename must fail"
+ PID1=$! ; pdo_sched
+ mv -T $DIR2/$tfile-2 $DIR2/$tfile &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "rename isn't blocked"; }
+ wait $PID2 ; [ $? -ne 0 ] || error "rename must fail"
rm -rf $DIR/$tfile*
return 0
}
run_test 42e "pdirops: mkdir and rename (tgt) =============="
test_42f() {
+ cancel_lru_locks mdc
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
mkdir $DIR1/$tfile &
- PID1=$!
- sleep 1
- mv $DIR2/$tfile $DIR2/$tfile-2 || error "rename must succeed"
+ PID1=$! ; pdo_sched
+ mv $DIR2/$tfile $DIR2/$tfile-2 &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "rename isn't blocked"; }
+ wait $PID2 ; [ $? -eq 0 ] || error "rename must succeed"
rm -rf $DIR/$tfile*
return 0
}
run_test 42f "pdirops: mkdir and rename (src) =============="
test_42g() {
+ cancel_lru_locks mdc
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
mkdir $DIR1/$tfile &
- PID1=$!
- sleep 1
- stat $DIR2/$tfile > /dev/null || error "stat must succeed"
+ PID1=$! ; pdo_sched
+ stat $DIR2/$tfile > /dev/null &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "getattr isn't blocked"; }
+ wait $PID2 ; [ $? -eq 0 ] || error "stat must succeed"
rm -rf $DIR/$tfile*
return 0
}
run_test 42g "pdirops: mkdir vs getattr =============="
test_42h() {
+ cancel_lru_locks mdc
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
mkdir $DIR1/$tfile &
- PID1=$!
- sleep 1
- ls -lia $DIR2/ > /dev/null
+ PID1=$! ; pdo_sched
+ ls -lia $DIR2/ > /dev/null &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "readdir isn't blocked"; }
+ wait $PID2
rm -rf $DIR/$tfile*
return 0
}
# test 43: unlink and blocking operations
test_43a() {
+ cancel_lru_locks mdc
touch $DIR1/$tfile
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
rm $DIR1/$tfile &
- PID1=$!
- sleep 1
- mkdir $DIR2/$tfile || error "mkdir must succeed"
+ PID1=$! ; pdo_sched
+ mkdir $DIR2/$tfile &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "mkdir isn't blocked"; }
+ wait $PID2 ; [ $? -eq 0 ] || error "mkdir must succeed"
rm -rf $DIR/$tfile*
return 0
}
run_test 43a "pdirops: unlink vs mkdir =============="
test_43b() {
+ cancel_lru_locks mdc
touch $DIR1/$tfile
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
rm $DIR1/$tfile &
- PID1=$!
- sleep 1
- $MULTIOP $DIR2/$tfile oO_CREAT:O_EXCL:c || error "create must succeed"
+ PID1=$! ; pdo_sched
+ $MULTIOP $DIR2/$tfile oO_CREAT:O_EXCL:c &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "create isn't blocked"; }
+ wait $PID2 ; [ $? -eq 0 ] || error "create must succeed"
rm -rf $DIR/$tfile*
return 0
}
run_test 43b "pdirops: unlink vs create =============="
test_43c() {
+ cancel_lru_locks mdc
touch $DIR1/$tfile
touch $DIR1/$tfile-2
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
rm $DIR1/$tfile &
- PID1=$!
- sleep 1
- link $DIR2/$tfile-2 $DIR2/$tfile || error "link must succeed"
+ PID1=$! ; pdo_sched
+ link $DIR2/$tfile-2 $DIR2/$tfile &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "link isn't blocked"; }
+ wait $PID2 ; [ $? -eq 0 ] || error "link must succeed"
rm -rf $DIR/$tfile*
return 0
}
run_test 43c "pdirops: unlink vs link =============="
test_43d() {
+ cancel_lru_locks mdc
touch $DIR1/$tfile
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
rm $DIR1/$tfile &
- PID1=$!
- sleep 1
- rm $DIR2/$tfile && error "unlink must fail"
+ PID1=$! ; pdo_sched
+ rm $DIR2/$tfile &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "unlink isn't blocked"; }
+ wait $PID2 ; [ $? -ne 0 ] || error "unlink must fail"
rm -rf $DIR/$tfile*
return 0
}
run_test 43d "pdirops: unlink vs unlink =============="
test_43e() {
+ cancel_lru_locks mdc
touch $DIR1/$tfile
touch $DIR1/$tfile-2
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
rm $DIR1/$tfile &
- PID1=$!
- sleep 1
- mv -u $DIR2/$tfile-2 $DIR2/$tfile || error "rename must succeed"
+ PID1=$! ; pdo_sched
+ mv -u $DIR2/$tfile-2 $DIR2/$tfile &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "rename isn't blocked"; }
+ wait $PID2 ; [ $? -eq 0 ] || error "rename must succeed"
rm -rf $DIR/$tfile*
return 0
}
run_test 43e "pdirops: unlink and rename (tgt) =============="
test_43f() {
+ cancel_lru_locks mdc
touch $DIR1/$tfile
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
rm $DIR1/$tfile &
- PID1=$!
- sleep 1
- mv $DIR2/$tfile $DIR2/$tfile-2 && error "rename must fail"
+ PID1=$! ; pdo_sched
+ mv $DIR2/$tfile $DIR2/$tfile-2 &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "rename isn't blocked"; }
+ wait $PID2 ; [ $? -ne 0 ] || error "rename must fail"
rm -rf $DIR/$tfile*
return 0
}
run_test 43f "pdirops: unlink and rename (src) =============="
test_43g() {
+ cancel_lru_locks mdc
touch $DIR1/$tfile
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
rm $DIR1/$tfile &
- PID1=$!
- sleep 1
- stat $DIR2/$tfile > /dev/null && error "stat must fail"
+ PID1=$! ; pdo_sched
+ stat $DIR2/$tfile > /dev/null &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "getattr isn't blocked"; }
+ wait $PID2 ; [ $? -ne 0 ] || error "stat must fail"
rm -rf $DIR/$tfile*
return 0
}
run_test 43g "pdirops: unlink vs getattr =============="
test_43h() {
+ cancel_lru_locks mdc
touch $DIR1/$tfile
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
rm $DIR1/$tfile &
- PID1=$!
- sleep 1
- ls -lia $DIR2/ > /dev/null
+ PID1=$! ; pdo_sched
+ ls -lia $DIR2/ > /dev/null &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "readdir isn't blocked"; }
+ wait $PID2
rm -rf $DIR/$tfile*
return 0
}
test_43i() {
[ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
+ cancel_lru_locks mdc
touch $DIR1/$tfile
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
rm $DIR1/$tfile &
- PID1=$!
- sleep 1
- $LFS mkdir -i 1 $DIR2/$tfile || error "remote mkdir must succeed"
+ PID1=$! ; pdo_sched
+ $LFS mkdir -i 1 $DIR2/$tfile &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 &&
{ wait $PID1; error "remote mkdir isn't blocked"; }
+ wait $PID2 ; [ $? -eq 0 ] || error "remote mkdir must succeed"
rm -rf $DIR/$tfile*
return 0
}
# test 44: rename tgt and blocking operations
test_44a() {
+ cancel_lru_locks mdc
touch $DIR1/$tfile-2
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK2 0x146
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000146
mv $DIR1/$tfile-2 $DIR1/$tfile &
- PID1=$!
- sleep 1
- mkdir $DIR2/$tfile && error "mkdir must fail"
- check_pdo_conflict $PID1 && { wait $PID1; error "mkdir isn't blocked"; }
+ PID1=$! ; pdo_sched
+ mkdir $DIR2/$tfile &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
+ check_pdo_conflict $PID1 && { wait $PID1; date;error "mkdir isn't blocked"; }
+ wait $PID2 ; [ $? -ne 0 ] || error "mkdir must fail"
+ date
rm -rf $DIR/$tfile*
return 0
}
run_test 44a "pdirops: rename tgt vs mkdir =============="
test_44b() {
+ cancel_lru_locks mdc
touch $DIR1/$tfile-2
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK2 0x146
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000146
mv $DIR1/$tfile-2 $DIR1/$tfile &
- PID1=$!
- sleep 1
- $MULTIOP $DIR2/$tfile oO_CREAT:O_EXCL:c && error "create must fail"
+ PID1=$! ; pdo_sched
+ $MULTIOP $DIR2/$tfile oO_CREAT:O_EXCL:c &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "create isn't blocked"; }
+ wait $PID2 ; [ $? -ne 0 ] || error "create must fail"
rm -rf $DIR/$tfile*
return 0
}
run_test 44b "pdirops: rename tgt vs create =============="
test_44c() {
+ cancel_lru_locks mdc
touch $DIR1/$tfile-2
touch $DIR1/$tfile-3
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK2 0x146
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000146
mv $DIR1/$tfile-2 $DIR1/$tfile &
- PID1=$!
- sleep 1
- link $DIR2/$tfile-3 $DIR2/$tfile && error "link must fail"
+ PID1=$! ; pdo_sched
+ link $DIR2/$tfile-3 $DIR2/$tfile &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "link isn't blocked"; }
+ wait $PID2 ; [ $? -ne 0 ] || error "link must fail"
rm -rf $DIR/$tfile*
return 0
}
run_test 44c "pdirops: rename tgt vs link =============="
test_44d() {
+ cancel_lru_locks mdc
touch $DIR1/$tfile-2
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK2 0x146
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000146
mv $DIR1/$tfile-2 $DIR1/$tfile &
- PID1=$!
- sleep 1
- rm $DIR2/$tfile || error "unlink must succeed"
+ PID1=$! ; pdo_sched
+ rm $DIR2/$tfile &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "unlink isn't blocked"; }
+ wait $PID2 ; [ $? -eq 0 ] || error "unlink must succeed"
rm -rf $DIR/$tfile*
return 0
}
run_test 44d "pdirops: rename tgt vs unlink =============="
test_44e() {
+ cancel_lru_locks mdc
touch $DIR1/$tfile
touch $DIR1/$tfile-2
touch $DIR1/$tfile-3
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK2 0x146
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000146
mv $DIR1/$tfile-2 $DIR1/$tfile &
- PID1=$!
- sleep 1
- mv $DIR2/$tfile-3 $DIR2/$tfile || error "rename must succeed"
+ PID1=$! ; pdo_sched
+ mv $DIR2/$tfile-3 $DIR2/$tfile &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "rename isn't blocked"; }
+ wait $PID2 ; [ $? -eq 0 ] || error "rename must succeed"
rm -rf $DIR/$tfile*
return 0
}
run_test 44e "pdirops: rename tgt and rename (tgt) =============="
test_44f() {
+ cancel_lru_locks mdc
touch $DIR1/$tfile-2
touch $DIR1/$tfile-3
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK2 0x146
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000146
mv $DIR1/$tfile-2 $DIR1/$tfile &
- PID1=$!
- sleep 1
- mv $DIR2/$tfile $DIR2/$tfile-3 || error "rename must succeed"
+ PID1=$! ; pdo_sched
+ mv $DIR2/$tfile $DIR2/$tfile-3 &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "rename isn't blocked"; }
+ wait $PID2 ; [ $? -eq 0 ] || error "rename must succeed"
rm -rf $DIR/$tfile*
return 0
}
run_test 44f "pdirops: rename tgt and rename (src) =============="
test_44g() {
+ cancel_lru_locks mdc
touch $DIR1/$tfile-2
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK2 0x146
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000146
mv $DIR1/$tfile-2 $DIR1/$tfile &
- PID1=$!
- sleep 1
- stat $DIR2/$tfile > /dev/null || error "stat must succeed"
+ PID1=$! ; pdo_sched
+ stat $DIR2/$tfile > /dev/null &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "getattr isn't blocked"; }
+ wait $PID2 ; [ $? -eq 0 ] || error "stat must succeed"
rm -rf $DIR/$tfile*
return 0
}
run_test 44g "pdirops: rename tgt vs getattr =============="
test_44h() {
+ cancel_lru_locks mdc
touch $DIR1/$tfile-2
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK2 0x146
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000146
mv $DIR1/$tfile-2 $DIR1/$tfile &
- PID1=$!
- sleep 1
- ls -lia $DIR2/ > /dev/null
+ PID1=$! ; pdo_sched
+ ls -lia $DIR2/ > /dev/null &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "readdir isn't blocked"; }
+ wait $PID2
rm -rf $DIR/$tfile*
return 0
}
# test 44: rename tgt and blocking operations
test_44i() {
[ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
+ cancel_lru_locks mdc
touch $DIR1/$tfile-2
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK2 0x146
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000146
mv $DIR1/$tfile-2 $DIR1/$tfile &
- PID1=$!
- sleep 1
- $LFS mkdir -i 1 $DIR2/$tfile && error "remote mkdir must fail"
+ PID1=$! ; pdo_sched
+ $LFS mkdir -i 1 $DIR2/$tfile &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1;
error "remote mkdir isn't blocked"; }
+ wait $PID2 ; [ $? -ne 0 ] || error "remote mkdir must fail"
rm -rf $DIR/$tfile*
return 0
}
# test 45: rename src and blocking operations
test_45a() {
+ cancel_lru_locks mdc
touch $DIR1/$tfile
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
mv $DIR1/$tfile $DIR1/$tfile-2 &
- PID1=$!
- sleep 1
- mkdir $DIR2/$tfile || error "mkdir must succeed"
+ PID1=$! ; pdo_sched
+ mkdir $DIR2/$tfile &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "mkdir isn't blocked"; }
+ wait $PID2 ; [ $? -eq 0 ] || error "mkdir must succeed"
rm -rf $DIR/$tfile*
return 0
}
run_test 45a "pdirops: rename src vs mkdir =============="
test_45b() {
+ cancel_lru_locks mdc
touch $DIR1/$tfile
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
mv $DIR1/$tfile $DIR1/$tfile-2 &
- PID1=$!
- sleep 1
- $MULTIOP $DIR2/$tfile oO_CREAT:O_EXCL:c || error "create must succeed"
+ PID1=$! ; pdo_sched
+ $MULTIOP $DIR2/$tfile oO_CREAT:O_EXCL:c &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "create isn't blocked"; }
+ wait $PID2 ; [ $? -eq 0 ] || error "create must succeed"
rm -rf $DIR/$tfile*
return 0
}
run_test 45b "pdirops: rename src vs create =============="
test_45c() {
+ cancel_lru_locks mdc
touch $DIR1/$tfile
touch $DIR1/$tfile-3
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
mv $DIR1/$tfile $DIR1/$tfile-2 &
- PID1=$!
- sleep 1
- link $DIR2/$tfile-3 $DIR2/$tfile || error "link must succeed"
+ PID1=$! ; pdo_sched
+ link $DIR2/$tfile-3 $DIR2/$tfile &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "link isn't blocked"; }
+ wait $PID2 ; [ $? -eq 0 ] || error "link must succeed"
rm -rf $DIR/$tfile*
return 0
}
run_test 45c "pdirops: rename src vs link =============="
test_45d() {
+ cancel_lru_locks mdc
touch $DIR1/$tfile
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
mv $DIR1/$tfile $DIR1/$tfile-2 &
- PID1=$!
- sleep 1
- rm $DIR2/$tfile && error "unlink must fail"
+ PID1=$! ; pdo_sched
+ rm $DIR2/$tfile &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "unlink isn't blocked"; }
+ wait $PID2 ; [ $? -ne 0 ] || error "unlink must fail"
rm -rf $DIR/$tfile*
return 0
}
run_test 45d "pdirops: rename src vs unlink =============="
test_45e() {
+ cancel_lru_locks mdc
touch $DIR1/$tfile
touch $DIR1/$tfile-3
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
mv $DIR1/$tfile $DIR1/$tfile-2 &
- PID1=$!
- sleep 1
- mv $DIR2/$tfile-3 $DIR2/$tfile || error "rename must succeed"
+ PID1=$! ; pdo_sched
+ mv $DIR2/$tfile-3 $DIR2/$tfile &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "rename isn't blocked"; }
+ wait $PID2 ; [ $? -eq 0 ] || error "rename must succeed"
rm -rf $DIR/$tfile*
return 0
}
run_test 45e "pdirops: rename src and rename (tgt) =============="
test_45f() {
+ cancel_lru_locks mdc
touch $DIR1/$tfile
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
mv $DIR1/$tfile $DIR1/$tfile-2 &
- PID1=$!
- sleep 1
- mv $DIR2/$tfile $DIR2/$tfile-3 && error "rename must fail"
+ PID1=$! ; pdo_sched
+ mv $DIR2/$tfile $DIR2/$tfile-3 &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "rename isn't blocked"; }
+ wait $PID2 ; [ $? -ne 0 ] || error "rename must fail"
rm -rf $DIR/$tfile*
return 0
}
run_test 45f "pdirops: rename src and rename (src) =============="
test_45g() {
+ cancel_lru_locks mdc
touch $DIR1/$tfile
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
mv $DIR1/$tfile $DIR1/$tfile-2 &
- PID1=$!
- sleep 1
- stat $DIR2/$tfile > /dev/null && error "stat must fail"
+ PID1=$! ; pdo_sched
+ stat $DIR2/$tfile > /dev/null &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "getattr isn't blocked"; }
+ wait $PID2 ; [ $? -ne 0 ] || error "stat must fail"
rm -rf $DIR/$tfile*
return 0
}
run_test 45g "pdirops: rename src vs getattr =============="
test_45h() {
+ cancel_lru_locks mdc
touch $DIR1/$tfile
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
mv $DIR1/$tfile $DIR1/$tfile-2 &
- PID1=$!
- sleep 1
- ls -lia $DIR2/ > /dev/null
+ PID1=$! ; pdo_sched
+ ls -lia $DIR2/ > /dev/null &
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "readdir isn't blocked"; }
+ wait $PID2
rm -rf $DIR/$tfile*
return 0
}
test_45i() {
[ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
+ cancel_lru_locks mdc
touch $DIR1/$tfile
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
mv $DIR1/$tfile $DIR1/$tfile-2 &
- PID1=$!
- sleep 1
- $LFS mkdir -i 1 $DIR2/$tfile || error "create remote dir must succeed"
+ PID1=$! ; pdo_sched
+ $LFS mkdir -i 1 $DIR2/$tfile &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1;
error "create remote dir isn't blocked"; }
+ wait $PID2 ; [ $? -eq 0 ] || error "create remote dir must succeed"
rm -rf $DIR/$tfile*
return 0
}
# test 46: link and blocking operations
test_46a() {
+ cancel_lru_locks mdc
touch $DIR1/$tfile-2
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
link $DIR1/$tfile-2 $DIR1/$tfile &
- PID1=$!
- sleep 1
- mkdir $DIR2/$tfile && error "mkdir must fail"
+ PID1=$! ; pdo_sched
+ mkdir $DIR2/$tfile &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "mkdir isn't blocked"; }
+ wait $PID2 ; [ $? -ne 0 ] || error "mkdir must fail"
rm -rf $DIR/$tfile*
return 0
}
run_test 46a "pdirops: link vs mkdir =============="
test_46b() {
+ cancel_lru_locks mdc
touch $DIR1/$tfile-2
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
link $DIR1/$tfile-2 $DIR1/$tfile &
- PID1=$!
- sleep 1
- $MULTIOP $DIR2/$tfile oO_CREAT:O_EXCL:c && error "create must fail"
+ PID1=$! ; pdo_sched
+ $MULTIOP $DIR2/$tfile oO_CREAT:O_EXCL:c &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "create isn't blocked"; }
+ wait $PID2 ; [ $? -ne 0 ] || error "create must fail"
rm -rf $DIR/$tfile*
return 0
}
run_test 46b "pdirops: link vs create =============="
test_46c() {
+ cancel_lru_locks mdc
touch $DIR1/$tfile-2
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
link $DIR1/$tfile-2 $DIR1/$tfile &
- PID1=$!
- sleep 1
- link $DIR2/$tfile $DIR2/$tfile && error "link must fail"
+ PID1=$! ; pdo_sched
+ link $DIR2/$tfile $DIR2/$tfile &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "link isn't blocked"; }
+ wait $PID2 ; [ $? -ne 0 ] || error "link must fail"
rm -rf $DIR/$tfile*
return 0
}
run_test 46c "pdirops: link vs link =============="
test_46d() {
+ cancel_lru_locks mdc
touch $DIR1/$tfile-2
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
link $DIR1/$tfile-2 $DIR1/$tfile &
- PID1=$!
- sleep 1
- rm $DIR2/$tfile || error "unlink must succeed"
+ PID1=$! ; pdo_sched
+ rm $DIR2/$tfile &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "unlink isn't blocked"; }
+ wait $PID2 ; [ $? -eq 0 ] || error "unlink must succeed"
rm -rf $DIR/$tfile*
return 0
}
run_test 46d "pdirops: link vs unlink =============="
test_46e() {
+ cancel_lru_locks mdc
touch $DIR1/$tfile-2
touch $DIR1/$tfile-3
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
link $DIR1/$tfile-2 $DIR1/$tfile &
- PID1=$!
- sleep 1
- mv $DIR2/$tfile-3 $DIR2/$tfile || error "rename must succeed"
+ PID1=$! ; pdo_sched
+ mv $DIR2/$tfile-3 $DIR2/$tfile &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "rename isn't blocked"; }
+ wait $PID2 ; [ $? -eq 0 ] || error "rename must succeed"
rm -rf $DIR/$tfile*
return 0
}
run_test 46e "pdirops: link and rename (tgt) =============="
test_46f() {
+ cancel_lru_locks mdc
touch $DIR1/$tfile-2
touch $DIR1/$tfile-3
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
link $DIR1/$tfile-2 $DIR1/$tfile &
- PID1=$!
- sleep 1
- mv $DIR2/$tfile $DIR2/$tfile-3 || error "rename must succeed"
+ PID1=$! ; pdo_sched
+ mv $DIR2/$tfile $DIR2/$tfile-3 &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "rename isn't blocked"; }
+ wait $PID2 ; [ $? -eq 0 ] || error "rename must succeed"
rm -rf $DIR/$tfile*
return 0
}
run_test 46f "pdirops: link and rename (src) =============="
test_46g() {
+ cancel_lru_locks mdc
touch $DIR1/$tfile-2
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
link $DIR1/$tfile-2 $DIR1/$tfile &
- PID1=$!
- sleep 1
- stat $DIR2/$tfile > /dev/null || error "stat must succeed"
+ PID1=$! ; pdo_sched
+ stat $DIR2/$tfile > /dev/null &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "getattr isn't blocked"; }
+ wait $PID2 ; [ $? -eq 0 ] || error "stat must succeed"
rm -rf $DIR/$tfile*
return 0
}
run_test 46g "pdirops: link vs getattr =============="
test_46h() {
+ cancel_lru_locks mdc
touch $DIR1/$tfile-2
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
link $DIR1/$tfile-2 $DIR1/$tfile &
- PID1=$!
- sleep 1
- ls -lia $DIR2/ > /dev/null
- check_pdo_conflict $PID1 && { wait $PID1;
- error "readdir isn't blocked"; }
+ PID1=$! ; pdo_sched
+ ls -lia $DIR2/ > /dev/null &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
+ check_pdo_conflict $PID1 && { wait $PID1; error "readdir isn't blocked"; }
+ wait $PID2
rm -rf $DIR/$tfile*
return 0
}
test_46i() {
[ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
+ cancel_lru_locks mdc
touch $DIR1/$tfile-2
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
link $DIR1/$tfile-2 $DIR1/$tfile &
- PID1=$!
- sleep 1
- $LFS mkdir -i 1 $DIR2/$tfile && error "remote mkdir must fail"
+ PID1=$! ; pdo_sched
+ $LFS mkdir -i 1 $DIR2/$tfile &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1;
error "remote mkdir isn't blocked"; }
+ wait $PID2 ; [ $? -ne 0 ] || error "remote mkdir must fail"
rm -rf $DIR/$tfile*
return 0
}
# test 47: remote mkdir and blocking operations
test_47a() {
+ cancel_lru_locks mdc
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
[ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
+ cancel_lru_locks mdc
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
$LFS mkdir -i 1 $DIR1/$tfile &
- PID1=$!
- sleep 1
- mkdir $DIR2/$tfile && error "mkdir must fail"
+ PID1=$! ; pdo_sched
+ mkdir $DIR2/$tfile &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "mkdir isn't blocked"; }
+ wait $PID2 ; [ $? -ne 0 ] || error "mkdir must fail"
rm -rf $DIR/$tfile*
return 0
}
test_47b() {
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
[ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
+ cancel_lru_locks mdc
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
$LFS mkdir -i 1 $DIR1/$tfile &
- PID1=$!
- sleep 1
- multiop $DIR2/$tfile oO_CREAT:O_EXCL:c && error "create must fail"
+ PID1=$! ; pdo_sched
+ sleep 1 # please do not remove this sleep, see LU-10754
+ multiop $DIR2/$tfile oO_CREAT:O_EXCL:c &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1;
error "create isn't blocked"; }
+ wait $PID2 ; [ $? -ne 0 ] || error "create must fail"
rm -rf $DIR/$tfile*
return 0
}
test_47c() {
[ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
+ cancel_lru_locks mdc
touch $DIR1/$tfile-2
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
$LFS mkdir -i 1 $DIR1/$tfile &
- PID1=$!
- sleep 1
- link $DIR2/$tfile-2 $DIR2/$tfile && error "link must fail"
+ PID1=$! ; pdo_sched
+ link $DIR2/$tfile-2 $DIR2/$tfile &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1; error "link isn't blocked"; }
+ wait $PID2 ; [ $? -ne 0 ] || error "link must fail"
rm -rf $DIR/$tfile*
return 0
}
test_47d() {
[ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
+ cancel_lru_locks mdc
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
$LFS mkdir -i 1 $DIR1/$tfile &
- PID1=$!
- sleep 1
- rmdir $DIR2/$tfile || error "unlink must succeed"
+ PID1=$! ; pdo_sched
+ rmdir $DIR2/$tfile &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1;
error "unlink isn't blocked"; }
+ wait $PID2 ; [ $? -eq 0 ] || error "rmdir must succeed"
rm -rf $DIR/$tfile*
return 0
}
test_47e() {
[ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
+ cancel_lru_locks mdc
touch $DIR1/$tfile-2
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
$LFS mkdir -i 1 $DIR1/$tfile &
- PID1=$!
- sleep 1
- mv -T $DIR2/$tfile-2 $DIR2/$tfile && error "rename must fail"
+ PID1=$! ; pdo_sched
+ mv -T $DIR2/$tfile-2 $DIR2/$tfile &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1;
error "rename isn't blocked"; }
+ wait $PID2 ; [ $? -ne 0 ] || error "rename must fail"
rm -rf $DIR/$tfile*
return 0
}
test_47f() {
[ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
+ cancel_lru_locks mdc
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
$LFS mkdir -i 1 $DIR1/$tfile &
- PID1=$!
- sleep 1
- mv $DIR2/$tfile $DIR2/$tfile-2 || error "rename must succeed"
+ PID1=$! ; pdo_sched
+ mv $DIR2/$tfile $DIR2/$tfile-2 &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1;
error "rename isn't blocked"; }
+ wait $PID2 ; [ $? -eq 0 ] || error "rename must succeed"
rm -rf $DIR/$tfile*
return 0
}
[ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
sync
sync_all_data
+ cancel_lru_locks mdc
#define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK 0x145
do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
$LFS mkdir -i 1 $DIR1/$tfile &
- PID1=$!
- sleep 2
- stat $DIR2/$tfile > /dev/null || error "stat must succeed"
+ PID1=$! ; pdo_sched
+ stat $DIR2/$tfile > /dev/null &
+ PID2=$! ; pdo_sched
+ do_facet $SINGLEMDS lctl set_param fail_loc=0
check_pdo_conflict $PID1 && { wait $PID1;
error "getattr isn't blocked"; }
+ wait $PID2 ; [ $? -eq 0 ] || error "stat must succeed"
rm -rf $DIR/$tfile*
return 0
}