]>
Commit | Line | Data |
---|---|---|
0ee8118b BB |
1 | #!/bin/bash |
2 | # | |
3 | # 1 scsi_debug device for fault injection and 3 loopback devices | |
4 | # on top of which is layered raidz3. | |
5 | # | |
6 | ||
7 | SDSIZE=${SDSIZE:-256} | |
8 | SDHOSTS=${SDHOSTS:-1} | |
9 | SDTGTS=${SDTGTS:-1} | |
10 | SDLUNS=${SDLUNS:-1} | |
11 | LDMOD=/sbin/modprobe | |
12 | FILES="/tmp/zpool-vdev0 \ | |
13 | /tmp/zpool-vdev1 \ | |
14 | /tmp/zpool-vdev2" | |
15 | DEVICES="" | |
16 | ||
17 | zpool_create() { | |
18 | check_loop_utils | |
19 | check_sd_utils | |
20 | ||
21 | test `${LSMOD} | grep -c scsi_debug` -gt 0 && \ | |
22 | (echo 0 >/sys/module/scsi_debug/parameters/every_nth && \ | |
23 | ${RMMOD} scsi_debug || exit 1) | |
24 | udev_trigger | |
25 | ||
26 | msg "${LDMOD} scsi_debug dev_size_mb=${SDSIZE} " \ | |
27 | "add_host=${SDHOSTS} num_tgts=${SDTGTS} " \ | |
28 | "max_luns=${SDLUNS}" | |
29 | ${LDMOD} scsi_debug \ | |
30 | dev_size_mb=${SDSIZE} \ | |
31 | add_host=${SDHOSTS} \ | |
32 | num_tgts=${SDTGTS} \ | |
33 | max_luns=${SDLUNS} || \ | |
34 | die "Error $? creating scsi_debug devices" | |
35 | udev_trigger | |
36 | ||
37 | SDDEVICE=`${LSSCSI} | ${AWK} '/scsi_debug/ { print $6; exit }'` | |
38 | msg "${PARTED} -s ${SDDEVICE} mklabel gpt" | |
39 | ${PARTED} -s ${SDDEVICE} mklabel gpt || \ | |
40 | (${RMMOD} scsi_debug && die "Error $? creating gpt label") | |
41 | ||
42 | for FILE in ${FILES}; do | |
43 | LODEVICE=`unused_loop_device` | |
44 | ||
45 | rm -f ${FILE} || exit 1 | |
46 | dd if=/dev/zero of=${FILE} bs=1024k count=0 seek=256 \ | |
47 | &>/dev/null || (${RMMOD} scsi_debug && \ | |
48 | die "Error $? creating ${FILE}") | |
49 | ||
50 | # Setup the loopback device on the file. | |
51 | msg "Creating ${LODEVICE} using ${FILE}" | |
52 | ${LOSETUP} ${LODEVICE} ${FILE} || (${RMMOD} scsi_debug \ | |
53 | die "Error $? creating ${LODEVICE} using ${FILE}") | |
54 | ||
55 | DEVICES="${DEVICES} ${LODEVICE}" | |
56 | done | |
57 | ||
58 | DEVICES="${DEVICES} ${SDDEVICE}" | |
59 | ||
60 | msg "${ZPOOL} create ${FORCE_FLAG} ${ZPOOL_NAME} raidz3 ${DEVICES}" | |
61 | ${ZPOOL} create ${FORCE_FLAG} ${ZPOOL_NAME} raidz3 ${DEVICES} || \ | |
62 | (${RMMOD} scsi_debug && exit 1) | |
63 | } | |
64 | ||
65 | zpool_destroy() { | |
66 | msg ${ZPOOL} destroy ${ZPOOL_NAME} | |
67 | ${ZPOOL} destroy ${ZPOOL_NAME} | |
68 | ||
69 | for FILE in ${FILES}; do | |
70 | LODEVICE=`${LOSETUP} -a | grep ${FILE} | head -n1|cut -f1 -d:` | |
71 | msg "Removing ${LODEVICE} using ${FILE}" | |
72 | ${LOSETUP} -d ${LODEVICE} || | |
73 | die "Error $? destroying ${LODEVICE} using ${FILE}" | |
74 | rm -f ${FILE} || exit 1 | |
75 | done | |
76 | ||
77 | msg "${RMMOD} scsi_debug" | |
78 | ${RMMOD} scsi_debug || die "Error $? removing scsi_debug devices" | |
79 | } |