]>
Commit | Line | Data |
---|---|---|
0ee8118b BB |
1 | #!/bin/bash |
2 | # | |
3 | # 4 loopback devices using the md faulty level for easy | |
4 | # fault injection on top of which is layered raidz2. | |
5 | # | |
6 | # zpool-vdev0 zpool-vdev1 zpool-vdev2 zpool-vdev3 | |
7 | # loop0 loop1 loop2 loop3 | |
8 | # md0 (faulty) md1 (faulty) md2 (faulty) md3 (faulty) | |
9 | # <--------------------- raidz2 zpool --------------------> | |
10 | # | |
11 | ||
23d56208 AX |
12 | FILEDIR=${FILEDIR:-/var/tmp} |
13 | FILES=${FILES:-"$FILEDIR/file-vdev0 $FILEDIR/file-vdev1 \ | |
14 | $FILEDIR/file-vdev2 $FILEDIR/file-vdev3"} | |
0ee8118b BB |
15 | LODEVICES="" |
16 | MDDEVICES="" | |
17 | ||
18 | zpool_create() { | |
19 | check_loop_utils | |
20 | check_md_utils | |
21 | check_md_partitionable || die "Error non-partitionable md devices" | |
22 | ||
23 | for FILE in ${FILES}; do | |
24 | LODEVICE=`unused_loop_device` | |
25 | MDDEVICE=`unused_md_device` | |
26 | ||
27 | rm -f ${FILE} || exit 1 | |
28 | dd if=/dev/zero of=${FILE} bs=1M count=0 seek=256 \ | |
29 | &>/dev/null || die "Error $? creating ${FILE}" | |
30 | ||
31 | # Setup the loopback device on the file. | |
32 | msg "Creating ${LODEVICE} using ${FILE}" | |
33 | ${LOSETUP} ${LODEVICE} ${FILE} || \ | |
34 | die "Error $? creating ${LODEVICE} using ${FILE}" | |
35 | ||
36 | LODEVICES="${LODEVICES} ${LODEVICE}" | |
37 | ||
38 | # Setup the md device on the loopback device. | |
39 | msg "Creating ${MDDEVICE} using ${LODEVICE}" | |
40 | ${MDADM} --build ${MDDEVICE} --level=faulty \ | |
41 | --raid-devices=1 ${LODEVICE} &>/dev/null || \ | |
42 | (destroy_md_devices "${MDDEVICES}" && \ | |
43 | destroy_loop_devices "${LODEVICES}" && \ | |
44 | die "Error $? creating ${MDDEVICE} using ${LODEVICE}") | |
45 | wait_udev ${MDDEVICE} 30 || \ | |
46 | (destroy_md_devices "${MDDEVICES}" && \ | |
47 | destroy_loop_devices "${LODEVICES}" && \ | |
48 | die "Error udev never created ${MDDEVICE}") | |
49 | ||
50 | # Create empty GPT/EFI partition table. | |
51 | ${PARTED} --script ${MDDEVICE} mklabel gpt | |
52 | MDDEVICES="${MDDEVICES} ${MDDEVICE}" | |
53 | done | |
54 | ||
23d56208 AX |
55 | msg ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} raidz2 ${MDDEVICES} |
56 | ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} raidz2 ${MDDEVICES} || \ | |
0ee8118b BB |
57 | (destroy_md_devices "${MDDEVICES}" && \ |
58 | destroy_loop_devices "${LODEVICES}" && exit 1) | |
59 | ||
60 | echo "$LODEVICES" >/tmp/zpool-lo.txt | |
61 | echo "$MDDEVICES" >/tmp/zpool-md.txt | |
62 | } | |
63 | ||
64 | zpool_destroy() { | |
65 | msg ${ZPOOL} destroy ${ZPOOL_NAME} | |
66 | ${ZPOOL} destroy ${ZPOOL_NAME} | |
67 | destroy_md_devices "`cat /tmp/zpool-md.txt`" | |
68 | destroy_loop_devices "`cat /tmp/zpool-lo.txt`" | |
69 | ||
70 | rm -f /tmp/zpool-md.txt /tmp/zpool-lo.txt | |
71 | } |