]> www.infradead.org Git - users/hch/xfstests-dev.git/commitdiff
xfs/27[24]: adapt for checking files on the realtime volume
authorDarrick J. Wong <djwong@kernel.org>
Tue, 6 Feb 2024 00:06:49 +0000 (16:06 -0800)
committerDarrick J. Wong <djwong@kernel.org>
Fri, 1 Nov 2024 20:42:00 +0000 (13:42 -0700)
Adapt both tests to behave properly if the two files being tested are on
the realtime volume.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
tests/xfs/272
tests/xfs/274

index 3ae9aa435c441ccdc6019a32203847fab840a5f9..f19c82012b055dc77a33ecdf312947a71a6d5460 100755 (executable)
@@ -38,26 +38,40 @@ $here/src/punch-alternating $SCRATCH_MNT/urk >> $seqres.full
 ino=$(stat -c '%i' $SCRATCH_MNT/urk)
 
 echo "Get fsmap" | tee -a $seqres.full
-$XFS_IO_PROG -c 'fsmap -v' $SCRATCH_MNT >> $seqres.full
 $XFS_IO_PROG -c 'fsmap -v' $SCRATCH_MNT | tr '[]()' '    ' > $TEST_DIR/fsmap
+cat $TEST_DIR/fsmap >> $seqres.full
 
 echo "Get bmap" | tee -a $seqres.full
-$XFS_IO_PROG -c 'bmap -v' $SCRATCH_MNT/urk >> $seqres.full
 $XFS_IO_PROG -c 'bmap -v' $SCRATCH_MNT/urk | grep '^[[:space:]]*[0-9]*:' | grep -v 'hole' | tr '[]()' '    ' > $TEST_DIR/bmap
+cat $TEST_DIR/bmap >> $seqres.full
 
 echo "Check bmap and fsmap" | tee -a $seqres.full
-cat $TEST_DIR/bmap | while read ext offrange colon blockrange ag agrange total crap; do
-       qstr="^[[:space:]]*[0-9]*:[[:space:]]*[0-9]*:[0-9]*[[:space:]]*${blockrange} :[[:space:]]*${ino}[[:space:]]*${offrange}[[:space:]]*${ag}[[:space:]]*${agrange}[[:space:]]*${total}(| [01]*)$"
-       echo "${qstr}" >> $seqres.full
-       grep "${qstr}" $TEST_DIR/fsmap >> $seqres.full
-       found=$(grep -E -c "${qstr}" $TEST_DIR/fsmap)
-       test $found -eq 1 || echo "Unexpected output for offset ${offrange}."
-done
+if $XFS_IO_PROG -c 'stat -v' $SCRATCH_MNT/urk | grep -q realtime; then
+       # file on rt volume
+       cat $TEST_DIR/bmap | while read ext offrange colon rtblockrange total crap; do
+               qstr="^[[:space:]]*[0-9]*:[[:space:]]*[0-9]*:[0-9]*[[:space:]]*${rtblockrange} :[[:space:]]*${ino}[[:space:]]*${offrange}[[:space:]]*${total}(| [01]*)$"
+               echo "${qstr}" >> $seqres.full
+               grep "${qstr}" $TEST_DIR/fsmap >> $seqres.full
+               found=$(grep -E -c "${qstr}" $TEST_DIR/fsmap)
+               test $found -eq 1 || echo "Unexpected output for offset ${offrange}."
+       done
 
