#! /bin/bash
# SPDX-License-Identifier: GPL-2.0
# Copyright (c) 2011 Red Hat.  All Rights Reserved.
#
# FS QA Test No. 259
#
# Test fs creation on 4 TB minus few bytes partition
#
. ./common/preamble
_begin_fstest auto quick

# Override the default cleanup function.
_cleanup()
{
	[ -n "$loop_dev" ] && _destroy_loop_device $testfile
	rm -f "$testfile"
	cd /
	rm -f $tmp.*
}

# Import common functions.
. ./common/filter

_require_test
_require_loop
_require_math

testfile=$TEST_DIR/259.image

# Test various sizes slightly less than 4 TB. Need to handle different
# minimum block sizes for CRC enabled filesystems, but use a small log so we
# don't write lots of zeros unnecessarily.
sizes_to_check="4096 2048 1024"
blocksizes="4096 2048 1024"
four_TB=$(_math "2^42")

for del in $sizes_to_check; do
	for bs in $blocksizes; do
		echo "Trying to make (4TB - ${del}B) long xfs, block size $bs" | \
			tee -a $seqres.full
		ddseek=$(_math "$four_TB - $del")
		rm -f "$testfile"
		truncate -s $ddseek "$testfile"
		loop_dev=$(_create_loop_device $testfile 512)
		$MKFS_XFS_PROG -l size=32m -b size=$bs $loop_dev >> $seqres.full || \
			echo "mkfs failed!"
		sync
		_destroy_loop_device $loop_dev
		unset loop_dev
	done
done

status=0
exit
