summaryrefslogtreecommitdiff
path: root/tests/xfs/072
blob: 54c1207c7066c11abd169647db26a470a690ef68 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#! /bin/bash
# SPDX-License-Identifier: GPL-2.0
# Copyright (c) 2000-2003 Silicon Graphics, Inc.  All Rights Reserved.
#
# FS QA Test No. 072
#
# Check some unwritten extent boundary conditions
#
. ./common/preamble
_begin_fstest rw auto prealloc quick

# Override the default cleanup function.
_cleanup()
{
	cd /
	rm -f $tmp.*
	_scratch_unmount 2>/dev/null
}

# Import common functions.
. ./common/filter

# real QA test starts here
_supported_fs xfs

_require_scratch
_require_xfs_io_command "falloc"

_scratch_unmount >/dev/null 2>&1

_scratch_mkfs_xfs >/dev/null	|| _fail "mkfs failed"
_scratch_mount

# check there's enough freespace on $SCRATCH_MNT ... (1GiB + 1MiB)
avail=`df -P $SCRATCH_MNT | awk 'END {print $4}'`
[ "$avail" -ge 1049600 ] || _notrun "Scratch device is too small ($avail KiB)"

echo Silence is golden

# reserve 1GiB, truncate at 100bytes
$XFS_IO_PROG -f -c 'resvsp 0 1g' -c 'truncate 100' $SCRATCH_MNT/ouch
rm -f $SCRATCH_MNT/ouch

# reserve 1GiB, truncate at 1GiB
$XFS_IO_PROG -f -c 'resvsp 0 1g' -c 'truncate 1g' $SCRATCH_MNT/ouch
rm -f $SCRATCH_MNT/ouch

# reserve 1GiB, truncate at 2GiB
$XFS_IO_PROG -f -c 'resvsp 0 1g' -c 'truncate 2g' $SCRATCH_MNT/ouch
rm -f $SCRATCH_MNT/ouch

# reserve 1GiB, 1GiB hole, reserve 1MiB, truncate at 3GiB
$XFS_IO_PROG -f -c 'resvsp 0 1g' -c 'resvsp 2g 1m' -c 'truncate 3g' $SCRATCH_MNT/ouch
rm -f $SCRATCH_MNT/ouch

# success, all done
status=0
exit