-echo "Check device field of FS metadata and regular file"
-data_dev=$(grep 'inode btree' $TEST_DIR/fsmap | head -n 1 | awk '{print $2}')
-rt_dev=$(grep "${ino}[[:space:]]*[0-9]*\.\.[0-9]*" $TEST_DIR/fsmap | head -n 1 | awk '{print $2}')
-test "${data_dev}" = "${rt_dev}" || echo "data ${data_dev} realtime ${rt_dev}?"
+       echo "Check device field of FS metadata and regular file"
+else
+       # file on data volume
+       cat $TEST_DIR/bmap | while read ext offrange colon blockrange ag agrange total crap; do
+               qstr="^[[:space:]]*[0-9]*:[[:space:]]*[0-9]*:[0-9]*[[:space:]]*${blockrange} :[[:space:]]*${ino}[[:space:]]*${offrange}[[:space:]]*${ag}[[:space:]]*${agrange}[[:space:]]*${total}(| [01]*)$"
+               echo "${qstr}" >> $seqres.full
+               grep "${qstr}" $TEST_DIR/fsmap >> $seqres.full
+               found=$(grep -E -c "${qstr}" $TEST_DIR/fsmap)
+               test $found -eq 1 || echo "Unexpected output for offset ${offrange}."
+       done
+
+       echo "Check device field of FS metadata and regular file"
+       data_dev=$(grep 'inode btree' $TEST_DIR/fsmap | head -n 1 | awk '{print $2}')
+       rt_dev=$(grep "${ino}[[:space:]]*[0-9]*\.\.[0-9]*" $TEST_DIR/fsmap | head -n 1 | awk '{print $2}')
+       test "${data_dev}" = "${rt_dev}" || echo "data ${data_dev} realtime ${rt_dev}?"
+fi
 
 # success, all done
 status=0
index d06e7fc13619e96228939457b3b55861aaf32637..fdea4d0242904ad6ccd56d85f54bd771690a3d3e 100755 (executable)
@@ -38,34 +38,58 @@ _cp_reflink $SCRATCH_MNT/f1 $SCRATCH_MNT/f2
 ino=$(stat -c '%i' $SCRATCH_MNT/f1)
 
 echo "Get fsmap" | tee -a $seqres.full
-$XFS_IO_PROG -c 'fsmap -v' $SCRATCH_MNT >> $seqres.full
 $XFS_IO_PROG -c 'fsmap -v' $SCRATCH_MNT | tr '[]()' '    ' > $TEST_DIR/fsmap
+cat $TEST_DIR/fsmap >> $seqres.full
 
 echo "Get f1 bmap" | tee -a $seqres.full
-$XFS_IO_PROG -c 'bmap -v' $SCRATCH_MNT/f1 >> $seqres.full
 $XFS_IO_PROG -c 'bmap -v' $SCRATCH_MNT/f1 | grep '^[[:space:]]*[0-9]*:' | grep -v 'hole' | tr '[]()' '    ' > $TEST_DIR/bmap
+cat $TEST_DIR/bmap >> $seqres.full
 
-echo "Check f1 bmap and fsmap" | tee -a $seqres.full
-cat $TEST_DIR/bmap | while read ext offrange colon blockrange ag agrange total crap; do
-       qstr="^[[:space:]]*[0-9]*:[[:space:]]*[0-9]*:[0-9]*[[:space:]]*${blockrange} :[[:space:]]*${ino}[[:space:]]*${offrange}[[:space:]]*${ag}[[:space:]]*${agrange}[[:space:]]*${total} 010[01]{4}$"
-       echo "${qstr}" >> $seqres.full
-       grep "${qstr}" $TEST_DIR/fsmap >> $seqres.full
-       found=$(grep -E -c "${qstr}" $TEST_DIR/fsmap)
-       test $found -eq 1 || echo "Unexpected output for offset ${offrange}."
-done
+if _xfs_is_realtime_file $SCRATCH_MNT/f1 && ! _xfs_has_feature $SCRATCH_MNT rtgroups; then
+       # file on rt volume
+       echo "Check f1 bmap and fsmap" | tee -a $seqres.full
+       cat $TEST_DIR/bmap | while read ext offrange colon rtblockrange total crap; do
+               qstr="^[[:space:]]*[0-9]*:[[:space:]]*[0-9]*:[0-9]*[[:space:]]*${rtblockrange} :[[:space:]]*${ino}[[:space:]]*${offrange}[[:space:]]*${total} 010[01]{4}$"
+               echo "${qstr}" >> $seqres.full
+               grep "${qstr}" $TEST_DIR/fsmap >> $seqres.full
+               found=$(grep -E -c "${qstr}" $TEST_DIR/fsmap)
+               test $found -eq 1 || echo "Unexpected output for offset ${offrange}."
+       done
+else
+       # file on data volume
+       echo "Check f1 bmap and fsmap" | tee -a $seqres.full
+       cat $TEST_DIR/bmap | while read ext offrange colon blockrange ag agrange total crap; do
+               qstr="^[[:space:]]*[0-9]*:[[:space:]]*[0-9]*:[0-9]*[[:space:]]*${blockrange} :[[:space:]]*${ino}[[:space:]]*${offrange}[[:space:]]*${ag}[[:space:]]*${agrange}[[:space:]]*${total} 010[01]{4}$"
+               echo "${qstr}" >> $seqres.full
+               grep "${qstr}" $TEST_DIR/fsmap >> $seqres.full
+               found=$(grep -E -c "${qstr}" $TEST_DIR/fsmap)
+               test $found -eq 1 || echo "Unexpected output for offset ${offrange}."
+       done
+fi
 
 echo "Get f2 bmap" | tee -a $seqres.full
