mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04:00
77 lines
1.9 KiB
Bash
77 lines
1.9 KiB
Bash
#!/bin/sh
|
|
|
|
# A basic regression test for gconcat append using "gconcat label",
|
|
# i.e., automatic mode.
|
|
|
|
gconcat_check_size()
|
|
{
|
|
local actual expected name
|
|
|
|
name=$1
|
|
expected=$2
|
|
|
|
actual=$(diskinfo /dev/concat/${name} | awk '{print $3}')
|
|
if [ $actual -eq $expected ]; then
|
|
echo "ok - Size is ${actual}"
|
|
else
|
|
echo "not ok - Size is ${actual}"
|
|
fi
|
|
}
|
|
|
|
. `dirname $0`/conf.sh
|
|
|
|
echo '1..4'
|
|
|
|
ss=512
|
|
|
|
f1=$(mktemp) || exit 1
|
|
truncate -s $((1024 * 1024 + $ss)) $f1
|
|
f2=$(mktemp) || exit 1
|
|
truncate -s $((1024 * 1024 + $ss)) $f2
|
|
f3=$(mktemp) || exit 1
|
|
truncate -s $((1024 * 1024 + $ss)) $f3
|
|
|
|
us0=$(attach_md -f $f1 -S $ss) || exit 1
|
|
us1=$(attach_md -f $f2 -S $ss) || exit 1
|
|
us2=$(attach_md -f $f3 -S $ss) || exit 1
|
|
|
|
gconcat label $name /dev/$us0 /dev/$us1 || exit 1
|
|
devwait
|
|
|
|
# We should have a 2MB device. Add another disk and verify that the
|
|
# reported size of the concat device grows accordingly. A sector from
|
|
# each disk is reserved for the metadata sector.
|
|
gconcat_check_size "${name}" $((2 * 1024 * 1024))
|
|
gconcat append $name /dev/$us2 || exit 1
|
|
gconcat_check_size "${name}" $((3 * 1024 * 1024))
|
|
|
|
copy=$(mktemp) || exit 1
|
|
dd if=/dev/random of=$copy bs=1M count=3 || exit 1
|
|
dd if=$copy of=/dev/concat/${name} || exit 1
|
|
|
|
# Stop the concat device and destroy the backing providers.
|
|
gconcat stop ${name} || exit 1
|
|
detach_md $us0
|
|
detach_md $us1
|
|
detach_md $us2
|
|
|
|
# Re-create the providers and verify that the concat device comes
|
|
# back and that the data is still there.
|
|
us0=$(attach_md -f $f1 -S $ss) || exit 1
|
|
us1=$(attach_md -f $f2 -S $ss) || exit 1
|
|
us2=$(attach_md -f $f3 -S $ss) || exit 1
|
|
|
|
devwait
|
|
|
|
# Make sure that the
|
|
if [ -c /dev/concat/${name} ]; then
|
|
echo "ok - concat device was instantiated"
|
|
else
|
|
echo "not ok - concat device was instantiated"
|
|
fi
|
|
|
|
if cmp -s $copy /dev/concat/${name}; then
|
|
echo "ok - Data was persisted across gconcat stop"
|
|
else
|
|
echo "not ok - Data was persisted across gconcat stop"
|
|
fi
|