On Mon, May 09, 2022 at 02:56:57PM +0800, Yang Xu wrote: > When testing this case on my machine, it reports the following error: > umount: /mnt/xfstests/scratch: target is busy. > xfs_db: /dev/sda11 contains a mounted filesystem > > scratch_unmount failed, so _scratch_xfs_db reports scratch_dev is a > mounted filesystem. It seems filesystem has something to be doing. > > To avoid this, just add a 100ms sleep before scratch_umount. > > Signed-off-by: Yang Xu <xuyang2018.jy@xxxxxxxxxxx> > --- > tests/xfs/298 | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/tests/xfs/298 b/tests/xfs/298 > index b0153ebf..17510379 100755 > --- a/tests/xfs/298 > +++ b/tests/xfs/298 > @@ -51,6 +51,7 @@ while [ $SIZE -lt 1024 ];do > rm $SYMLINK_FILE > # umount and check the number of extents on the inode. Should be 0. > cd / > + sleep 0.1 Hi Actually I was wondering if we can add a while loop trying in _scratch_unmount, to avoid some random "device busy" problem, likes: Change _scratch_unmount to __scratch_unmount, then: _scratch_unmount() { local n local is_unmounted=1 __scratch_unmount > $tmp.scratch_unmount.err 2>&1 if [ $? -ne 0 -a "$MULTI_SCRATCH_UNMOUNT" = "yes" ];then for ((n=0; n<5; n++));do sleep 0.1 __scratch_unmount >> $tmp.scratch_unmount.err 2>&1 if [ $? -eq 0 ];then is_unmounted=0 break fi done else is_unmounted=0 fi if [ $is_unmounted -ne 0 ];then cat $tmp.scratch_unmount.err fi rm -f $tmp.scratch_unmount.err return $is_unmounted } This's just an idea out of my head, hope to hear more suggestions from other forks. Thanks, Zorro > _scratch_unmount >/dev/null 2>&1 > _scratch_xfs_db -c "inode $inode" -c "p core.nextents" > > -- > 2.23.0 >