Delay before destroying loopback devices
[zfs.git] / scripts / zpool-config / lo-raid10.sh
1 #!/bin/bash
2 #
3 # 4 Device Loopback Raid-0 Configuration
4 #
5
6 FILES_M1="/tmp/zpool-vdev0  \
7           /tmp/zpool-vdev1"
8 FILES_M2="/tmp/zpool-vdev2  \
9           /tmp/zpool-vdev3"
10 FILES="${FILES_M1} ${FILES_M2}"
11 DEVICES_M1=""
12 DEVICES_M2=""
13
14 zpool_create() {
15         check_loop_utils
16
17         for FILE in ${FILES_M1}; do
18                 DEVICE=`unused_loop_device`
19                 msg "Creating ${FILE} using loopback device ${DEVICE}"
20                 rm -f ${FILE} || exit 1
21                 dd if=/dev/zero of=${FILE} bs=1024k count=0 seek=256 \
22                         &>/dev/null || die "Error $? creating ${FILE}"
23                 ${LOSETUP} ${DEVICE} ${FILE} ||
24                         die "Error $? creating ${FILE} -> ${DEVICE} loopback"
25                 DEVICES_M1="${DEVICES_M1} ${DEVICE}"
26         done
27
28         for FILE in ${FILES_M2}; do
29                 DEVICE=`unused_loop_device`
30                 msg "Creating ${FILE} using loopback device ${DEVICE}"
31                 rm -f ${FILE} || exit 1
32                 dd if=/dev/zero of=${FILE} bs=1024k count=0 seek=256 \
33                         &>/dev/null || die "Error $? creating ${FILE}"
34                 ${LOSETUP} ${DEVICE} ${FILE} ||
35                         die "Error $? creating ${FILE} -> ${DEVICE} loopback"
36                 DEVICES_M2="${DEVICES_M2} ${DEVICE}"
37         done
38
39         msg ${ZPOOL} create ${FORCE_FLAG} ${ZPOOL_NAME} \
40                 mirror ${DEVICES_M1} mirror ${DEVICES_M2}
41         ${ZPOOL} create ${FORCE_FLAG} ${ZPOOL_NAME} \
42                 mirror ${DEVICES_M1} mirror ${DEVICES_M2}
43 }
44
45 zpool_destroy() {
46         msg ${ZPOOL} destroy ${ZPOOL_NAME}
47         ${ZPOOL} destroy ${ZPOOL_NAME}
48
49         # Delay to ensure device is closed before removing loop device
50         sleep 1
51
52         for FILE in ${FILES}; do
53                 DEVICE=`${LOSETUP} -a | grep ${FILE} | head -n1|cut -f1 -d:`
54                 msg "Removing ${FILE} using loopback device ${DEVICE}"
55                 ${LOSETUP} -d ${DEVICE} ||
56                         die "Error $? destroying ${FILE} -> ${DEVICE} loopback"
57                 rm -f ${FILE} || exit 1
58         done
59 }