]> git.proxmox.com Git - mirror_zfs-debian.git/blob - debian/tests/kernel-smoke-test-clone
Merge tag 'upstream/0.7.6'
[mirror_zfs-debian.git] / debian / tests / kernel-smoke-test-clone
1 #!/bin/sh
2 #
3 # Copyright (C) 2016 Canonical
4 #
5 # This program is free software; you can redistribute it and/or
6 # modify it under the terms of the GNU General Public License
7 # as published by the Free Software Foundation; either version 2
8 # of the License, or (at your option) any later version.
9 #
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU General Public License for more details.
14 #
15 # You should have received a copy of the GNU General Public License
16 # along with this program; if not, write to the Free Software
17 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18 #
19 echo -n "kernel smoke test, ZFS clone: "
20 TMP=/tmp
21 VDEV0=${TMP}/pool0-$$.img
22 VDEV1=${TMP}/pool1-$$.img
23 POOL=pool-smoke-$$
24 DATA=/${POOL}/test/data
25 DATA_CLONE=/${POOL}/test-clone/data
26
27 dd if=/dev/zero of=${VDEV0} bs=1M count=128 > /dev/null 2>&1
28 dd if=/dev/zero of=${VDEV1} bs=1M count=128 > /dev/null 2>&1
29
30 zpool create ${POOL} ${VDEV0} ${VDEV1}
31 ret=$?
32 if [ $ret -ne 0 ]; then
33 echo "FAILED: zpool create failed, exit code=$ret"
34 rm ${VDEV0} ${VDEV1}
35 exit 1
36 fi
37
38 zfs create ${POOL}/test
39 ret=$?
40 if [ $ret -ne 0 ]; then
41 echo "FAILED: zfs create failed, exit code=$ret"
42 zpool destroy ${POOL}
43 rm ${VDEV0} ${VDEV1}
44 exit 1
45 fi
46
47 #
48 # Populate with files..
49 #
50 cp -rp /etc /${POOL}/test
51 dd if=/dev/urandom of=${DATA} bs=1M count=64 > /dev/null 2>&1
52 sum1=$(md5sum ${DATA} | awk '{print $1}')
53
54 #
55 # Make a snapshot
56 #
57 zfs snapshot -r ${POOL}/test@snap
58 ret=$?
59 if [ $ret -ne 0 ]; then
60 echo "FAILED: zfs snapshot failed, exit code=$ret"
61 zpool destroy ${POOL}
62 rm ${VDEV0} ${VDEV1}
63 exit 1
64 fi
65
66 #
67 # Clone
68 #
69 zfs clone ${POOL}/test@snap ${POOL}/test-clone
70
71 #
72 # Checksums must agree
73 #
74 sum2=$(md5sum ${DATA_CLONE} | awk '{print $1}')
75 if [ x"$sum1" != x"$sum2" ]; then
76 echo "FAILED: cloned data different from original"
77 zpool destroy ${POOL}
78 rm ${VDEV0} ${VDEV1}
79 exit 1
80 fi
81
82 zpool destroy ${POOL}
83 ret=$?
84 if [ $ret -ne 0 ]; then
85 echo "FAILED: zpool destroy failed, exit code=$ret"
86 #
87 # destroy failed, try to clean up, but this
88 # wil probably fail
89 #
90 rm ${VDEV0} ${VDEV1}
91 exit 1
92 fi
93
94 rm ${VDEV0} ${VDEV1}
95 echo "PASSED"
96 exit 0