jcs's openbsd hax
openbsd
1# $OpenBSD: Makefile,v 1.2 2023/02/07 15:33:22 krw Exp $
2#
3# Copyright (c) 2021 Alexander Bluhm <bluhm@openbsd.org>
4#
5# Permission to use, copy, modify, and distribute this software for any
6# purpose with or without fee is hereby granted, provided that the above
7# copyright notice and this permission notice appear in all copies.
8#
9# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16#
17
18# This regress uses vnd devices to create a softraid volume. Raid levels
19# RAID 0, RAID 1, RAID 5, CRYPTO, CONCAT, RAID 1 + CRYPTO are created.
20# The volume disk is then mounted and stressed a little bit.
21# All tests have to be run as root.
22
23REGRESS_TARGETS =
24REGRESS_CLEANUP = unconfig
25CLEANFILES = diskimage* passfile
26
27LASTDISK = bioctl softraid0 | awk '/^softraid0/{sd=$$5}END{print sd}'
28ALLDISK = bioctl softraid0 | awk '/^softraid0/{print $$5}'
29ALLVND = vnconfig -l | awk -F'[ :]' '/^vnd[123]:/ && !/not in use/{print $$1}'
30
31.PHONY: detach unconfig clean
32
33.for v in 1 2 3
34.PHONY: vnd-$v
35vnd-$v: unconfig
36 @echo '==== $@ ===='
37 rm -f diskimage$v
38 dd if=/dev/null of=diskimage$v bs=1m seek=1100
39 vnconfig vnd$v diskimage$v
40 printf "RAID *" | disklabel -wAT- vnd$v
41 [ `disklabel vnd$v | grep -c '\<RAID\>'` -eq 1 ]
42.endfor
43
44.for r in 0 1 5 c
45.PHONY: raid-$r
46raid-$r: vnd-1 vnd-2 vnd-3
47 @echo '==== $@ ===='
48 bioctl -c $r -l vnd1a,vnd2a,vnd3a softraid0
49.endfor
50
51passfile:
52 @echo '==== $@ ===='
53 openssl rand -hex -out $@.tmp 16
54 chmod 0600 $@.tmp
55 mv $@.tmp $@
56
57.PHONY: raid-C
58raid-C: vnd-1 passfile
59 @echo '==== $@ ===='
60 bioctl -c C -l vnd1a -p passfile softraid0
61
62.PHONY: raid-1C
63raid-1C: vnd-1 vnd-2 vnd-3 passfile
64 @echo '==== $@ ===='
65 bioctl -c 1C -l vnd1a,vnd2a,vnd3a -p passfile softraid0
66
67.for r in 0 1 5 C c 1C
68.PHONY: mount-$r
69mount-$r: raid-$r
70 @echo '==== $@ ===='
71 printf "/ *" | disklabel -wAT- "`${LASTDISK}`"
72 newfs "/dev/r`${LASTDISK}`a"
73 mkdir -p /mnt/regress-softraid
74 mount "/dev/`${LASTDISK}`a" /mnt/regress-softraid
75.endfor
76
77detach:
78 @echo '==== $@ ===='
79 umount /mnt/regress-softraid
80 bioctl -d `${LASTDISK}`
81
82.for r in 0 1 5 C c 1C
83
84REGRESS_TARGETS += run-mount-$r
85run-mount-$r:
86 ${MAKE} -C ${.CURDIR} mount-$r
87 ${MAKE} -C ${.CURDIR} detach
88
89REGRESS_TARGETS += run-fill-compare-$r
90run-fill-compare-$r:
91 ${MAKE} -C ${.CURDIR} mount-$r
92 @echo '==== fill ===='
93 time cp -r /bin /mnt/regress-softraid/
94 ${MAKE} -C ${.CURDIR} detach
95 @echo '==== compare ===='
96.if "${r:MC}" == ""
97 bioctl -c $r -l vnd1a,vnd2a,vnd3a -p passfile softraid0
98.else
99 bioctl -c $r -l vnd1a -p passfile softraid0
100.endif
101 bioctl softraid0
102 mount "/dev/`${LASTDISK}`a" /mnt/regress-softraid
103 diff -r /bin /mnt/regress-softraid/bin
104 ${MAKE} -C ${.CURDIR} detach
105
106.endfor
107
108unconfig:
109 -umount -f /mnt/regress-softraid || true
110 -rmdir /mnt/regress-softraid || true
111 -for d in `${ALLDISK}`; do bioctl -d $$d; done
112 -for v in `${ALLVND}`; do vnconfig -u $$v; done
113
114.include <bsd.regress.mk>