-test_134() {
- local file1
- local pid1
- local pid2
- local i
-
- [ $OSTCOUNT -lt 2 ] && skip "needs >= 2 OSTs" && return 0
- [[ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.8.59) ]] &&
- skip "Need MDS version at least 2.8.59" && return
-
- test_mkdir -p $DIR/$tdir
- file1="$DIR/$tdir/file1"
- file2="$DIR/$tdir/file2"
-
-#define OBD_FAIL_MDS_OSP_PRECREATE_WAIT 0x164
- # reserve stripe on ost1, block on ost2
- do_facet $SINGLEMDS \
- "lctl set_param fail_loc=0x80000164 fail_val=1"
- $SETSTRIPE -c 2 -o 0,1 $file1 &
- pid1=$!
- sleep 1
-
- # initiate recovery with orphan cleanup on ost1
- facet_failover ost1
-
- # when OST1 recovery is over, the first setstripe should still
- # have the object reserved, but that should not block new creates
- # on OST1
- $SETSTRIPE -c 1 -o 0 $file2 &
- pid2=$!
- for ((i=0;i<$((TIMEOUT/2));i++)); do
- if ! stat /proc/$pid2 >&/dev/null; then
- echo "DONE!"
- break
- fi
- echo "WAITING ..."
- sleep 1
- done
- if let "i >= (TIMEOUT/2)"; then
- error "create seem to get blocked by recovery"
- fi
- wait $pid1
- wait $pid2
- return 0
-}
-run_test 134 "MDT<>OST recovery don't block multistripe file creation"
-