-$XFS_IO_PROG -c 'bmap -v' $SCRATCH_MNT/f2 >> $seqres.full
 $XFS_IO_PROG -c 'bmap -v' $SCRATCH_MNT/f2 | grep '^[[:space:]]*[0-9]*:' | grep -v 'hole' | tr '[]()' '    ' > $TEST_DIR/bmap
+cat $TEST_DIR/bmap >> $seqres.full
 
-echo "Check f2 bmap and fsmap" | tee -a $seqres.full
-cat $TEST_DIR/bmap | while read ext offrange colon blockrange ag agrange total crap; do
-       qstr="^[[:space:]]*[0-9]*:[[:space:]]*[0-9]*:[0-9]*[[:space:]]*${blockrange} :[[:space:]]*${ino}[[:space:]]*${offrange}[[:space:]]*${ag}[[:space:]]*${agrange}[[:space:]]*${total} 010[01]{4}$"
-       echo "${qstr}" >> $seqres.full
-       grep "${qstr}" $TEST_DIR/fsmap >> $seqres.full
-       found=$(grep -E -c "${qstr}" $TEST_DIR/fsmap)
-       test $found -eq 1 || echo "Unexpected output for offset ${offrange}."
-done
+if _xfs_is_realtime_file $SCRATCH_MNT/f2 && ! _xfs_has_feature $SCRATCH_MNT rtgroups; then
+       echo "Check f2 bmap and fsmap" | tee -a $seqres.full
+       cat $TEST_DIR/bmap | while read ext offrange colon rtblockrange total crap; do
+               qstr="^[[:space:]]*[0-9]*:[[:space:]]*[0-9]*:[0-9]*[[:space:]]*${rtblockrange} :[[:space:]]*${ino}[[:space:]]*${offrange}[[:space:]]*${total} 010[01]{4}$"
+               echo "${qstr}" >> $seqres.full
+               grep "${qstr}" $TEST_DIR/fsmap >> $seqres.full
+               found=$(grep -E -c "${qstr}" $TEST_DIR/fsmap)
+               test $found -eq 1 || echo "Unexpected output for offset ${offrange}."
+       done
+else
+       echo "Check f2 bmap and fsmap" | tee -a $seqres.full
+       cat $TEST_DIR/bmap | while read ext offrange colon blockrange ag agrange total crap; do
+               qstr="^[[:space:]]*[0-9]*:[[:space:]]*[0-9]*:[0-9]*[[:space:]]*${blockrange} :[[:space:]]*${ino}[[:space:]]*${offrange}[[:space:]]*${ag}[[:space:]]*${agrange}[[:space:]]*${total} 010[01]{4}$"
+               echo "${qstr}" >> $seqres.full
+               grep "${qstr}" $TEST_DIR/fsmap >> $seqres.full
+               found=$(grep -E -c "${qstr}" $TEST_DIR/fsmap)
+               test $found -eq 1 || echo "Unexpected output for offset ${offrange}."
+       done
+fi
 
 # success, all done
 status=0