2 # -*- mode: Bash; tab-width: 4; indent-tabs-mode: t; -*-
3 # vim:shiftwidth=4:softtabstop=4:tabstop=4:
8 ALWAYS_EXCEPT="12a $REPLAY_VBR_EXCEPT"
10 case "$(lsb_release -sr)" in # only disable tests for el7
11 7*) # bug number: LU-6455
12 ALWAYS_EXCEPT="$ALWAYS_EXCEPT 4i 4j 4k 10b"
17 LUSTRE=${LUSTRE:-$(cd $(dirname $0)/..; echo $PWD)}
20 MOUNT_2=${MOUNT_2:-"yes"}
21 export MULTIOP=${MULTIOP:-multiop}
22 . $LUSTRE/tests/test-framework.sh
24 . ${CONFIG:=$LUSTRE/tests/cfg/$NAME.sh}
27 remote_mds_nodsh && log "SKIP: remote MDS with nodsh" && exit 0
29 [ "$SLOW" = "no" ] && EXCEPT_SLOW="7"
33 check_and_setup_lustre
36 rm -rf $DIR/[df][0-9]*
38 [ "$DAEMONFILE" ] && $LCTL debug_daemon start $DAEMONFILE $DAEMONSIZE
40 # if there is no CLIENT1 defined, some tests can be ran on localhost
41 CLIENT1=${CLIENT1:-$HOSTNAME}
42 # if CLIENT2 doesn't exist then use CLIENT1 instead
43 # All tests should use CLIENT2 with MOUNT2 only therefore it will work if
45 # Exception is the test which need two separate nodes
46 CLIENT2=${CLIENT2:-$CLIENT1}
48 is_mounted $MOUNT2 || error "MOUNT2 is not mounted"
55 # We need to run do_node in bg, because pdsh does not exit
56 # if child process of run script exists.
57 # I.e. pdsh does not exit when runmultiop_bg_pause exited,
58 # because of multiop_bg_pause -> $MULTIOP_PROG &
59 # By the same reason we need sleep a bit after do_nodes starts
60 # to let runmultiop_bg_pause start muliop and
61 # update /tmp/multiop_bg.pid ;
62 # The rm /tmp/multiop_bg.pid guarantees here that
63 # we have the updated by runmultiop_bg_pause
64 # /tmp/multiop_bg.pid file
66 local pid_file=$TMP/multiop_bg.pid.$$
67 do_node $client "MULTIOP_PID_FILE=$pid_file LUSTRE= runmultiop_bg_pause $file $cmds" &
71 multiop_pid=$(do_node $client cat $pid_file)
72 [ -n "$multiop_pid" ] || error "$client : Can not get multiop_pid from $pid_file "
73 eval export $(node_var_name $client)_multiop_pid=$multiop_pid
74 eval export $(node_var_name $client)_do_node_pid=$pid
75 local var=$(node_var_name $client)_multiop_pid
76 echo client $client multiop_bg started multiop_pid=${!var}
82 local multiop_pid=$(node_var_name $client)_multiop_pid
83 local do_node_pid=$(node_var_name $client)_do_node_pid
85 echo "Stopping multiop_pid=${!multiop_pid} (kill ${!multiop_pid} on $client)"
86 do_node $client kill -USR1 ${!multiop_pid}
92 local var=${SINGLEMDS}_svc
97 fid=$(do_node $client $LFS path2fid $file)
98 do_facet $SINGLEMDS $LCTL --device ${!var} getobjversion \\\"$fid\\\"
102 cos_param_file=$TMP/rvbr-cos-params
103 save_lustre_params $(get_facets MDS) "mdt.*.commit_on_sharing" > $cos_param_file
106 get_version $CLIENT1 $DIR/$tdir/1a || true
108 run_test 0a "getversion for non existent file shouldn't cause kernel panic"
111 local var=${SINGLEMDS}_svc
113 local file=$DIR/$tdir/f
115 do_node $CLIENT1 mkdir -p $DIR/$tdir/
116 do_node $CLIENT1 touch $file
117 fid=$(do_node $CLIENT1 $LFS path2fid $file)
118 do_node $CLIENT1 rm -rf $file
119 do_facet $SINGLEMDS $LCTL --device ${!var} getobjversion \\\"$fid\\\" || true
121 run_test 0b "getversion for non existent fid shouldn't cause kernel panic"
124 test_1a() { # former test_0a
125 local file=$DIR/$tfile
129 do_node $CLIENT1 mcreate $file
130 pre=$(get_version $CLIENT1 $file)
131 do_node $CLIENT1 openfile -f O_RDWR $file
132 post=$(get_version $CLIENT1 $file)
133 if (($pre != $post)); then
134 error "version changed unexpectedly: pre $pre, post $post"
137 run_test 1a "open and close do not change versions"
139 test_1b() { # former test_0b
140 local var=${SINGLEMDS}_svc
141 zconf_mount $CLIENT2 $MOUNT2
143 do_facet $SINGLEMDS "$LCTL set_param mdd.${!var}.sync_permission=0"
144 do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
145 do_node $CLIENT1 mkdir -p -m 755 $MOUNT/$tdir
147 replay_barrier $SINGLEMDS
148 do_node $CLIENT2 chmod 777 $MOUNT2/$tdir
149 do_node $CLIENT1 openfile -f O_RDWR:O_CREAT $MOUNT/$tdir/$tfile
150 zconf_umount $CLIENT2 $MOUNT2
151 facet_failover $SINGLEMDS
153 client_evicted $CLIENT1 || error "$CLIENT1 not evicted"
154 if ! do_node $CLIENT1 $CHECKSTAT -a $DIR/$tdir/$tfile; then
155 error_and_remount "open succeeded unexpectedly"
158 run_test 1b "open (O_CREAT) checks version of parent"
160 test_1c() { # former test_0c
161 local var=${SINGLEMDS}_svc
162 zconf_mount $CLIENT2 $MOUNT2
164 do_facet $SINGLEMDS "$LCTL set_param mdd.${!var}.sync_permission=0"
165 do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
167 do_node $CLIENT1 mkdir -p -m 755 $DIR/$tdir
168 do_node $CLIENT1 openfile -f O_RDWR:O_CREAT -m 0644 $DIR/$tdir/$tfile
170 replay_barrier $SINGLEMDS
171 do_node $CLIENT2 chmod 0777 $MOUNT2/$tdir
172 do_node $CLIENT2 chmod 0666 $MOUNT2/$tdir/$tfile
173 rmultiop_start $CLIENT1 $DIR/$tdir/$tfile o_c
174 zconf_umount $CLIENT2 $MOUNT2
175 facet_failover $SINGLEMDS
177 client_up $CLIENT1 || error "$CLIENT1 evicted"
178 rmultiop_stop $CLIENT1 || error "close failed"
180 run_test 1c "open (non O_CREAT) does not checks versions"
182 # test set #2: CREAT (not open)
183 # - version of parent is not changed but checked
184 # - pre-version should be -1
185 # - post-version should be valid
186 test_2a() { # extended former test_0d
191 pre=$(get_version $CLIENT1 $DIR)
192 do_node $CLIENT1 mkfifo $DIR/$tfile-fifo
193 post=$(get_version $CLIENT1 $DIR)
194 if (($pre != $post)); then
195 error "version was changed: pre $pre, post $post"
198 pre=$(get_version $CLIENT1 $DIR)
199 do_node $CLIENT1 mkdir $DIR/$tfile-dir
200 post=$(get_version $CLIENT1 $DIR)
201 if (($pre != $post)); then
202 error "version was changed: pre $pre, post $post"
204 do_node $CLIENT1 rmdir $DIR/$tfile-dir
207 pre=$(get_version $CLIENT1 $DIR)
208 do_node $CLIENT1 mkfifo $DIR/$tfile-nod
209 post=$(get_version $CLIENT1 $DIR)
210 if (($pre != $post)); then
211 error "version was changed: pre $pre, post $post"
214 pre=$(get_version $CLIENT1 $DIR)
215 do_node $CLIENT1 mkfifo $DIR/$tfile-symlink
216 post=$(get_version $CLIENT1 $DIR)
217 if (($pre != $post)); then
218 error "version was changed: pre $pre, post $post"
221 if [ $MDSCOUNT -ge 2 ]; then
224 pre=$(get_version $CLIENT1 $DIR)
225 do_node $CLIENT1 $LFS mkdir -i $MDT_IDX $DIR/$tfile-remote_dir
226 post=$(get_version $CLIENT1 $DIR)
227 if (($pre != $post)); then
228 error "version was changed: pre $pre, post $post"
231 do_node $CLIENT1 rm -rf $DIR/$tfile-*
234 run_test 2a "create operations doesn't change version of parent"
236 test_2b() { # former test_0e
237 local var=${SINGLEMDS}_svc
238 zconf_mount $CLIENT2 $MOUNT2
240 do_facet $SINGLEMDS "$LCTL set_param mdd.${!var}.sync_permission=0"
241 do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
243 do_node $CLIENT1 mkdir -p -m 755 $DIR/$tdir
245 replay_barrier $SINGLEMDS
246 do_node $CLIENT2 chmod 777 $MOUNT2/$tdir
247 do_node $CLIENT1 mkfifo $DIR/$tdir/$tfile
248 zconf_umount $CLIENT2 $MOUNT2
249 facet_failover $SINGLEMDS
251 client_evicted $CLIENT1 || error "$CLIENT1 not evicted"
252 if ! do_node $CLIENT1 $CHECKSTAT -a $DIR/$tdir/$tfile; then
253 error_and_remount "create succeeded unexpectedly"
256 run_test 2b "create checks version of parent"
258 test_3a() { # former test_0f
262 do_node $CLIENT1 mcreate $DIR/$tfile
263 pre=$(get_version $CLIENT1 $DIR)
264 do_node $CLIENT1 rm $DIR/$tfile
265 post=$(get_version $CLIENT1 $DIR)
266 if (($pre != $post)); then
267 error "version was changed: pre $pre, post $post"
270 if [ $MDSCOUNT -ge 2 ]; then
273 do_node $CLIENT1 $LFS mkdir -i $MDT_IDX $DIR/$tfile-remote_dir
274 pre=$(get_version $CLIENT1 $DIR)
275 do_node $CLIENT1 rmdir $DIR/$tfile-remote_dir
276 post=$(get_version $CLIENT1 $DIR)
277 if (($pre != $post)); then
278 error "version was changed: pre $pre, post $post"
282 run_test 3a "unlink doesn't change version of parent"
284 test_3b() { # former test_0g
285 local var=${SINGLEMDS}_svc
286 zconf_mount $CLIENT2 $MOUNT2
288 do_facet $SINGLEMDS "$LCTL set_param mdd.${!var}.sync_permission=0"
289 do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
291 do_node $CLIENT1 mkdir -p -m 755 $DIR/$tdir
292 do_node $CLIENT1 mcreate $DIR/$tdir/$tfile
294 replay_barrier $SINGLEMDS
295 do_node $CLIENT2 chmod 777 $MOUNT2/$tdir
296 do_node $CLIENT1 rm $DIR/$tdir/$tfile
297 zconf_umount $CLIENT2 $MOUNT2
298 facet_failover $SINGLEMDS
300 client_evicted $CLIENT1 || error "$CLIENT1 not evicted"
301 if do_node $CLIENT1 $CHECKSTAT -a $DIR/$tdir/$tfile; then
302 error_and_remount "unlink succeeded unexpectedly"
305 run_test 3b "unlink checks version of parent"
307 test_4a() { # former test_0h
308 local file=$DIR/$tfile
312 do_node $CLIENT1 mcreate $file
313 pre=$(get_version $CLIENT1 $file)
314 do_node $CLIENT1 chown $RUNAS_ID:$RUNAS_GID $file
315 post=$(get_version $CLIENT1 $file)
316 if (($pre == $post)); then
317 error "version not changed: pre $pre, post $post"
320 run_test 4a "setattr of UID changes versions"
322 test_4b() { # former test_0i
323 local file=$DIR/$tfile
327 do_node $CLIENT1 mcreate $file
328 pre=$(get_version $CLIENT1 $file)
329 do_node $CLIENT1 chgrp $RUNAS_GID $file
330 post=$(get_version $CLIENT1 $file)
331 if (($pre == $post)); then
332 error "version not changed: pre $pre, post $post"
335 run_test 4b "setattr of GID changes versions"
337 test_4c() { # former test_0j
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 chgrp $RUNAS_GID $MOUNT2/$tfile
349 do_node $CLIENT1 chown $RUNAS_ID:$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 -u \\\#$UID $file; then
355 error_and_remount "setattr of UID succeeded unexpectedly"
358 run_test 4c "setattr of UID checks versions"
360 test_4d() { # former test_0k
361 local file=$DIR/$tfile
362 local var=${SINGLEMDS}_svc
363 zconf_mount $CLIENT2 $MOUNT2
365 do_facet $SINGLEMDS "$LCTL set_param mdd.${!var}.sync_permission=0"
366 do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
368 do_node $CLIENT1 mcreate $file
370 replay_barrier $SINGLEMDS
371 do_node $CLIENT2 chown $RUNAS_ID:$RUNAS_GID $MOUNT2/$tfile
372 do_node $CLIENT1 chgrp $RUNAS_GID $file
373 zconf_umount $CLIENT2 $MOUNT2
374 facet_failover $SINGLEMDS
376 client_evicted $CLIENT1 || error "$CLIENT1 not evicted"
377 if ! do_node $CLIENT1 $CHECKSTAT -g \\\#$UID $file; then
378 error_and_remount "setattr of GID succeeded unexpectedly"
381 run_test 4d "setattr of GID checks versions"
383 test_4e() { # former test_0l
384 local file=$DIR/$tfile
388 do_node $CLIENT1 openfile -f O_RDWR:O_CREAT -m 0644 $file
389 pre=$(get_version $CLIENT1 $file)
390 do_node $CLIENT1 chmod 666 $file
391 post=$(get_version $CLIENT1 $file)
392 if (($pre == $post)); then
393 error "version not changed: pre $pre, post $post"
396 run_test 4e "setattr of permission changes versions"
398 test_4f() { # former test_0m
399 local file=$DIR/$tfile
400 local var=${SINGLEMDS}_svc
401 zconf_mount $CLIENT2 $MOUNT2
403 do_facet $SINGLEMDS "$LCTL set_param mdd.${!var}.sync_permission=0"
404 do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
406 do_node $CLIENT1 openfile -f O_RDWR:O_CREAT -m 0644 $file
408 replay_barrier $SINGLEMDS
409 do_node $CLIENT2 chgrp $RUNAS_GID $MOUNT2/$tfile
410 do_node $CLIENT1 chmod 666 $file
411 zconf_umount $CLIENT2 $MOUNT2
412 facet_failover $SINGLEMDS
414 client_evicted $CLIENT1 || error "$CLIENT1 not evicted"
415 if ! do_node $CLIENT1 $CHECKSTAT -p 0644 $file; then
416 error_and_remount "setattr of permission succeeded unexpectedly"
419 run_test 4f "setattr of permission checks versions"
421 test_4g() { # former test_0n
422 local file=$DIR/$tfile
426 do_node $CLIENT1 mcreate $file
427 pre=$(get_version $CLIENT1 $file)
428 do_node $CLIENT1 chattr +i $file
429 post=$(get_version $CLIENT1 $file)
430 do_node $CLIENT1 chattr -i $file
431 if (($pre == $post)); then
432 error "version not changed: pre $pre, post $post"
435 run_test 4g "setattr of flags changes versions"
443 if ((${#attr} != 1)); then
444 error "checking multiple attributes not implemented yet"
446 do_node $client lsattr $file | cut -d ' ' -f 1 | grep -q $attr
449 test_4h() { # former test_0o
450 local file=$DIR/$tfile
452 local var=${SINGLEMDS}_svc
453 zconf_mount $CLIENT2 $MOUNT2
455 do_facet $SINGLEMDS "$LCTL set_param mdd.${!var}.sync_permission=0"
456 do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
458 do_node $CLIENT1 openfile -f O_RDWR:O_CREAT -m 0644 $file
460 replay_barrier $SINGLEMDS
461 do_node $CLIENT2 chmod 666 $MOUNT2/$tfile
462 do_node $CLIENT1 chattr +i $file
463 zconf_umount $CLIENT2 $MOUNT2
464 facet_failover $SINGLEMDS
466 client_evicted $CLIENT1 || error "$CLIENT1 not evicted"
467 checkattr $CLIENT1 i $file
469 do_node $CLIENT1 chattr -i $file
470 if [ $rc -eq 0 ]; then
471 error "setattr of flags succeeded unexpectedly"
474 run_test 4h "setattr of flags checks versions"
476 test_4i() { # former test_0p
477 local file=$DIR/$tfile
481 local var=${SINGLEMDS}_svc
483 ad_orig=$(do_facet $SINGLEMDS "$LCTL get_param mdd.${!var}.atime_diff")
484 do_facet $SINGLEMDS "$LCTL set_param mdd.${!var}.atime_diff=0"
485 do_node $CLIENT1 mcreate $file
486 pre=$(get_version $CLIENT1 $file)
487 do_node $CLIENT1 touch $file
488 post=$(get_version $CLIENT1 $file)
490 # We don't fail MDS in this test. atime_diff shall be
491 # restored to its original value.
493 do_facet $SINGLEMDS "$LCTL set_param $ad_orig"
494 if (($pre != $post)); then
495 error "version changed unexpectedly: pre $pre, post $post"
498 run_test 4i "setattr of times does not change versions"
500 test_4j() { # former test_0q
501 local file=$DIR/$tfile
505 do_node $CLIENT1 mcreate $file
506 pre=$(get_version $CLIENT1 $file)
507 do_node $CLIENT1 $TRUNCATE $file 1
508 post=$(get_version $CLIENT1 $file)
509 if (($pre != $post)); then
510 error "version changed unexpectedly: pre $pre, post $post"
513 run_test 4j "setattr of size does not change versions"
515 test_4k() { # former test_0r
516 local file=$DIR/$tfile
520 local var=${SINGLEMDS}_svc
521 zconf_mount $CLIENT2 $MOUNT2
523 do_facet $SINGLEMDS "$LCTL set_param mdd.${!var}.sync_permission=0"
524 do_facet $SINGLEMDS "$LCTL set_param mdd.${!var}.atime_diff=0"
525 do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
527 do_node $CLIENT1 openfile -f O_RDWR:O_CREAT -m 0644 $file
529 replay_barrier $SINGLEMDS
530 do_node $CLIENT2 chmod 666 $MOUNT2/$tfile
531 do_node $CLIENT1 $TRUNCATE $file 1
533 mtime_pre=$(do_node $CLIENT1 stat --format=%Y $file)
534 do_node $CLIENT1 touch $file
535 sleep 1 # avoid stat caching
536 mtime_post=$(do_node $CLIENT1 stat --format=%Y $file)
537 zconf_umount $CLIENT2 $MOUNT2
538 facet_failover $SINGLEMDS
540 client_up $CLIENT1 || error "$CLIENT1 evicted"
541 if (($mtime_pre >= $mtime_post)); then
542 error "time not changed: pre $mtime_pre, post $mtime_post"
544 if ! do_node $CLIENT1 $CHECKSTAT -s 1 $file; then
545 error_and_remount "setattr of size failed"
547 mtime=$(do_node $CLIENT1 stat --format=%Y $file)
548 if (($mtime != $mtime_post)); then
549 error "setattr of times failed: expected $mtime_post, got $mtime"
552 run_test 4k "setattr of times and size does not check versions"
554 test_5a() { # former test_0s
560 do_node $CLIENT1 mcreate $DIR/$tfile
561 do_node $CLIENT1 mkdir -p $DIR/$tdir
562 pre=$(get_version $CLIENT1 $DIR/$tfile)
563 tp_pre=$(get_version $CLIENT1 $DIR/$tdir)
564 do_node $CLIENT1 link $DIR/$tfile $DIR/$tdir/$tfile
565 post=$(get_version $CLIENT1 $DIR/$tfile)
566 tp_post=$(get_version $CLIENT1 $DIR/$tdir)
567 if (($pre == $post)); then
568 error "version of source not changed: pre $pre, post $post"
570 if (($tp_pre != $tp_post)); then
571 error "version of target parent was changed: pre $tp_pre, post $tp_post"
574 run_test 5a "link changes versions of source but not target parent"
576 test_5b() { # former test_0t
577 local var=${SINGLEMDS}_svc
578 zconf_mount $CLIENT2 $MOUNT2
580 do_facet $SINGLEMDS "$LCTL set_param mdd.${!var}.sync_permission=0"
581 do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
583 do_node $CLIENT1 mcreate $DIR/$tfile
584 do_node $CLIENT1 mkdir -p -m 755 $DIR/$tdir
586 replay_barrier $SINGLEMDS
587 do_node $CLIENT2 chmod 777 $MOUNT2/$tdir
588 do_node $CLIENT1 link $DIR/$tfile $DIR/$tdir/$tfile
589 zconf_umount $CLIENT2 $MOUNT2
590 facet_failover $SINGLEMDS
592 client_evicted $CLIENT1 || error "$CLIENT1 not evicted"
593 if ! do_node $CLIENT1 $CHECKSTAT -a $DIR/$tdir/$tfile; then
594 error_and_remount "link should fail"
597 run_test 5b "link checks version of target parent"
599 test_5c() { # former test_0u
600 local var=${SINGLEMDS}_svc
601 zconf_mount $CLIENT2 $MOUNT2
603 do_facet $SINGLEMDS "$LCTL set_param mdd.${!var}.sync_permission=0"
604 do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
606 do_node $CLIENT1 openfile -f O_RDWR:O_CREAT -m 0644 $DIR/$tfile
607 do_node $CLIENT1 mkdir -p $DIR/$tdir
609 replay_barrier $SINGLEMDS
610 do_node $CLIENT2 chmod 666 $MOUNT2/$tfile
611 do_node $CLIENT1 link $DIR/$tfile $DIR/$tdir/$tfile
612 zconf_umount $CLIENT2 $MOUNT2
613 facet_failover $SINGLEMDS
615 client_evicted $CLIENT1 || error "$CLIENT1 not evicted"
616 if ! do_node $CLIENT1 $CHECKSTAT -a $DIR/$tdir/$tfile; then
617 error_and_remount "link should fail"
620 run_test 5c "link checks version of source"
622 test_6a() { # former test_0v
628 do_node $CLIENT1 mcreate $DIR/$tfile
629 do_node $CLIENT1 mkdir -p $DIR/$tdir
630 sp_pre=$(get_version $CLIENT1 $DIR)
631 tp_pre=$(get_version $CLIENT1 $DIR/$tdir)
632 do_node $CLIENT1 mv $DIR/$tfile $DIR/$tdir/$tfile
633 sp_post=$(get_version $CLIENT1 $DIR)
634 tp_post=$(get_version $CLIENT1 $DIR/$tdir)
635 if (($sp_pre != $sp_post)); then
636 error "version of source parent was changed: pre $sp_pre, post $sp_post"
638 if (($tp_pre != $tp_post)); then
639 error "version of target parent was changed: pre $tp_pre, post $tp_post"
642 run_test 6a "rename doesn't change versions of source parent and target parent"
644 test_6b() { # former test_0w
648 do_node $CLIENT1 mcreate $DIR/$tfile
649 pre=$(get_version $CLIENT1 $DIR)
650 do_node $CLIENT1 mv $DIR/$tfile $DIR/$tfile-new
651 post=$(get_version $CLIENT1 $DIR)
652 if (($pre != $post)); then
653 error "version of parent was changed: pre $pre, post $post"
656 run_test 6b "rename within same dir doesn't change version of parent"
658 test_6c() { # former test_0x
659 local var=${SINGLEMDS}_svc
660 zconf_mount $CLIENT2 $MOUNT2
662 do_facet $SINGLEMDS "$LCTL set_param mdd.${!var}.sync_permission=0"
663 do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
665 do_node $CLIENT1 mcreate $DIR/$tfile
666 do_node $CLIENT1 mkdir -p -m 755 $DIR/$tdir
668 replay_barrier $SINGLEMDS
669 do_node $CLIENT2 chmod 777 $MOUNT2
670 do_node $CLIENT1 mv $DIR/$tfile $DIR/$tdir/$tfile
671 zconf_umount $CLIENT2 $MOUNT2
672 facet_failover $SINGLEMDS
674 client_evicted $CLIENT1 || error "$CLIENT1 not evicted"
675 if do_node $CLIENT1 $CHECKSTAT -a $DIR/$tfile; then
676 error_and_remount "rename should fail"
679 run_test 6c "rename checks version of source parent"
681 test_6d() { # former test_0y
682 local var=${SINGLEMDS}_svc
683 zconf_mount $CLIENT2 $MOUNT2
685 do_facet $SINGLEMDS "$LCTL set_param mdd.${!var}.sync_permission=0"
686 do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
688 do_node $CLIENT1 mcreate $DIR/$tfile
689 do_node $CLIENT1 mkdir -p -m 755 $DIR/$tdir
691 replay_barrier $SINGLEMDS
692 do_node $CLIENT2 chmod 777 $MOUNT2/$tdir
693 do_node $CLIENT1 mv $DIR/$tfile $DIR/$tdir/$tfile
694 zconf_umount $CLIENT2 $MOUNT2
695 facet_failover $SINGLEMDS
697 client_evicted $CLIENT1 || error "$CLIENT1 not evicted"
698 if do_node $CLIENT1 $CHECKSTAT -a $DIR/$tfile; then
699 error_and_remount "rename should fail"
702 run_test 6d "rename checks version of target parent"
704 # pdirops tests, bug 18143
711 local var=${SINGLEMDS}_svc
712 zconf_mount $CLIENT2 $MOUNT2
714 local cname=$TESTNAME.$cycle
716 echo "start cycle: $cname"
717 do_facet $SINGLEMDS "$LCTL set_param mdd.${!var}.sync_permission=0"
718 do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
720 do_node $CLIENT1 mkdir -p $DIR/$tdir
721 replay_barrier $SINGLEMDS
723 echo "$cname first: $first"
724 do_node $CLIENT1 $first || error "$cname: Cannot do first operation"
725 # client2 operations that will be lost
726 echo "$cname lost: $lost"
727 do_node $CLIENT2 $lost || error "$cname: Cannot do 'lost' operations"
729 echo "$cname last: $last"
730 do_node $CLIENT1 $last || error "$cname: Cannot do last operation"
731 zconf_umount $CLIENT2 $MOUNT2
732 facet_failover $SINGLEMDS
733 # should fail as conflict expected
734 client_evicted $CLIENT1 || rc=1
736 wait_recovery_complete $SINGLEMDS
737 wait_mds_ost_sync || error "wait_mds_ost_sync failed"
744 first="createmany -o $DIR/$tdir/$tfile- 1"
745 lost="rm $MOUNT2/$tdir/$tfile-0"
746 last="createmany -o $DIR/$tdir/$tfile- 1"
747 test_7_cycle "$first" "$lost" "$last" || error "Test 7a.1 failed"
749 first="createmany -o $DIR/$tdir/$tfile- 1"
750 lost="rm $MOUNT2/$tdir/$tfile-0"
751 last="mkdir $DIR/$tdir/$tfile-0"
752 test_7_cycle "$first" "$lost" "$last" || error "Test 7a.2 failed"
754 first="mkdir $DIR/$tdir/$tfile-0"
755 lost="mv $MOUNT2/$tdir/$tfile-0 $MOUNT2/$tdir/$tfile-1"
756 last="createmany -o $DIR/$tdir/$tfile- 1"
757 test_7_cycle "$first" "$lost" "$last" || error "Test 7a.3 failed"
760 run_test 7a "create, {lost}, create"
763 first="createmany -o $DIR/$tdir/$tfile- 1"
764 lost="rm $MOUNT2/$tdir/$tfile-0; createmany -o $MOUNT2/$tdir/$tfile- 1"
765 last="rm $DIR/$tdir/$tfile-0"
766 test_7_cycle "$first" "$lost" "$last" || error "Test 7b.1 failed"
768 first="createmany -o $DIR/$tdir/$tfile- 1"
769 lost="touch $MOUNT2/$tdir/$tfile; mv $MOUNT2/$tdir/$tfile $MOUNT2/$tdir/$tfile-0"
770 last="rm $DIR/$tdir/$tfile-0"
771 test_7_cycle "$first" "$lost" "$last" || error "Test 7b.2 failed"
773 first="createmany -o $DIR/$tdir/$tfile- 1"
774 lost="rm $MOUNT2/$tdir/$tfile-0; mkdir $MOUNT2/$tdir/$tfile-0"
775 last="rmdir $DIR/$tdir/$tfile-0"
776 test_7_cycle "$first" "$lost" "$last" || error "Test 7b.3 failed"
779 run_test 7b "create, {lost}, unlink"
782 first="createmany -o $DIR/$tdir/$tfile- 1"
783 lost="rm $MOUNT2/$tdir/$tfile-0; createmany -o $MOUNT2/$tdir/$tfile- 1"
784 last="mv $DIR/$tdir/$tfile-0 $DIR/$tdir/$tfile"
785 test_7_cycle "$first" "$lost" "$last" || error "Test 7c.1 failed"
787 first="createmany -o $DIR/$tdir/$tfile- 2"
788 lost="rm $MOUNT2/$tdir/$tfile-0; mkdir $MOUNT2/$tdir/$tfile-0"
789 last="mv $DIR/$tdir/$tfile-1 $DIR/$tdir/$tfile-0"
790 test_7_cycle "$first" "$lost" "$last" || error "Test 7c.2 failed"
792 first="createmany -o $DIR/$tdir/$tfile- 1; mkdir $DIR/$tdir/$tfile-1-0"
793 lost="rmdir $MOUNT2/$tdir/$tfile-1-0; createmany -o $MOUNT2/$tdir/$tfile-1- 1"
794 last="mv $DIR/$tdir/$tfile-1-0 $DIR/$tdir/$tfile-0"
795 test_7_cycle "$first" "$lost" "$last" || error "Test 7c.3 failed"
797 first="createmany -o $DIR/$tdir/$tfile- 1"
798 lost="mv $MOUNT2/$tdir/$tfile-0 $MOUNT2/$tdir/$tfile"
799 last="mv $DIR/$tdir/$tfile $DIR/$tdir/$tfile-0"
800 test_7_cycle "$first" "$lost" "$last" || error "Test 7c.4 failed"
803 run_test 7c "create, {lost}, rename"
806 first="createmany -o $DIR/$tdir/$tfile- 1; rm $DIR/$tdir/$tfile-0"
807 lost="createmany -o $MOUNT2/$tdir/$tfile- 1; rm $MOUNT2/$tdir/$tfile-0"
808 last="createmany -o $DIR/$tdir/$tfile- 1"
809 test_7_cycle "$first" "$lost" "$last" && error "Test 7d.1 failed"
811 first="createmany -o $DIR/$tdir/$tfile- 1; rm $DIR/$tdir/$tfile-0"
812 lost="mkdir $MOUNT2/$tdir/$tfile-0; rmdir $MOUNT2/$tdir/$tfile-0"
813 last="mkdir $DIR/$tdir/$tfile-0"
814 test_7_cycle "$first" "$lost" "$last" && error "Test 7d.2 failed"
816 first="mkdir $DIR/$tdir/$tfile-0; rmdir $DIR/$tdir/$tfile-0"
817 lost="createmany -o $MOUNT2/$tdir/$tfile- 1; mv $MOUNT2/$tdir/$tfile-0 $MOUNT2/$tdir/$tfile-1"
818 last="createmany -o $DIR/$tdir/$tfile- 1"
819 test_7_cycle "$first" "$lost" "$last" && error "Test 7d.3 failed"
822 run_test 7d "unlink, {lost}, create"
825 first="createmany -o $DIR/$tdir/$tfile- 1; rm $DIR/$tdir/$tfile-0"
826 lost="createmany -o $MOUNT2/$tdir/$tfile- 1; rm $MOUNT2/$tdir/$tfile-0;createmany -o $MOUNT2/$tdir/$tfile- 1"
827 last="rm $DIR/$tdir/$tfile-0"
828 test_7_cycle "$first" "$lost" "$last" || error "Test 7e.1 failed"
830 first="mkdir $DIR/$tdir/$tfile-0; rmdir $DIR/$tdir/$tfile-0"
831 lost="mkdir $MOUNT2/$tdir/$tfile-0; rmdir $MOUNT2/$tdir/$tfile-0; mkdir $MOUNT2/$tdir/$tfile-0"
832 last="rmdir $DIR/$tdir/$tfile-0"
833 test_7_cycle "$first" "$lost" "$last" || error "Test 7e.2 failed"
835 first="createmany -o $DIR/$tdir/$tfile- 1; rm $DIR/$tdir/$tfile-0"
836 lost="mkdir $MOUNT2/$tdir/$tfile-0"
837 last="rmdir $DIR/$tdir/$tfile-0"
838 test_7_cycle "$first" "$lost" "$last" || error "Test 7e.3 failed"
840 first="mkdir $DIR/$tdir/$tfile-0; rmdir $DIR/$tdir/$tfile-0"
841 lost="createmany -o $MOUNT2/$tdir/$tfile- 1"
842 last="rm $DIR/$tdir/$tfile-0"
843 test_7_cycle "$first" "$lost" "$last" || error "Test 7e.4 failed"
845 first="createmany -o $DIR/$tdir/$tfile- 2; rm $DIR/$tdir/$tfile-0"
846 lost="mv $MOUNT2/$tdir/$tfile-1 $MOUNT2/$tdir/$tfile-0"
847 last="rm $DIR/$tdir/$tfile-0"
848 test_7_cycle "$first" "$lost" "$last" || error "Test 7e.5 failed"
851 run_test 7e "unlink, {lost}, unlink"
854 first="createmany -o $DIR/$tdir/$tfile- 1; rm $DIR/$tdir/$tfile-0"
855 lost="createmany -o $MOUNT2/$tdir/$tfile- 1"
856 last="mv $DIR/$tdir/$tfile-0 $DIR/$tdir/$tfile-1"
857 test_7_cycle "$first" "$lost" "$last" || error "Test 7f.1 failed"
859 first="createmany -o $DIR/$tdir/$tfile- 2; rm $DIR/$tdir/$tfile-0"
860 lost="createmany -o $MOUNT2/$tdir/$tfile- 1"
861 last="mv $DIR/$tdir/$tfile-1 $DIR/$tdir/$tfile-0"
862 test_7_cycle "$first" "$lost" "$last" || error "Test 7f.2 failed"
864 first="mkdir $DIR/$tdir/$tfile; createmany -o $DIR/$tdir/$tfile- 1; rmdir $DIR/$tdir/$tfile"
865 lost="mkdir $MOUNT2/$tdir/$tfile"
866 last="mv $DIR/$tdir/$tfile-0 $DIR/$tdir/$tfile"
867 test_7_cycle "$first" "$lost" "$last" || error "Test 7f.3 failed"
869 first="createmany -o $DIR/$tdir/$tfile- 2; rm $DIR/$tdir/$tfile-0"
870 lost="mv $MOUNT2/$tdir/$tfile-1 $MOUNT2/$tdir/$tfile-0"
871 last="mv $DIR/$tdir/$tfile-0 $DIR/$tdir/$tfile-1"
872 test_7_cycle "$first" "$lost" "$last" || error "Test 7f.4 failed"
874 first="createmany -o $DIR/$tdir/$tfile- 2; rm $DIR/$tdir/$tfile-0"
875 lost="mkdir $MOUNT2/$tdir/$tfile-0"
876 last="mv $DIR/$tdir/$tfile-1 $DIR/$tdir/$tfile-0"
877 test_7_cycle "$first" "$lost" "$last" || error "Test 7f.5 failed"
880 run_test 7f "unlink, {lost}, rename"
883 first="createmany -o $DIR/$tdir/$tfile- 1; mv $DIR/$tdir/$tfile-0 $DIR/$tdir/$tfile-1"
884 lost="mkdir $MOUNT2/$tdir/$tfile-0;rmdir $MOUNT2/$tdir/$tfile-0"
885 last="createmany -o $DIR/$tdir/$tfile- 1"
886 test_7_cycle "$first" "$lost" "$last" && error "Test 7g.1 failed"
888 first="createmany -o $DIR/$tdir/$tfile- 2; mv $DIR/$tdir/$tfile-0 $DIR/$tdir/$tfile-1"
889 lost="createmany -o $MOUNT2/$tdir/$tfile- 1; rm $MOUNT2/$tdir/$tfile-0"
890 last="mkdir $DIR/$tdir/$tfile-0"
891 test_7_cycle "$first" "$lost" "$last" && error "Test 7g.2 failed"
893 first="createmany -o $DIR/$tdir/$tfile- 1; mv $DIR/$tdir/$tfile-0 $DIR/$tdir/$tfile"
894 lost="createmany -o $MOUNT2/$tdir/$tfile- 1"
895 last="link $DIR/$tdir/$tfile-0 $DIR/$tdir/$tfile-1"
896 if [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.5.1) ]
898 test_7_cycle "$first" "$lost" "$last" ||
899 error "Test 7g.3 failed"
900 else #LU-4442 LU-3528
901 test_7_cycle "$first" "$lost" "$last" &&
902 error "Test 7g.3 failed"
906 run_test 7g "rename, {lost}, create"
909 first="createmany -o $DIR/$tdir/$tfile- 1; mv $DIR/$tdir/$tfile-0 $DIR/$tdir/$tfile-1"
910 lost="createmany -o $MOUNT2/$tdir/$tfile- 1"
911 last="rm $DIR/$tdir/$tfile-0"
912 test_7_cycle "$first" "$lost" "$last" || error "Test 7h.1 failed"
914 first="createmany -o $DIR/$tdir/$tfile- 2; mv $DIR/$tdir/$tfile-1 $DIR/$tdir/$tfile-0"
915 lost="rm $MOUNT2/$tdir/$tfile-0; createmany -o $MOUNT2/$tdir/$tfile- 1"
916 last="rm $DIR/$tdir/$tfile-0"
917 test_7_cycle "$first" "$lost" "$last" || error "Test 7h.2 failed"
919 first="createmany -o $DIR/$tdir/$tfile- 1; mkdir $DIR/$tdir/$tfile; mv $DIR/$tdir/$tfile-0 $DIR/$tdir/$tfile"
920 lost="rm $MOUNT2/$tdir/$tfile/$tfile-0"
921 last="rmdir $DIR/$tdir/$tfile"
922 #test_7_cycle "$first" "$lost" "$last" || error "Test 7h.3 failed"
925 run_test 7h "rename, {lost}, unlink"
928 first="createmany -o $DIR/$tdir/$tfile- 1; mv $DIR/$tdir/$tfile-0 $DIR/$tdir/$tfile-1"
929 lost="createmany -o $MOUNT2/$tdir/$tfile- 1"
930 last="mv $DIR/$tdir/$tfile-0 $DIR/$tdir/$tfile-1"
931 test_7_cycle "$first" "$lost" "$last" || error "Test 7i.1 failed"
933 first="createmany -o $DIR/$tdir/$tfile- 1; mv $DIR/$tdir/$tfile-0 $DIR/$tdir/$tfile-1"
934 lost="mkdir $MOUNT2/$tdir/$tfile-0"
935 last="mv $DIR/$tdir/$tfile-1 $DIR/$tdir/$tfile-0"
936 test_7_cycle "$first" "$lost" "$last" || error "Test 7i.1 failed"
938 first="createmany -o $DIR/$tdir/$tfile- 3; mv $DIR/$tdir/$tfile-1 $DIR/$tdir/$tfile-0"
939 lost="mv $MOUNT2/$tdir/$tfile-2 $MOUNT2/$tdir/$tfile-0"
940 last="mv $DIR/$tdir/$tfile-0 $DIR/$tdir/$tfile-2"
941 test_7_cycle "$first" "$lost" "$last" || error "Test 7i.3 failed"
943 first="createmany -o $DIR/$tdir/$tfile- 2; mv $DIR/$tdir/$tfile-0 $DIR/$tdir/$tfile"
944 lost="rm $MOUNT2/$tdir/$tfile-1"
945 last="mv $DIR/$tdir/$tfile $DIR/$tdir/$tfile-1"
946 test_7_cycle "$first" "$lost" "$last" || error "Test 7i.4 failed"
949 run_test 7i "rename, {lost}, rename"
951 # test set #8: orphan handling bug 15392.
952 # Unlink during recovery creates orphan always just in case some late open may
953 # arrive. These orphans will be removed after recovery anyway.
954 # Tests check that valid create,unlink,create sequence will work in this case
955 # too but not fail on second create due to orphan found.
958 local var=${SINGLEMDS}_svc
959 zconf_mount $CLIENT2 $MOUNT2
961 do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
963 do_node $CLIENT1 mcreate $DIR/$tfile
964 do_node $CLIENT1 mkdir $DIR/$tfile-2
965 replay_barrier $SINGLEMDS
966 # missed replay from client2 will lead to recovery by versions
967 do_node $CLIENT2 touch $MOUNT2/$tfile-2/$tfile
968 do_node $CLIENT1 rm $DIR/$tfile || return 1
969 do_node $CLIENT1 touch $DIR/$tfile || return 2
971 zconf_umount $CLIENT2 $MOUNT2
972 facet_failover $SINGLEMDS
973 client_up $CLIENT1 || return 6
975 do_node $CLIENT1 rm $DIR/$tfile || error "$tfile doesn't exists"
978 run_test 8a "create | unlink, create shouldn't fail"
981 local var=${SINGLEMDS}_svc
982 zconf_mount $CLIENT2 $MOUNT2
984 do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
986 do_node $CLIENT1 touch $DIR/$tfile
987 do_node $CLIENT1 mkdir $DIR/$tfile-2
988 replay_barrier $SINGLEMDS
989 # missed replay from client2 will lead to recovery by versions
990 do_node $CLIENT2 touch $MOUNT2/$tfile-2/$tfile
991 do_node $CLIENT1 rm -f $MOUNT1/$tfile || return 1
992 do_node $CLIENT1 mcreate $MOUNT1/$tfile || return 2
994 zconf_umount $CLIENT2 $MOUNT2
995 facet_failover $SINGLEMDS
996 client_up $CLIENT1 || return 6
998 do_node $CLIENT1 rm $MOUNT1/$tfile || error "$tfile doesn't exists"
1001 run_test 8b "create | unlink, create shouldn't fail"
1004 local var=${SINGLEMDS}_svc
1005 zconf_mount $CLIENT2 $MOUNT2
1007 do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
1009 do_node $CLIENT1 touch $DIR/$tfile
1010 do_node $CLIENT1 mkdir $DIR/$tfile-2
1011 replay_barrier $SINGLEMDS
1012 # missed replay from client2 will lead to recovery by versions
1013 do_node $CLIENT2 touch $MOUNT2/$tfile-2/$tfile
1014 do_node $CLIENT1 rm -f $MOUNT1/$tfile || return 1
1015 do_node $CLIENT1 mkdir $MOUNT1/$tfile || return 2
1017 zconf_umount $CLIENT2 $MOUNT2
1018 facet_failover $SINGLEMDS
1019 client_up $CLIENT1 || return 6
1021 do_node $CLIENT1 rmdir $MOUNT1/$tfile || error "$tfile doesn't exists"
1024 run_test 8c "create | unlink, create shouldn't fail"
1027 # This test uses three Lustre clients on two hosts.
1029 # Lustre Client 1: $CLIENT1:$MOUNT ($DIR)
1030 # Lustre Client 2: $CLIENT2:$MOUNT2 ($DIR2)
1031 # Lustre Client 3: $CLIENT2:$MOUNT1 ($DIR1)
1033 test_10b() { # former test_2b
1036 local var=${SINGLEMDS}_svc
1038 [ -n "$CLIENTS" ] || { skip "Need two or more clients" && exit 0; }
1039 [ $CLIENTCOUNT -ge 2 ] || \
1040 { skip "Need two or more clients, have $CLIENTCOUNT" && exit 0; }
1042 do_facet $SINGLEMDS "$LCTL set_param mdd.${!var}.sync_permission=0"
1043 do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
1045 zconf_mount $CLIENT1 $MOUNT
1046 zconf_mount $CLIENT2 $MOUNT1
1047 zconf_mount $CLIENT2 $MOUNT2
1048 do_node $CLIENT1 openfile -f O_RDWR:O_CREAT -m 0644 $DIR/$tfile-a
1049 do_node $CLIENT1 openfile -f O_RDWR:O_CREAT -m 0644 $DIR/$tfile-b
1052 # Save an MDT transaction number before recovery.
1054 do_node $CLIENT1 touch $DIR1/$tfile
1055 pre=$(get_version $CLIENT1 $DIR/$tfile)
1058 # Comments on the replay sequence state the expected result
1062 # "U" Unable to replay.
1065 replay_barrier $SINGLEMDS
1066 do_node $CLIENT1 chmod 666 $DIR/$tfile-a # R
1067 do_node $CLIENT2 chmod 666 $DIR1/$tfile-b # R
1068 do_node $CLIENT2 chgrp $RUNAS_GID $DIR2/$tfile-a # U
1069 do_node $CLIENT1 chown $RUNAS_ID:$RUNAS_GID $DIR/$tfile-a # J
1070 do_node $CLIENT2 $TRUNCATE $DIR2/$tfile-b 1 # U
1071 do_node $CLIENT2 chgrp $RUNAS_GID $DIR1/$tfile-b # R
1072 do_node $CLIENT1 chown $RUNAS_ID:$RUNAS_GID $DIR/$tfile-b # R
1073 zconf_umount $CLIENT2 $MOUNT2
1074 facet_failover $SINGLEMDS
1076 client_evicted $CLIENT1 || error "$CLIENT1:$MOUNT not evicted"
1077 client_up $CLIENT2 || error "$CLIENT2:$MOUNT1 evicted"
1080 # Check the MDT epoch. $post must be the first transaction
1081 # number assigned after recovery.
1083 do_node $CLIENT2 chmod 666 $DIR1/$tfile
1084 post=$(get_version $CLIENT2 $DIR1/$tfile)
1085 if (($(($pre >> 32)) == $((post >> 32)))); then
1086 error "epoch not changed: pre $pre, post $post"
1089 if (($(($post & 0x00000000ffffffff)) != 1)); then
1090 error "transno should restart from one: got $post"
1093 do_node $CLIENT2 stat $DIR1/$tfile-a
1094 do_node $CLIENT2 stat $DIR1/$tfile-b
1096 do_node $CLIENT2 $CHECKSTAT -p 0666 -u \\\#$UID -g \\\#$UID \
1097 $DIR1/$tfile-a || error "$DIR/$tfile-a: unexpected state"
1098 do_node $CLIENT2 $CHECKSTAT -p 0666 -u \\\#$RUNAS_ID -g \\\#$RUNAS_GID \
1099 $DIR1/$tfile-b || error "$DIR/$tfile-b: unexpected state"
1101 zconf_umount $CLIENT2 $MOUNT1
1103 run_test 10b "3 clients: some, none, and all reqs replayed"
1105 # test set #11: operations in single directory
1107 local var=${SINGLEMDS}_svc
1108 zconf_mount $CLIENT2 $MOUNT2
1110 do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
1112 replay_barrier $SINGLEMDS
1114 do_node $CLIENT1 createmany -o $DIR/$tfile-1- 100 &
1116 do_node $CLIENT2 createmany -o $MOUNT2/$tfile-2- 100
1117 zconf_umount $CLIENT2 $MOUNT2
1120 facet_failover $SINGLEMDS
1121 # recovery shouldn't fail due to missing client 2
1122 client_up $CLIENT1 || return 1
1123 # All files from client1 should have been replayed
1124 do_node $CLIENT1 unlinkmany $DIR/$tfile-1- 100 || return 2
1126 [ -e $DIR/$tdir/$tfile-2-0 ] && error "$tfile-2-0 exists"
1129 run_test 11a "concurrent creates don't affect each other"
1132 local var=${SINGLEMDS}_svc
1133 zconf_mount $CLIENT2 $MOUNT2
1135 do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
1137 do_node $CLIENT2 createmany -o $MOUNT2/$tfile-2- 100
1139 replay_barrier $SINGLEMDS
1140 do_node $CLIENT1 createmany -o $DIR/$tfile-1- 100 &
1142 do_node $CLIENT2 unlinkmany -o $MOUNT2/$tfile-2- 100
1143 zconf_umount $CLIENT2 $MOUNT2
1146 facet_failover $SINGLEMDS
1147 # recovery shouldn't fail due to missing client 2
1148 client_up $CLIENT1 || return 1
1149 # All files from client1 should have been replayed
1150 do_node $CLIENT1 unlinkmany $DIR/$tfile-1- 100 || return 2
1152 [ -e $DIR/$tdir/$tfile-2-0 ] && error "$tfile-2-0 exists"
1155 run_test 11b "concurrent creates and unlinks don't affect each other"
1157 # test set #12: lock replay with VBR, bug 16356
1158 test_12a() { # former test_2a
1159 local var=${SINGLEMDS}_svc
1160 zconf_mount $CLIENT2 $MOUNT2
1162 do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
1164 do_node $CLIENT2 mkdir -p $MOUNT2/$tdir
1165 replay_barrier $SINGLEMDS
1166 do_node $CLIENT2 mcreate $MOUNT2/$tdir/$tfile
1167 do_node $CLIENT1 createmany -o $DIR/$tfile- 25
1168 #client1 read data from client2 which will be lost
1169 do_node $CLIENT1 $CHECKSTAT $DIR/$tdir/$tfile
1170 do_node $CLIENT1 createmany -o $DIR/$tfile-3- 25
1171 zconf_umount $CLIENT2 $MOUNT2
1173 facet_failover $SINGLEMDS
1174 # recovery shouldn't fail due to missing client 2
1175 client_up $CLIENT1 || return 1
1177 # All 50 files should have been replayed
1178 do_node $CLIENT1 unlinkmany $DIR/$tfile- 25 || return 2
1179 do_node $CLIENT1 unlinkmany $DIR/$tfile-3- 25 || return 3
1180 do_node $CLIENT1 $CHECKSTAT $DIR/$tdir/$tfile && return 4
1184 run_test 12a "lost data due to missed REMOTE client during replay"
1186 #restore COS setting
1187 restore_lustre_params < $cos_param_file
1188 rm -f $cos_param_file
1190 [ "$CLIENTS" ] && zconf_mount_clients $CLIENTS $DIR
1193 check_and_cleanup_lustre