xfs: test that the needsrepair feature works as advertised
[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_remove huge-test
24         _dmsetup_remove huge-test-zero
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_create huge-test-zero --table "$DMHUGEDISK_ZERO_TABLE" || \
35                 _fatal "failed to create dm huge zero device"
36         _dmsetup_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         _dmsetup_remove huge-test
44         _dmsetup_remove huge-test-zero
45 }