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
36 _require_dm_target flakey
40 _scratch_mkfs >> $seqres.full 2>&1
42 SAVE_MOUNT_OPTIONS="$MOUNT_OPTIONS"
43 MOUNT_OPTIONS="$MOUNT_OPTIONS -o inode_cache,commit=100"
45 # create a basic flakey device that will never error out
52 inode_id=`stat $1 | grep Inode: | $AWK_PROG '{print $4}'`
56 $XFS_IO_PROG -f -c "pwrite 0 10M" -c "fsync" \
57 $SCRATCH_MNT/data >& /dev/null
59 inode_id=`_get_inode_id "$SCRATCH_MNT/data"`
60 rm -f $SCRATCH_MNT/data
64 mkdir $SCRATCH_MNT/dir_$i
65 new_inode_id=`_get_inode_id $SCRATCH_MNT/dir_$i`
66 if [ $new_inode_id -eq $inode_id ]
68 $XFS_IO_PROG -f -c "pwrite 0 1M" -c "fsync" \
69 $SCRATCH_MNT/dir_$i/data1 >& /dev/null
78 # restore previous mount options
79 export MOUNT_OPTIONS="$SAVE_MOUNT_OPTIONS"
81 # ok mount so that any recovery that needs to happen is done
82 if [ $new_inode_id -eq $inode_id ];then
83 _load_flakey_table $FLAKEY_ALLOW_WRITES
88 # make sure we got a valid fs after replay
89 _check_scratch_fs $FLAKEY_DEV