common/xfs: refactor commands to select a particular xfs backing device
[xfstests-dev.git] / tests / xfs / 216
1 #! /bin/bash
2 # SPDX-License-Identifier: GPL-2.0
3 # Copyright (c) 2008 Silicon Graphics, Inc.  All Rights Reserved.
4 #
5 # FS QA Test No. 216
6 #
7 # log size mkfs test - ensure the log size scaling works for small filesystems
8 #
9 seq=`basename $0`
10 seqres=$RESULT_DIR/$seq
11 echo "QA output created by $seq"
12
13 here=`pwd`
14 tmp=/tmp/$$
15 status=1        # failure is the default!
16 trap "_cleanup; exit \$status" 0 1 2 3 15
17
18 _cleanup()
19 {
20     cd /
21     rm -f $tmp.*
22 }
23
24 # get standard environment, filters and checks
25 . ./common/rc
26 . ./common/filter
27
28 # real QA test starts here
29 _supported_fs xfs
30
31 _require_scratch
32 _scratch_mkfs_xfs >/dev/null 2>&1
33 _scratch_mount
34
35 _require_loop
36 LOOP_DEV=$SCRATCH_MNT/test_fs
37 LOOP_MNT=$SCRATCH_MNT/test_fs_dir
38
39 loop_mkfs_opts=
40 $MKFS_XFS_PROG 2>&1 | grep -q rmapbt && \
41         loop_mkfs_opts="$loop_mkfs_opts -m rmapbt=0"
42 $MKFS_XFS_PROG 2>&1 | grep -q reflink && \
43         loop_mkfs_opts="$loop_mkfs_opts -m reflink=0"
44
45 _do_mkfs()
46 {
47         for i in $*; do
48                 echo -n "fssize=${i}g "
49                 $MKFS_XFS_PROG -f -b size=4096 -l version=2 \
50                         -d name=$LOOP_DEV,size=${i}g $loop_mkfs_opts |grep log
51                 mount -o loop -t xfs $LOOP_DEV $LOOP_MNT
52                 echo "test write" > $LOOP_MNT/test
53                 umount $LOOP_MNT > /dev/null 2>&1
54         done
55 }
56 # make large holey file
57 $XFS_IO_PROG -f -c "truncate 256g" $LOOP_DEV
58
59 #make loopback mount dir
60 mkdir $LOOP_MNT
61
62 # walk over standard sizes (up to 256GB)
63 _do_mkfs 1 2 4 8 16 32 64 128 256
64
65 status=0
66 exit