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