5 MOUNT_2=${MOUNT_2:-"yes"}
7 LUSTRE=${LUSTRE:-$(dirname $0)/..}
8 . $LUSTRE/tests/test-framework.sh
12 remote_mds_nodsh && log "SKIP: remote MDS with nodsh" && exit 0
14 ALWAYS_EXCEPT=" $REPLAY_VBR_EXCEPT"
17 [ "$SLOW" = "no" ] && EXCEPT_SLOW="7 "
21 check_and_setup_lustre
24 rm -rf $DIR/[df][0-9]*
26 [ "$DAEMONFILE" ] && $LCTL debug_daemon start $DAEMONFILE $DAEMONSIZE
28 # if there is no CLIENT1 defined, some tests can be ran on localhost
29 CLIENT1=${CLIENT1:-$HOSTNAME}
30 # if CLIENT2 doesn't exist then use CLIENT1 instead
31 # All tests should use CLIENT2 with MOUNT2 only therefore it will work if
33 # Exception is the test which need two separate nodes
34 CLIENT2=${CLIENT2:-$CLIENT1}
36 is_mounted $MOUNT2 || error "MOUNT2 is not mounted"
39 # get_version(): Gets the version of an object on servers
40 # Parameter1: Client/Machine Name
41 # Parameter2: File Path
42 # Returns: Objectversion Or -1 if getobjversion fails.
45 local var=${SINGLEMDS}_svc
48 local fid=$(do_node $client $LFS path2fid $file)
49 local objver=$(do_facet $SINGLEMDS $LCTL --device ${!var} \
50 getobjversion \\\"$fid\\\")
52 [[ -z $objver ]] && objver=-1
57 # chk_get_version(): Wrapper to get_version().
58 # Parameter1: Client/Machine Name
59 # Parameter2: File Path
60 # Returns: Objectversion Or Exit with error in case objver is -1.
63 local objver=$(get_version $1 $2)
65 [[ "$objver" == "-1" ]] && error "object version is empty."
71 cos_param_file=$TMP/rvbr-cos-params
72 save_lustre_params $(get_facets MDS) "mdt.*.commit_on_sharing" > $cos_param_file
74 # new sequence needed for MDS < v2_15_61-226-gf00d2467fc
75 if (( $MDS1_VERSION < $(version_code 2.15.61.226) )); then
80 local ver=$(get_version $CLIENT1 $DIR/$tdir/1a)
82 [[ "$ver" == "-1" ]] && return 0
85 run_test 0a "getversion for non existent file shouldn't cause kernel panic"
88 local var=${SINGLEMDS}_svc
90 local file=$DIR/$tdir/f
92 mkdir_on_mdt0 $DIR/$tdir
94 fid=$($LFS path2fid $file)
96 do_facet $SINGLEMDS $LCTL --device ${!var} getobjversion \\\"$fid\\\" || true
98 run_test 0b "getversion for non existent fid shouldn't cause kernel panic"
101 test_1a() { # former test_0a
102 local file=$DIR/$tfile
106 do_node $CLIENT1 mcreate $file
107 pre=$(chk_get_version $CLIENT1 $file)
108 do_node $CLIENT1 openfile -f O_RDWR $file
109 post=$(chk_get_version $CLIENT1 $file)
110 if (($pre != $post)); then
111 error "version changed unexpectedly: pre $pre, post $post"
114 run_test 1a "open and close do not change versions"
116 test_1b() { # former test_0b
117 local var=${SINGLEMDS}_svc
118 zconf_mount $CLIENT2 $MOUNT2
120 do_facet $SINGLEMDS "$LCTL set_param mdd.${!var}.sync_permission=0"
121 do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
122 mkdir_on_mdt0 $MOUNT/$tdir
124 replay_barrier $SINGLEMDS
125 do_node $CLIENT2 chmod 777 $MOUNT2/$tdir
126 openfile -f O_RDWR:O_CREAT $MOUNT/$tdir/$tfile
127 zconf_umount $CLIENT2 $MOUNT2
128 facet_failover $SINGLEMDS
130 client_evicted $CLIENT1 || error "$CLIENT1 not evicted"
131 if ! $CHECKSTAT -a $DIR/$tdir/$tfile; then
132 error_and_remount "open succeeded unexpectedly"
135 run_test 1b "open (O_CREAT) checks version of parent"
137 test_1c() { # former test_0c
138 local var=${SINGLEMDS}_svc
139 zconf_mount $CLIENT2 $MOUNT2
141 do_facet $SINGLEMDS "$LCTL set_param mdd.${!var}.sync_permission=0"
142 do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
144 mkdir_on_mdt0 $DIR/$tdir
146 openfile -f O_RDWR:O_CREAT -m 0644 $DIR/$tdir/$tfile
148 replay_barrier $SINGLEMDS
149 do_node $CLIENT2 chmod 0777 $MOUNT2/$tdir
150 do_node $CLIENT2 chmod 0666 $MOUNT2/$tdir/$tfile
151 rmultiop_start $CLIENT1 $DIR/$tdir/$tfile o_c
152 zconf_umount $CLIENT2 $MOUNT2
153 facet_failover $SINGLEMDS
155 client_up $CLIENT1 || error "$CLIENT1 evicted"
156 rmultiop_stop $CLIENT1 || error "close failed"
158 run_test 1c "open (non O_CREAT) does not checks versions"
160 # test set #2: CREAT (not open)
161 # - version of parent is not changed but checked
162 # - pre-version should be -1
163 # - post-version should be valid
164 test_2a() { # extended former test_0d
169 pre=$(chk_get_version $CLIENT1 $DIR)
170 do_node $CLIENT1 mkfifo $DIR/$tfile-fifo
171 post=$(chk_get_version $CLIENT1 $DIR)
172 if (($pre != $post)); then
173 error "version was changed: pre $pre, post $post"
176 pre=$(chk_get_version $CLIENT1 $DIR)
177 mkdir_on_mdt0 $DIR/$tfile-dir
178 post=$(chk_get_version $CLIENT1 $DIR)
179 if (($pre != $post)); then
180 error "version was changed: pre $pre, post $post"
182 rmdir $DIR/$tfile-dir
185 pre=$(chk_get_version $CLIENT1 $DIR)
186 mkfifo $DIR/$tfile-nod
187 post=$(chk_get_version $CLIENT1 $DIR)
188 if (($pre != $post)); then
189 error "version was changed: pre $pre, post $post"
192 pre=$(chk_get_version $CLIENT1 $DIR)
193 mkfifo $DIR/$tfile-symlink
194 post=$(chk_get_version $CLIENT1 $DIR)
195 if (($pre != $post)); then
196 error "version was changed: pre $pre, post $post"
199 if [ $MDSCOUNT -ge 2 ]; then
202 pre=$(chk_get_version $CLIENT1 $DIR)
203 $LFS mkdir -i $MDT_IDX $DIR/$tfile-remote_dir
204 post=$(chk_get_version $CLIENT1 $DIR)
205 if (($pre != $post)); then
206 error "version was changed: pre $pre, post $post"
211 run_test 2a "create operations doesn't change version of parent"
213 test_2b() { # former test_0e
214 local var=${SINGLEMDS}_svc
215 zconf_mount $CLIENT2 $MOUNT2
217 do_facet $SINGLEMDS "$LCTL set_param mdd.${!var}.sync_permission=0"
218 do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
220 mkdir_on_mdt0 $MOUNT/$tdir
222 replay_barrier $SINGLEMDS
223 do_node $CLIENT2 chmod 777 $MOUNT2/$tdir
224 mkfifo $DIR/$tdir/$tfile
225 zconf_umount $CLIENT2 $MOUNT2
226 facet_failover $SINGLEMDS
228 client_evicted $CLIENT1 || error "$CLIENT1 not evicted"
229 if ! $CHECKSTAT -a $DIR/$tdir/$tfile; then
230 error_and_remount "create succeeded unexpectedly"
233 run_test 2b "create checks version of parent"
235 test_3a() { # former test_0f
239 do_node $CLIENT1 mcreate $DIR/$tfile
240 pre=$(chk_get_version $CLIENT1 $DIR)
241 do_node $CLIENT1 rm $DIR/$tfile
242 post=$(chk_get_version $CLIENT1 $DIR)
243 if (($pre != $post)); then
244 error "version was changed: pre $pre, post $post"
247 if [ $MDSCOUNT -ge 2 ]; then
250 do_node $CLIENT1 $LFS mkdir -i $MDT_IDX $DIR/$tfile-remote_dir
251 pre=$(chk_get_version $CLIENT1 $DIR)
252 do_node $CLIENT1 rmdir $DIR/$tfile-remote_dir
253 post=$(chk_get_version $CLIENT1 $DIR)
254 if (($pre != $post)); then
255 error "version was changed: pre $pre, post $post"
259 run_test 3a "unlink doesn't change version of parent"
261 test_3b() { # former test_0g
262 local var=${SINGLEMDS}_svc
263 zconf_mount $CLIENT2 $MOUNT2
265 do_facet $SINGLEMDS "$LCTL set_param mdd.${!var}.sync_permission=0"
266 do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
268 mkdir_on_mdt0 $MOUNT/$tdir
269 mcreate $DIR/$tdir/$tfile
271 replay_barrier $SINGLEMDS
272 do_node $CLIENT2 chmod 777 $MOUNT2/$tdir
274 zconf_umount $CLIENT2 $MOUNT2
275 facet_failover $SINGLEMDS
277 client_evicted $CLIENT1 || error "$CLIENT1 not evicted"
278 if $CHECKSTAT -a $DIR/$tdir/$tfile; then
279 error_and_remount "unlink succeeded unexpectedly"
282 run_test 3b "unlink checks version of parent"
284 test_4a() { # former test_0h
285 local file=$DIR/$tfile
289 do_node $CLIENT1 mcreate $file
290 pre=$(chk_get_version $CLIENT1 $file)
291 do_node $CLIENT1 chown $RUNAS_ID:$RUNAS_GID $file
292 post=$(chk_get_version $CLIENT1 $file)
293 if (($pre == $post)); then
294 error "version not changed: pre $pre, post $post"
297 run_test 4a "setattr of UID changes versions"
299 test_4b() { # former test_0i
300 local file=$DIR/$tfile
304 do_node $CLIENT1 mcreate $file
305 pre=$(chk_get_version $CLIENT1 $file)
306 do_node $CLIENT1 chgrp $RUNAS_GID $file
307 post=$(chk_get_version $CLIENT1 $file)
308 if (($pre == $post)); then
309 error "version not changed: pre $pre, post $post"
312 run_test 4b "setattr of GID changes versions"
314 test_4c() { # former test_0j
315 local file=$DIR/$tfile
316 local var=${SINGLEMDS}_svc
317 zconf_mount $CLIENT2 $MOUNT2
319 do_facet $SINGLEMDS "$LCTL set_param mdd.${!var}.sync_permission=0"
320 do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
322 do_node $CLIENT1 mcreate $file
324 replay_barrier $SINGLEMDS
325 do_node $CLIENT2 chgrp $RUNAS_GID $MOUNT2/$tfile
326 do_node $CLIENT1 chown $RUNAS_ID:$RUNAS_GID $file
327 zconf_umount $CLIENT2 $MOUNT2
328 facet_failover $SINGLEMDS
330 client_evicted $CLIENT1 || error "$CLIENT1 not evicted"
331 if ! do_node $CLIENT1 $CHECKSTAT -u \\\#$UID $file; then
332 error_and_remount "setattr of UID succeeded unexpectedly"
335 run_test 4c "setattr of UID checks versions"
337 test_4d() { # former test_0k
338 local file=$DIR/$tfile
339 local var=${SINGLEMDS}_svc
340 zconf_mount $CLIENT2 $MOUNT2
342 do_facet $SINGLEMDS "$LCTL set_param mdd.${!var}.sync_permission=0"
343 do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
345 do_node $CLIENT1 mcreate $file
347 replay_barrier $SINGLEMDS
348 do_node $CLIENT2 chown $RUNAS_ID:$RUNAS_GID $MOUNT2/$tfile
349 do_node $CLIENT1 chgrp $RUNAS_GID $file
350 zconf_umount $CLIENT2 $MOUNT2
351 facet_failover $SINGLEMDS
353 client_evicted $CLIENT1 || error "$CLIENT1 not evicted"
354 if ! do_node $CLIENT1 $CHECKSTAT -g \\\#$UID $file; then
355 error_and_remount "setattr of GID succeeded unexpectedly"
358 run_test 4d "setattr of GID checks versions"
360 test_4e() { # former test_0l
361 local file=$DIR/$tfile
365 do_node $CLIENT1 openfile -f O_RDWR:O_CREAT -m 0644 $file
366 pre=$(chk_get_version $CLIENT1 $file)
367 do_node $CLIENT1 chmod 666 $file
368 post=$(chk_get_version $CLIENT1 $file)
369 if (($pre == $post)); then
370 error "version not changed: pre $pre, post $post"
373 run_test 4e "setattr of permission changes versions"
375 test_4f() { # former test_0m
376 local file=$DIR/$tfile
377 local var=${SINGLEMDS}_svc
378 zconf_mount $CLIENT2 $MOUNT2
380 do_facet $SINGLEMDS "$LCTL set_param mdd.${!var}.sync_permission=0"
381 do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
383 do_node $CLIENT1 openfile -f O_RDWR:O_CREAT -m 0644 $file
385 replay_barrier $SINGLEMDS
386 do_node $CLIENT2 chgrp $RUNAS_GID $MOUNT2/$tfile
387 do_node $CLIENT1 chmod 666 $file
388 zconf_umount $CLIENT2 $MOUNT2
389 facet_failover $SINGLEMDS
391 client_evicted $CLIENT1 || error "$CLIENT1 not evicted"
392 if ! do_node $CLIENT1 $CHECKSTAT -p 0644 $file; then
393 error_and_remount "setattr of permission succeeded unexpectedly"
396 run_test 4f "setattr of permission checks versions"
398 test_4g() { # former test_0n
399 local file=$DIR/$tfile
403 do_node $CLIENT1 mcreate $file
404 pre=$(chk_get_version $CLIENT1 $file)
405 do_node $CLIENT1 chattr +i $file
406 post=$(chk_get_version $CLIENT1 $file)
407 do_node $CLIENT1 chattr -i $file
408 if (($pre == $post)); then
409 error "version not changed: pre $pre, post $post"
412 run_test 4g "setattr of flags changes versions"
420 if ((${#attr} != 1)); then
421 error "checking multiple attributes not implemented yet"
423 do_node $client lsattr $file | cut -d ' ' -f 1 | grep -q $attr
426 test_4h() { # former test_0o
427 local file=$DIR/$tfile
429 local var=${SINGLEMDS}_svc
430 zconf_mount $CLIENT2 $MOUNT2
432 do_facet $SINGLEMDS "$LCTL set_param mdd.${!var}.sync_permission=0"
433 do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
435 do_node $CLIENT1 openfile -f O_RDWR:O_CREAT -m 0644 $file
437 replay_barrier $SINGLEMDS
438 do_node $CLIENT2 chmod 666 $MOUNT2/$tfile
439 do_node $CLIENT1 chattr +i $file
440 zconf_umount $CLIENT2 $MOUNT2
441 facet_failover $SINGLEMDS
443 client_evicted $CLIENT1 || error "$CLIENT1 not evicted"
444 checkattr $CLIENT1 i $file
446 do_node $CLIENT1 chattr -i $file
447 if [ $rc -eq 0 ]; then
448 error "setattr of flags succeeded unexpectedly"
451 run_test 4h "setattr of flags checks versions"
453 test_4i() { # former test_0p
454 local file=$DIR/$tfile
458 local var=${SINGLEMDS}_svc
460 ad_orig=$(do_facet $SINGLEMDS "$LCTL get_param mdd.${!var}.atime_diff")
461 do_facet $SINGLEMDS "$LCTL set_param mdd.${!var}.atime_diff=0"
462 do_node $CLIENT1 mcreate $file
463 pre=$(chk_get_version $CLIENT1 $file)
464 do_node $CLIENT1 touch $file
465 post=$(chk_get_version $CLIENT1 $file)
467 # We don't fail MDS in this test. atime_diff shall be
468 # restored to its original value.
470 do_facet $SINGLEMDS "$LCTL set_param $ad_orig"
471 if (($pre != $post)); then
472 error "version changed unexpectedly: pre $pre, post $post"
475 run_test 4i "setattr of times does not change versions"
477 test_4j() { # former test_0q
478 local file=$DIR/$tfile
482 do_node $CLIENT1 mcreate $file
483 pre=$(chk_get_version $CLIENT1 $file)
484 do_node $CLIENT1 $TRUNCATE $file 1
485 post=$(chk_get_version $CLIENT1 $file)
486 if (($pre != $post)); then
487 error "version changed unexpectedly: pre $pre, post $post"
490 run_test 4j "setattr of size does not change versions"
492 test_4k() { # former test_0r
493 local file=$DIR/$tfile
497 local var=${SINGLEMDS}_svc
498 zconf_mount $CLIENT2 $MOUNT2
500 do_facet $SINGLEMDS "$LCTL set_param mdd.${!var}.sync_permission=0"
501 do_facet $SINGLEMDS "$LCTL set_param mdd.${!var}.atime_diff=0"
502 do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
504 do_node $CLIENT1 openfile -f O_RDWR:O_CREAT -m 0644 $file
506 replay_barrier $SINGLEMDS
507 do_node $CLIENT2 chmod 666 $MOUNT2/$tfile
508 do_node $CLIENT1 $TRUNCATE $file 1
510 mtime_pre=$(do_node $CLIENT1 stat --format=%Y $file)
511 do_node $CLIENT1 touch $file
512 sleep 1 # avoid stat caching
513 mtime_post=$(do_node $CLIENT1 stat --format=%Y $file)
514 zconf_umount $CLIENT2 $MOUNT2
515 facet_failover $SINGLEMDS
517 client_up $CLIENT1 || error "$CLIENT1 evicted"
518 if (($mtime_pre >= $mtime_post)); then
519 error "time not changed: pre $mtime_pre, post $mtime_post"
521 if ! do_node $CLIENT1 $CHECKSTAT -s 1 $file; then
522 error_and_remount "setattr of size failed"
524 mtime=$(do_node $CLIENT1 stat --format=%Y $file)
525 if (($mtime != $mtime_post)); then
526 error "setattr of times failed: expected $mtime_post, got $mtime"
529 run_test 4k "setattr of times and size does not check versions"
531 test_5a() { # former test_0s
538 mkdir_on_mdt0 $DIR/$tdir
539 pre=$(chk_get_version $CLIENT1 $DIR/$tfile)
540 tp_pre=$(chk_get_version $CLIENT1 $DIR/$tdir)
541 link $DIR/$tfile $DIR/$tdir/$tfile
542 post=$(chk_get_version $CLIENT1 $DIR/$tfile)
543 tp_post=$(chk_get_version $CLIENT1 $DIR/$tdir)
544 if (($pre == $post)); then
545 error "version of source not changed: pre $pre, post $post"
547 if (($tp_pre != $tp_post)); then
548 error "version of target parent was changed:"\
549 "pre $tp_pre, post $tp_post"
552 run_test 5a "link changes versions of source but not target parent"
554 test_5b() { # former test_0t
555 local var=${SINGLEMDS}_svc
556 zconf_mount $CLIENT2 $MOUNT2
558 do_facet $SINGLEMDS "$LCTL set_param mdd.${!var}.sync_permission=0"
559 do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
562 mkdir_on_mdt0 $MOUNT/$tdir
564 replay_barrier $SINGLEMDS
565 do_node $CLIENT2 chmod 777 $MOUNT2/$tdir
566 link $DIR/$tfile $DIR/$tdir/$tfile
567 zconf_umount $CLIENT2 $MOUNT2
568 facet_failover $SINGLEMDS
570 client_evicted $CLIENT1 || error "$CLIENT1 not evicted"
571 if ! $CHECKSTAT -a $DIR/$tdir/$tfile; then
572 error_and_remount "link should fail"
575 run_test 5b "link checks version of target parent"
577 test_5c() { # former test_0u
578 local var=${SINGLEMDS}_svc
579 zconf_mount $CLIENT2 $MOUNT2
581 do_facet $SINGLEMDS "$LCTL set_param mdd.${!var}.sync_permission=0"
582 do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
584 openfile -f O_RDWR:O_CREAT -m 0644 $DIR/$tfile
585 mkdir_on_mdt0 $MOUNT/$tdir
587 replay_barrier $SINGLEMDS
588 do_node $CLIENT2 chmod 666 $MOUNT2/$tfile
589 link $DIR/$tfile $DIR/$tdir/$tfile
590 zconf_umount $CLIENT2 $MOUNT2
591 facet_failover $SINGLEMDS
593 client_evicted $CLIENT1 || error "$CLIENT1 not evicted"
594 if ! $CHECKSTAT -a $DIR/$tdir/$tfile; then
595 error_and_remount "link should fail"
598 run_test 5c "link checks version of source"
600 test_6a() { # former test_0v
607 mkdir_on_mdt0 $MOUNT/$tdir
608 sp_pre=$(chk_get_version $CLIENT1 $DIR)
609 tp_pre=$(chk_get_version $CLIENT1 $DIR/$tdir)
610 do_node $CLIENT1 mv $DIR/$tfile $DIR/$tdir/$tfile
611 sp_post=$(chk_get_version $CLIENT1 $DIR)
612 tp_post=$(chk_get_version $CLIENT1 $DIR/$tdir)
613 if (($sp_pre != $sp_post)); then
614 error "version of source parent was changed:" \
615 "pre $sp_pre, post $sp_post"
617 if (($tp_pre != $tp_post)); then
618 error "version of target parent was changed:" \
619 "pre $tp_pre, post $tp_post"
622 run_test 6a "rename doesn't change versions of source parent and target parent"
624 test_6b() { # former test_0w
628 do_node $CLIENT1 mcreate $DIR/$tfile
629 pre=$(chk_get_version $CLIENT1 $DIR)
630 do_node $CLIENT1 mv $DIR/$tfile $DIR/$tfile-new
631 post=$(chk_get_version $CLIENT1 $DIR)
632 if (($pre != $post)); then
633 error "version of parent was changed: pre $pre, post $post"
636 run_test 6b "rename within same dir doesn't change version of parent"
638 test_6c() { # former test_0x
639 local var=${SINGLEMDS}_svc
640 zconf_mount $CLIENT2 $MOUNT2
642 do_facet $SINGLEMDS "$LCTL set_param mdd.${!var}.sync_permission=0"
643 do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
646 mkdir_on_mdt0 $MOUNT/$tdir
648 replay_barrier $SINGLEMDS
649 do_node $CLIENT2 chmod 777 $MOUNT2
650 mv $DIR/$tfile $DIR/$tdir/$tfile
651 zconf_umount $CLIENT2 $MOUNT2
652 facet_failover $SINGLEMDS
654 client_evicted $CLIENT1 || error "$CLIENT1 not evicted"
655 if $CHECKSTAT -a $DIR/$tfile; then
656 error_and_remount "rename should fail"
659 run_test 6c "rename checks version of source parent"
661 test_6d() { # former test_0y
662 local var=${SINGLEMDS}_svc
663 zconf_mount $CLIENT2 $MOUNT2
665 do_facet $SINGLEMDS "$LCTL set_param mdd.${!var}.sync_permission=0"
666 do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
669 mkdir_on_mdt0 $MOUNT/$tdir
671 replay_barrier $SINGLEMDS
672 do_node $CLIENT2 chmod 777 $MOUNT2/$tdir
673 mv $DIR/$tfile $DIR/$tdir/$tfile
674 zconf_umount $CLIENT2 $MOUNT2
675 facet_failover $SINGLEMDS
677 client_evicted $CLIENT1 || error "$CLIENT1 not evicted"
678 if $CHECKSTAT -a $DIR/$tfile; then
679 error_and_remount "rename should fail"
682 run_test 6d "rename checks version of target parent"
684 # pdirops tests, bug 18143
691 local var=${SINGLEMDS}_svc
692 zconf_mount $CLIENT2 $MOUNT2
694 local cname=$TESTNAME.$cycle
696 echo "start cycle: $cname"
697 do_facet $SINGLEMDS "$LCTL set_param mdd.${!var}.sync_permission=0"
698 do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
700 mkdir_on_mdt0 $MOUNT/$tdir
701 replay_barrier $SINGLEMDS
703 echo "$cname first: $first"
704 do_node $CLIENT1 $first || error "$cname: Cannot do first operation"
705 # client2 operations that will be lost
706 echo "$cname lost: $lost"
707 do_node $CLIENT2 $lost || error "$cname: Cannot do 'lost' operations"
709 echo "$cname last: $last"
710 $last || error "$cname: Cannot do last operation"
711 zconf_umount $CLIENT2 $MOUNT2
712 facet_failover $SINGLEMDS
713 # should fail as conflict expected
714 client_evicted $CLIENT1 || rc=1
716 wait_recovery_complete $SINGLEMDS
717 wait_mds_ost_sync || error "wait_mds_ost_sync failed"
724 first="createmany -o $DIR/$tdir/$tfile- 1"
725 lost="rm $MOUNT2/$tdir/$tfile-0"
726 last="createmany -o $DIR/$tdir/$tfile- 1"
727 test_7_cycle "$first" "$lost" "$last" || error "Test 7a.1 failed"
729 first="createmany -o $DIR/$tdir/$tfile- 1"
730 lost="rm $MOUNT2/$tdir/$tfile-0"
731 last="mkdir $DIR/$tdir/$tfile-0"
732 test_7_cycle "$first" "$lost" "$last" || error "Test 7a.2 failed"
734 first="mkdir $DIR/$tdir/$tfile-0"
735 lost="mv $MOUNT2/$tdir/$tfile-0 $MOUNT2/$tdir/$tfile-1"
736 last="createmany -o $DIR/$tdir/$tfile- 1"
737 test_7_cycle "$first" "$lost" "$last" || error "Test 7a.3 failed"
740 run_test 7a "create, {lost}, create"
743 first="createmany -o $DIR/$tdir/$tfile- 1"
744 lost="rm $MOUNT2/$tdir/$tfile-0; createmany -o $MOUNT2/$tdir/$tfile- 1"
745 last="rm $DIR/$tdir/$tfile-0"
746 test_7_cycle "$first" "$lost" "$last" || error "Test 7b.1 failed"
748 first="createmany -o $DIR/$tdir/$tfile- 1"
749 lost="touch $MOUNT2/$tdir/$tfile; mv $MOUNT2/$tdir/$tfile $MOUNT2/$tdir/$tfile-0"
750 last="rm $DIR/$tdir/$tfile-0"
751 test_7_cycle "$first" "$lost" "$last" || error "Test 7b.2 failed"
753 first="createmany -o $DIR/$tdir/$tfile- 1"
754 lost="rm $MOUNT2/$tdir/$tfile-0; mkdir $MOUNT2/$tdir/$tfile-0"
755 last="rmdir $DIR/$tdir/$tfile-0"
756 test_7_cycle "$first" "$lost" "$last" || error "Test 7b.3 failed"
759 run_test 7b "create, {lost}, unlink"
762 first="createmany -o $DIR/$tdir/$tfile- 1"
763 lost="rm $MOUNT2/$tdir/$tfile-0; createmany -o $MOUNT2/$tdir/$tfile- 1"
764 last="mv $DIR/$tdir/$tfile-0 $DIR/$tdir/$tfile"
765 test_7_cycle "$first" "$lost" "$last" || error "Test 7c.1 failed"
767 first="createmany -o $DIR/$tdir/$tfile- 2"
768 lost="rm $MOUNT2/$tdir/$tfile-0; mkdir $MOUNT2/$tdir/$tfile-0"
769 last="mv $DIR/$tdir/$tfile-1 $DIR/$tdir/$tfile-0"
770 test_7_cycle "$first" "$lost" "$last" || error "Test 7c.2 failed"
772 first="createmany -o $DIR/$tdir/$tfile- 1; mkdir $DIR/$tdir/$tfile-1-0"
773 lost="rmdir $MOUNT2/$tdir/$tfile-1-0; createmany -o $MOUNT2/$tdir/$tfile-1- 1"
774 last="mv $DIR/$tdir/$tfile-1-0 $DIR/$tdir/$tfile-0"
775 test_7_cycle "$first" "$lost" "$last" || error "Test 7c.3 failed"
777 first="createmany -o $DIR/$tdir/$tfile- 1"
778 lost="mv $MOUNT2/$tdir/$tfile-0 $MOUNT2/$tdir/$tfile"
779 last="mv $DIR/$tdir/$tfile $DIR/$tdir/$tfile-0"
780 test_7_cycle "$first" "$lost" "$last" || error "Test 7c.4 failed"
783 run_test 7c "create, {lost}, rename"
786 first="createmany -o $DIR/$tdir/$tfile- 1; rm $DIR/$tdir/$tfile-0"
787 lost="createmany -o $MOUNT2/$tdir/$tfile- 1; rm $MOUNT2/$tdir/$tfile-0"
788 last="createmany -o $DIR/$tdir/$tfile- 1"
789 test_7_cycle "$first" "$lost" "$last" && error "Test 7d.1 failed"
791 first="createmany -o $DIR/$tdir/$tfile- 1; rm $DIR/$tdir/$tfile-0"
792 lost="mkdir $MOUNT2/$tdir/$tfile-0; rmdir $MOUNT2/$tdir/$tfile-0"
793 last="mkdir $DIR/$tdir/$tfile-0"
794 test_7_cycle "$first" "$lost" "$last" && error "Test 7d.2 failed"
796 first="mkdir $DIR/$tdir/$tfile-0; rmdir $DIR/$tdir/$tfile-0"
797 lost="createmany -o $MOUNT2/$tdir/$tfile- 1; mv $MOUNT2/$tdir/$tfile-0 $MOUNT2/$tdir/$tfile-1"
798 last="createmany -o $DIR/$tdir/$tfile- 1"
799 test_7_cycle "$first" "$lost" "$last" && error "Test 7d.3 failed"
802 run_test 7d "unlink, {lost}, create"
805 first="createmany -o $DIR/$tdir/$tfile- 1; rm $DIR/$tdir/$tfile-0"
806 lost="createmany -o $MOUNT2/$tdir/$tfile- 1; rm $MOUNT2/$tdir/$tfile-0;createmany -o $MOUNT2/$tdir/$tfile- 1"
807 last="rm $DIR/$tdir/$tfile-0"
808 test_7_cycle "$first" "$lost" "$last" || error "Test 7e.1 failed"
810 first="mkdir $DIR/$tdir/$tfile-0; rmdir $DIR/$tdir/$tfile-0"
811 lost="mkdir $MOUNT2/$tdir/$tfile-0; rmdir $MOUNT2/$tdir/$tfile-0; mkdir $MOUNT2/$tdir/$tfile-0"
812 last="rmdir $DIR/$tdir/$tfile-0"
813 test_7_cycle "$first" "$lost" "$last" || error "Test 7e.2 failed"
815 first="createmany -o $DIR/$tdir/$tfile- 1; rm $DIR/$tdir/$tfile-0"
816 lost="mkdir $MOUNT2/$tdir/$tfile-0"
817 last="rmdir $DIR/$tdir/$tfile-0"
818 test_7_cycle "$first" "$lost" "$last" || error "Test 7e.3 failed"
820 first="mkdir $DIR/$tdir/$tfile-0; rmdir $DIR/$tdir/$tfile-0"
821 lost="createmany -o $MOUNT2/$tdir/$tfile- 1"
822 last="rm $DIR/$tdir/$tfile-0"
823 test_7_cycle "$first" "$lost" "$last" || error "Test 7e.4 failed"
825 first="createmany -o $DIR/$tdir/$tfile- 2; rm $DIR/$tdir/$tfile-0"
826 lost="mv $MOUNT2/$tdir/$tfile-1 $MOUNT2/$tdir/$tfile-0"
827 last="rm $DIR/$tdir/$tfile-0"
828 test_7_cycle "$first" "$lost" "$last" || error "Test 7e.5 failed"
831 run_test 7e "unlink, {lost}, unlink"
834 first="createmany -o $DIR/$tdir/$tfile- 1; rm $DIR/$tdir/$tfile-0"
835 lost="createmany -o $MOUNT2/$tdir/$tfile- 1"
836 last="mv $DIR/$tdir/$tfile-0 $DIR/$tdir/$tfile-1"
837 test_7_cycle "$first" "$lost" "$last" || error "Test 7f.1 failed"
839 first="createmany -o $DIR/$tdir/$tfile- 2; rm $DIR/$tdir/$tfile-0"
840 lost="createmany -o $MOUNT2/$tdir/$tfile- 1"
841 last="mv $DIR/$tdir/$tfile-1 $DIR/$tdir/$tfile-0"
842 test_7_cycle "$first" "$lost" "$last" || error "Test 7f.2 failed"
844 first="mkdir $DIR/$tdir/$tfile; createmany -o $DIR/$tdir/$tfile- 1; rmdir $DIR/$tdir/$tfile"
845 lost="mkdir $MOUNT2/$tdir/$tfile"
846 last="mv $DIR/$tdir/$tfile-0 $DIR/$tdir/$tfile"
847 test_7_cycle "$first" "$lost" "$last" || error "Test 7f.3 failed"
849 first="createmany -o $DIR/$tdir/$tfile- 2; rm $DIR/$tdir/$tfile-0"
850 lost="mv $MOUNT2/$tdir/$tfile-1 $MOUNT2/$tdir/$tfile-0"
851 last="mv $DIR/$tdir/$tfile-0 $DIR/$tdir/$tfile-1"
852 test_7_cycle "$first" "$lost" "$last" || error "Test 7f.4 failed"
854 first="createmany -o $DIR/$tdir/$tfile- 2; rm $DIR/$tdir/$tfile-0"
855 lost="mkdir $MOUNT2/$tdir/$tfile-0"
856 last="mv $DIR/$tdir/$tfile-1 $DIR/$tdir/$tfile-0"
857 test_7_cycle "$first" "$lost" "$last" || error "Test 7f.5 failed"
860 run_test 7f "unlink, {lost}, rename"
863 first="createmany -o $DIR/$tdir/$tfile- 1; mv $DIR/$tdir/$tfile-0 $DIR/$tdir/$tfile-1"
864 lost="mkdir $MOUNT2/$tdir/$tfile-0;rmdir $MOUNT2/$tdir/$tfile-0"
865 last="createmany -o $DIR/$tdir/$tfile- 1"
866 test_7_cycle "$first" "$lost" "$last" && error "Test 7g.1 failed"
868 first="createmany -o $DIR/$tdir/$tfile- 2; mv $DIR/$tdir/$tfile-0 $DIR/$tdir/$tfile-1"
869 lost="createmany -o $MOUNT2/$tdir/$tfile- 1; rm $MOUNT2/$tdir/$tfile-0"
870 last="mkdir $DIR/$tdir/$tfile-0"
871 test_7_cycle "$first" "$lost" "$last" && error "Test 7g.2 failed"
873 first="createmany -o $DIR/$tdir/$tfile- 1; mv $DIR/$tdir/$tfile-0 $DIR/$tdir/$tfile"
874 lost="createmany -o $MOUNT2/$tdir/$tfile- 1"
875 last="link $DIR/$tdir/$tfile-0 $DIR/$tdir/$tfile-1"
876 if [ "$MDS1_VERSION" -lt $(version_code 2.5.1) ]; then
877 test_7_cycle "$first" "$lost" "$last" ||
878 error "Test 7g.3 failed"
879 else #LU-4442 LU-3528
880 test_7_cycle "$first" "$lost" "$last" &&
881 error "Test 7g.3 failed"
885 run_test 7g "rename, {lost}, create"
888 first="createmany -o $DIR/$tdir/$tfile- 1; mv $DIR/$tdir/$tfile-0 $DIR/$tdir/$tfile-1"
889 lost="createmany -o $MOUNT2/$tdir/$tfile- 1"
890 last="rm $DIR/$tdir/$tfile-0"
891 test_7_cycle "$first" "$lost" "$last" || error "Test 7h.1 failed"
893 first="createmany -o $DIR/$tdir/$tfile- 2; mv $DIR/$tdir/$tfile-1 $DIR/$tdir/$tfile-0"
894 lost="rm $MOUNT2/$tdir/$tfile-0; createmany -o $MOUNT2/$tdir/$tfile- 1"
895 last="rm $DIR/$tdir/$tfile-0"
896 test_7_cycle "$first" "$lost" "$last" || error "Test 7h.2 failed"
898 first="createmany -o $DIR/$tdir/$tfile- 1; mkdir $DIR/$tdir/$tfile; mv $DIR/$tdir/$tfile-0 $DIR/$tdir/$tfile"
899 lost="rm $MOUNT2/$tdir/$tfile/$tfile-0"
900 last="rmdir $DIR/$tdir/$tfile"
901 #test_7_cycle "$first" "$lost" "$last" || error "Test 7h.3 failed"
904 run_test 7h "rename, {lost}, unlink"
907 first="createmany -o $DIR/$tdir/$tfile- 1; mv $DIR/$tdir/$tfile-0 $DIR/$tdir/$tfile-1"
908 lost="createmany -o $MOUNT2/$tdir/$tfile- 1"
909 last="mv $DIR/$tdir/$tfile-0 $DIR/$tdir/$tfile-1"
910 test_7_cycle "$first" "$lost" "$last" || error "Test 7i.1 failed"
912 first="createmany -o $DIR/$tdir/$tfile- 1; mv $DIR/$tdir/$tfile-0 $DIR/$tdir/$tfile-1"
913 lost="mkdir $MOUNT2/$tdir/$tfile-0"
914 last="mv $DIR/$tdir/$tfile-1 $DIR/$tdir/$tfile-0"
915 test_7_cycle "$first" "$lost" "$last" || error "Test 7i.1 failed"
917 first="createmany -o $DIR/$tdir/$tfile- 3; mv $DIR/$tdir/$tfile-1 $DIR/$tdir/$tfile-0"
918 lost="mv $MOUNT2/$tdir/$tfile-2 $MOUNT2/$tdir/$tfile-0"
919 last="mv $DIR/$tdir/$tfile-0 $DIR/$tdir/$tfile-2"
920 test_7_cycle "$first" "$lost" "$last" || error "Test 7i.3 failed"
922 first="createmany -o $DIR/$tdir/$tfile- 2; mv $DIR/$tdir/$tfile-0 $DIR/$tdir/$tfile"
923 lost="rm $MOUNT2/$tdir/$tfile-1"
924 last="mv $DIR/$tdir/$tfile $DIR/$tdir/$tfile-1"
925 test_7_cycle "$first" "$lost" "$last" || error "Test 7i.4 failed"
928 run_test 7i "rename, {lost}, rename"
930 # test set #8: orphan handling bug 15392.
931 # Unlink during recovery creates orphan always just in case some late open may
932 # arrive. These orphans will be removed after recovery anyway.
933 # Tests check that valid create,unlink,create sequence will work in this case
934 # too but not fail on second create due to orphan found.
937 local var=${SINGLEMDS}_svc
938 zconf_mount $CLIENT2 $MOUNT2
940 do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
943 mkdir_on_mdt0 $DIR/$tfile-2
944 replay_barrier $SINGLEMDS
945 # missed replay from client2 will lead to recovery by versions
946 do_node $CLIENT2 touch $MOUNT2/$tfile-2/$tfile
947 rm $DIR/$tfile || return 1
948 touch $DIR/$tfile || return 2
950 zconf_umount $CLIENT2 $MOUNT2
951 facet_failover $SINGLEMDS
952 client_up $CLIENT1 || return 6
954 rm $DIR/$tfile || error "$tfile doesn't exists"
958 run_test 8a "create | unlink, create shouldn't fail"
961 local var=${SINGLEMDS}_svc
962 zconf_mount $CLIENT2 $MOUNT2
964 do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
966 do_node $CLIENT1 touch $DIR/$tfile
967 mkdir_on_mdt0 $DIR/$tfile-2
968 replay_barrier $SINGLEMDS
969 # missed replay from client2 will lead to recovery by versions
970 do_node $CLIENT2 touch $MOUNT2/$tfile-2/$tfile
971 rm -f $MOUNT1/$tfile || return 1
972 mcreate $MOUNT1/$tfile || return 2
974 zconf_umount $CLIENT2 $MOUNT2
975 facet_failover $SINGLEMDS
976 client_up $CLIENT1 || return 6
978 rm $MOUNT1/$tfile || error "$tfile doesn't exists"
982 run_test 8b "create | unlink, create shouldn't fail"
985 local var=${SINGLEMDS}_svc
986 zconf_mount $CLIENT2 $MOUNT2
988 do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
991 mkdir_on_mdt0 $DIR/$tfile-2
992 replay_barrier $SINGLEMDS
993 # missed replay from client2 will lead to recovery by versions
994 do_node $CLIENT2 touch $MOUNT2/$tfile-2/$tfile
995 rm -f $MOUNT1/$tfile || return 1
996 mkdir_on_mdt0 $MOUNT1/$tfile || return 2
998 zconf_umount $CLIENT2 $MOUNT2
999 facet_failover $SINGLEMDS
1000 client_up $CLIENT1 || return 6
1002 rmdir $MOUNT1/$tfile || error "$tfile doesn't exists"
1003 rm -rf $MOUNT1/$tfile-2
1006 run_test 8c "create | unlink, create shouldn't fail"
1009 # This test uses three Lustre clients on two hosts.
1011 # Lustre Client 1: $CLIENT1:$MOUNT ($DIR)
1012 # Lustre Client 2: $CLIENT2:$MOUNT2 ($DIR2)
1013 # Lustre Client 3: $CLIENT2:$MOUNT1 ($DIR1)
1015 test_10b() { # former test_2b
1018 local var=${SINGLEMDS}_svc
1020 [ $CLIENTCOUNT -ge 2 ] || \
1021 { skip "Need two or more clients, have $CLIENTCOUNT" && \
1024 do_facet $SINGLEMDS "$LCTL set_param mdd.${!var}.sync_permission=0"
1025 do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
1027 zconf_mount $CLIENT1 $MOUNT
1028 zconf_mount $CLIENT2 $MOUNT1
1029 zconf_mount $CLIENT2 $MOUNT2
1030 do_node $CLIENT1 openfile -f O_RDWR:O_CREAT -m 0644 $DIR/$tfile-a
1031 do_node $CLIENT1 openfile -f O_RDWR:O_CREAT -m 0644 $DIR/$tfile-b
1034 # Save an MDT transaction number before recovery.
1036 do_node $CLIENT1 touch $DIR1/$tfile
1037 pre=$(chk_get_version $CLIENT1 $DIR/$tfile)
1040 # Comments on the replay sequence state the expected result
1044 # "U" Unable to replay.
1047 replay_barrier $SINGLEMDS
1048 do_node $CLIENT1 chmod 666 $DIR/$tfile-a # R
1049 do_node $CLIENT2 chmod 666 $DIR1/$tfile-b # R
1050 do_node $CLIENT2 chgrp $RUNAS_GID $DIR2/$tfile-a # U
1051 do_node $CLIENT1 chown $RUNAS_ID:$RUNAS_GID $DIR/$tfile-a # J
1052 do_node $CLIENT2 $TRUNCATE $DIR2/$tfile-b 1 # U
1053 do_node $CLIENT2 chgrp $RUNAS_GID $DIR1/$tfile-b # R
1054 do_node $CLIENT1 chown $RUNAS_ID:$RUNAS_GID $DIR/$tfile-b # R
1055 zconf_umount $CLIENT2 $MOUNT2
1056 facet_failover $SINGLEMDS
1058 client_evicted $CLIENT1 || error "$CLIENT1:$MOUNT not evicted"
1059 client_up $CLIENT2 || error "$CLIENT2:$MOUNT1 evicted"
1062 # Check the MDT epoch. $post must be the first transaction
1063 # number assigned after recovery.
1065 do_node $CLIENT2 chmod 666 $DIR1/$tfile
1066 post=$(chk_get_version $CLIENT2 $DIR1/$tfile)
1067 if (($(($pre >> 32)) == $((post >> 32)))); then
1068 error "epoch not changed: pre $pre, post $post"
1071 if (($(($post & 0x00000000ffffffff)) != 1)); then
1072 error "transno should restart from one: got $post"
1075 do_node $CLIENT2 stat $DIR1/$tfile-a
1076 do_node $CLIENT2 stat $DIR1/$tfile-b
1078 do_node $CLIENT2 $CHECKSTAT -p 0666 -u \\\#$UID -g \\\#$UID \
1079 $DIR1/$tfile-a || error "$DIR/$tfile-a: unexpected state"
1080 do_node $CLIENT2 $CHECKSTAT -p 0666 -u \\\#$RUNAS_ID -g \\\#$RUNAS_GID \
1081 $DIR1/$tfile-b || error "$DIR/$tfile-b: unexpected state"
1083 zconf_umount $CLIENT2 $MOUNT1
1085 run_test 10b "3 clients: some, none, and all reqs replayed"
1087 # test set #11: operations in single directory
1089 local var=${SINGLEMDS}_svc
1090 zconf_mount $CLIENT2 $MOUNT2
1092 do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
1094 replay_barrier $SINGLEMDS
1096 do_node $CLIENT1 createmany -o $DIR/$tfile-1- 100 &
1098 do_node $CLIENT2 createmany -o $MOUNT2/$tfile-2- 100
1099 zconf_umount $CLIENT2 $MOUNT2
1102 facet_failover $SINGLEMDS
1103 # recovery shouldn't fail due to missing client 2
1104 client_up $CLIENT1 || return 1
1105 # All files from client1 should have been replayed
1106 do_node $CLIENT1 unlinkmany $DIR/$tfile-1- 100 || return 2
1108 [ -e $DIR/$tdir/$tfile-2-0 ] && error "$tfile-2-0 exists"
1111 run_test 11a "concurrent creates don't affect each other"
1114 local var=${SINGLEMDS}_svc
1115 zconf_mount $CLIENT2 $MOUNT2
1117 do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
1119 do_node $CLIENT2 createmany -o $MOUNT2/$tfile-2- 100
1121 replay_barrier $SINGLEMDS
1122 do_node $CLIENT1 createmany -o $DIR/$tfile-1- 100 &
1124 do_node $CLIENT2 unlinkmany -o $MOUNT2/$tfile-2- 100
1125 zconf_umount $CLIENT2 $MOUNT2
1128 facet_failover $SINGLEMDS
1129 # recovery shouldn't fail due to missing client 2
1130 client_up $CLIENT1 || return 1
1131 # All files from client1 should have been replayed
1132 do_node $CLIENT1 unlinkmany $DIR/$tfile-1- 100 || return 2
1134 [ -e $DIR/$tdir/$tfile-2-0 ] && error "$tfile-2-0 exists"
1137 run_test 11b "concurrent creates and unlinks don't affect each other"
1139 # test set #12: lock replay with VBR, bug 16356
1140 test_12a() { # former test_2a
1141 local var=${SINGLEMDS}_svc
1142 zconf_mount $CLIENT2 $MOUNT2
1144 do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
1146 do_node $CLIENT2 $LFS mkdir -i0 -c1 $MOUNT2/$tdir
1147 replay_barrier $SINGLEMDS
1148 do_node $CLIENT2 mcreate $MOUNT2/$tdir/$tfile
1149 do_node $CLIENT1 createmany -o $DIR/$tfile- 25
1150 #client1 read data from client2 which will be lost
1151 do_node $CLIENT1 $CHECKSTAT $DIR/$tdir/$tfile
1152 do_node $CLIENT1 createmany -o $DIR/$tfile-3- 25
1153 zconf_umount $CLIENT2 $MOUNT2
1155 facet_failover $SINGLEMDS
1156 # recovery shouldn't fail due to missing client 2
1157 client_up $CLIENT1 || return 1
1159 # All 50 files should have been replayed
1160 do_node $CLIENT1 unlinkmany $DIR/$tfile- 25 || return 2
1161 do_node $CLIENT1 unlinkmany $DIR/$tfile-3- 25 || return 3
1162 do_node $CLIENT1 $CHECKSTAT $DIR/$tdir/$tfile && return 4
1166 run_test 12a "lost data due to missed REMOTE client during replay"
1168 test_13() { # LU-8826
1169 local var=${SINGLEMDS}_svc
1171 if combined_mgs_mds ; then
1172 skip "Needs separate MGS to enable IR"
1176 do_facet $SINGLEMDS "$LCTL set_param mdd.${!var}.sync_permission=0"
1177 do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
1179 zconf_mount $CLIENT2 $MOUNT2
1180 do_node $CLIENT1 openfile -f O_RDWR:O_CREAT -m 0644 $DIR/$tfile
1182 # set ir_timeout to a reasonable small value
1183 local ir_timeout=$(do_facet mgs $LCTL get_param -n mgs.*.ir_timeout)
1184 do_facet mgs $LCTL set_param mgs.*.ir_timeout=5
1185 # make sure IR functional
1188 replay_barrier $SINGLEMDS
1189 do_node $CLIENT1 chmod 666 $DIR/$tfile
1190 do_node $CLIENT2 chmod 777 $DIR2/$tfile
1192 # make sure client data of $CLIENT2:$MOUNT2 is remained
1193 # define OBD_FAIL_TGT_CLIENT_DEL 0x718
1194 do_facet $SINGLEMDS $LCTL set_param fail_loc=0x718
1195 zconf_umount $CLIENT2 $MOUNT2
1196 # define OBD_FAIL_TGT_SLUGGISH_NET 0x719
1197 do_facet $SINGLEMDS $LCTL set_param fail_loc=0x719
1198 facet_failover $SINGLEMDS
1200 client_up $CLIENT1 || error "$CLIENT1 evicted"
1202 do_facet $SINGLEMDS $LCTL set_param fail_loc=0
1203 do_facet mgs $LCTL set_param mgs.*.ir_timeout=$ir_timeout
1205 do_node $CLIENT1 $CHECKSTAT -p 0666 $DIR/$tfile ||
1206 error "$DIR/$tfile-a: unexpected state"
1208 run_test 13 "Shouldn't give up VBR easily on sluggish network"
1210 #restore COS setting
1211 restore_lustre_params < $cos_param_file
1212 rm -f $cos_param_file
1214 [ "$CLIENTS" ] && zconf_mount_clients $CLIENTS $DIR
1216 complete_test $SECONDS
1217 check_and_cleanup_lustre