On Sat, Oct 16, 2021 at 10:14:56AM +0800, Zorro Lang wrote: > Sometimes g/648 fail to unmount dmerror with this error: > > umount: /mnt/xfstests/scratch: target is busy. > > Even worse, it will cause all later test cases fail as: > > mount: bad usage > Try 'mount --help' for more information. > check: failed to mount $SCRATCH_DEV using specified options > Interrupted! > > So we shouldn't _fail directly if dmerror_unmount fails, use a while > loop to try to make sure it's unmounted. Can we preserve the "iteration XXX scratch unmount failed" message, please? --D > Signed-off-by: Zorro Lang <zlang@xxxxxxxxxx> > --- > tests/generic/648 | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/tests/generic/648 b/tests/generic/648 > index 83dd111d..218f207b 100755 > --- a/tests/generic/648 > +++ b/tests/generic/648 > @@ -104,7 +104,7 @@ for i in $(seq 1 $((25 * TIME_FACTOR)) ); do > wait > /dev/null 2>&1 > ps -e | grep fsstress > /dev/null 2>&1 > done > - for ((i = 0; i < 10; i++)); do > + for ((j = 0; j < 10; j++)); do > test -e "$snap_aliveflag" || break > sleep 1 > done > @@ -112,7 +112,11 @@ for i in $(seq 1 $((25 * TIME_FACTOR)) ); do > # Mount again to replay log after loading working table, so we have a > # consistent fs after test. > $UMOUNT_PROG $loopmnt > - _dmerror_unmount || _fail "iteration $i scratch unmount failed" > + _dmerror_unmount > /dev/null 2>&1 > + while [ $? -ne 0 ]; do > + sleep 1 > + _dmerror_unmount > /dev/null 2>&1 > + done > _dmerror_load_working_table > if ! _dmerror_mount; then > _metadump_dev $DMERROR_DEV $seqres.scratch.$i.md > -- > 2.31.1 >