2 # SPDX-License-Identifier: GPL-2.0
3 # Copyright (c) 2014 Fujitsu. All Rights Reserved.
5 # FS QA Test No. btrfs/049
7 # Regression test for btrfs inode caching vs tree log which was
8 # addressed by the following kernel patch.
10 # Btrfs: fix inode caching vs tree log
13 seqres=$RESULT_DIR/$seq
14 echo "QA output created by $seq"
19 status=1 # failure is the default!
20 trap "_cleanup; exit \$status" 0 1 2 3 15
28 # get standard environment, filters and checks
33 # real QA test starts here
37 _require_dm_target flakey
41 _scratch_mkfs >> $seqres.full 2>&1
43 SAVE_MOUNT_OPTIONS="$MOUNT_OPTIONS"
44 MOUNT_OPTIONS="$MOUNT_OPTIONS -o inode_cache,commit=100"
46 # create a basic flakey device that will never error out
53 inode_id=`stat $1 | grep Inode: | $AWK_PROG '{print $4}'`
57 $XFS_IO_PROG -f -c "pwrite 0 10M" -c "fsync" \
58 $SCRATCH_MNT/data >& /dev/null
60 inode_id=`_get_inode_id "$SCRATCH_MNT/data"`
61 rm -f $SCRATCH_MNT/data
65 mkdir $SCRATCH_MNT/dir_$i
66 new_inode_id=`_get_inode_id $SCRATCH_MNT/dir_$i`
67 if [ $new_inode_id -eq $inode_id ]
69 $XFS_IO_PROG -f -c "pwrite 0 1M" -c "fsync" \
70 $SCRATCH_MNT/dir_$i/data1 >& /dev/null
79 # restore previous mount options
80 export MOUNT_OPTIONS="$SAVE_MOUNT_OPTIONS"
82 # ok mount so that any recovery that needs to happen is done
83 if [ $new_inode_id -eq $inode_id ];then
84 _load_flakey_table $FLAKEY_ALLOW_WRITES
89 # make sure we got a valid fs after replay
90 _check_scratch_fs $FLAKEY_DEV