fstests: convert remaining tests to SPDX license tags
[xfstests-dev.git] / common / dmhugedisk
1 ##/bin/bash
2 # SPDX-License-Identifier: GPL-2.0+
3 # Copyright (c) 2016 Oracle.  All Rights Reserved.
4 #
5 # Routines for creating huge (fake) disks
6
7 _require_dmhugedisk()
8 {
9         _require_dm_target zero
10         _require_dm_target snapshot
11 }
12
13 _dmhugedisk_init()
14 {
15         test -z "$1" && _fatal "must specify sector count to _dmhugedisk_init"
16         local dm_backing_dev=$SCRATCH_DEV
17         local chunk_size="$2"
18
19         if [ -z "$chunk_size" ]; then
20                 chunk_size=512
21         fi
22
23         $DMSETUP_PROG remove huge-test > /dev/null 2>&1
24         $DMSETUP_PROG remove huge-test-zero > /dev/null 2>&1
25
26         local blk_dev_size=$1
27
28         DMHUGEDISK_ZERO='/dev/mapper/huge-test-zero'
29         DMHUGEDISK_DEV='/dev/mapper/huge-test'
30
31         DMHUGEDISK_ZERO_TABLE="0 $blk_dev_size zero"
32         DMHUGEDISK_DEV_TABLE="0 $blk_dev_size snapshot $DMHUGEDISK_ZERO $SCRATCH_DEV N $chunk_size"
33
34         $DMSETUP_PROG create huge-test-zero --table "$DMHUGEDISK_ZERO_TABLE" || \
35                 _fatal "failed to create dm huge zero device"
36         $DMSETUP_PROG create huge-test --table "$DMHUGEDISK_DEV_TABLE" || \
37                 _fatal "failed to create dm huge device"
38 }
39
40 _dmhugedisk_cleanup()
41 {
42         $UMOUNT_PROG $SCRATCH_MNT > /dev/null 2>&1
43         # wait for device to be fully settled so that 'dmsetup remove' doesn't
44         # fail due to EBUSY
45         $UDEV_SETTLE_PROG >/dev/null 2>&1
46         $DMSETUP_PROG remove huge-test > /dev/null 2>&1
47         $DMSETUP_PROG remove huge-test-zero > /dev/null 2>&1
48 }