# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
-TS_TOPDIR="${0%/*}/../.."
+ TS_TOPDIR="${0%/*}/../.."
TS_DESC="fallocate"
. "$TS_TOPDIR"/functions.sh
ts_check_test_command "$TS_CMD_FINDMNT"
IMAGE=${TS_OUTDIR}/${TS_TESTNAME}.file
+
+#
+# Basic allocation test
+#
+ts_init_subtest "alloc"
rm -f $IMAGE
if $TS_CMD_FALLOCATE -o 128 -l 256 $IMAGE >> $TS_OUTPUT 2>> $TS_ERRLOG; then
&& ts_skip "'${fs_type}' not supported"
fi
+rm -f $IMAGE
+ts_finalize_subtest
+
+#
+# Create test file with data and zeros for dig/report tests
+#
+rm -f $IMAGE
+{
+ dd if=/dev/zero bs=1M count=1 2>/dev/null | tr '\000' '\252'
+ dd if=/dev/zero bs=1M count=1 2>/dev/null
+ dd if=/dev/zero bs=1M count=1 2>/dev/null | tr '\000' '\125'
+} > $IMAGE
+
+#
+# Report holes - initial state with data holes
+#
+ts_init_subtest "report-data-holes"
+$TS_CMD_FALLOCATE --report-holes $IMAGE >> $TS_OUTPUT 2>> $TS_ERRLOG
+ts_finalize_subtest
+
+#
+# Dig holes with verbose
+#
+ts_init_subtest "dig-holes"
+$TS_CMD_FALLOCATE --dig-holes -v $IMAGE 2>> $TS_ERRLOG | sed "s|$IMAGE|<testfile>|g" >> $TS_OUTPUT
+ts_finalize_subtest
+
+#
+# Report holes after digging - should show file holes
+#
+ts_init_subtest "report-file-holes"
+$TS_CMD_FALLOCATE --report-holes $IMAGE >> $TS_OUTPUT 2>> $TS_ERRLOG
+ts_finalize_subtest
+
rm -f $IMAGE
ts_finalize