Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 16 Nov 2015 08:58:03 +0000 (UTC)
From:      Garrett Cooper <ngie@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r290925 - in user/ngie/more-tests2: etc/mtree sbin/geom/class/tests sbin/geom/class/tests/concat sbin/geom/class/tests/eli sbin/geom/class/tests/gate sbin/geom/class/tests/gpt sbin/geom...
Message-ID:  <201511160858.tAG8w3Fq013149@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ngie
Date: Mon Nov 16 08:58:03 2015
New Revision: 290925
URL: https://svnweb.freebsd.org/changeset/base/290925

Log:
  Integrate tools/regression/geom* into the FreeBSD test suite under sbin/geom/...
  
  XXX: test

Added:
  user/ngie/more-tests2/sbin/geom/class/tests/
  user/ngie/more-tests2/sbin/geom/class/tests/Makefile   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/concat/
  user/ngie/more-tests2/sbin/geom/class/tests/concat/1_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/concat/2_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/concat/conf.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/eli/
  user/ngie/more-tests2/sbin/geom/class/tests/eli/attach_d_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/eli/configure_b_B_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/eli/delkey_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/eli/detach_l_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/eli/init_B_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/eli/init_J_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/eli/init_a_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/eli/init_i_P_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/eli/init_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/eli/integrity_copy_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/eli/integrity_data_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/eli/integrity_hmac_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/eli/kill_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/eli/nokey_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/eli/onetime_a_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/eli/onetime_d_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/eli/onetime_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/eli/readonly_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/eli/resize_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/eli/setkey_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/gate/
  user/ngie/more-tests2/sbin/geom/class/tests/gate/1_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/gate/2_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/gate/3_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/gate/Makefile   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/geom_subr.sh
     - copied unchanged from r290924, user/ngie/more-tests2/tools/regression/geom_subr.sh
  user/ngie/more-tests2/sbin/geom/class/tests/gpt/
  user/ngie/more-tests2/sbin/geom/class/tests/gpt/gctl.c   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/gpt/gctl_test.pl   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/mirror/
  user/ngie/more-tests2/sbin/geom/class/tests/mirror/1_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/mirror/2_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/mirror/3_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/mirror/4_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/mirror/5_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/mirror/6_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/mirror/7_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/mirror/conf.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/nop/
  user/ngie/more-tests2/sbin/geom/class/tests/nop/1_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/nop/2_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/nop/conf.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/raid3/
  user/ngie/more-tests2/sbin/geom/class/tests/raid3/10_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/raid3/11_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/raid3/12_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/raid3/1_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/raid3/2_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/raid3/3_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/raid3/4_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/raid3/5_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/raid3/6_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/raid3/7_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/raid3/8_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/raid3/9_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/raid3/conf.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/shsec/
  user/ngie/more-tests2/sbin/geom/class/tests/shsec/1_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/shsec/2_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/shsec/conf.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/stripe/
  user/ngie/more-tests2/sbin/geom/class/tests/stripe/1_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/stripe/2_test.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/stripe/conf.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/uzip/
  user/ngie/more-tests2/sbin/geom/class/tests/uzip/1.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/uzip/2.sh   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/uzip/Makefile   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/class/tests/uzip/etalon/
  user/ngie/more-tests2/sbin/geom/class/tests/uzip/etalon/etalon.txt   (contents, props changed)
  user/ngie/more-tests2/sbin/geom/core/tests/
  user/ngie/more-tests2/sbin/geom/core/tests/ConfCmp/
     - copied from r290924, user/ngie/more-tests2/tools/regression/geom/ConfCmp/
  user/ngie/more-tests2/sbin/geom/core/tests/Data/
     - copied from r290924, user/ngie/more-tests2/tools/regression/geom/Data/
  user/ngie/more-tests2/sbin/geom/core/tests/MdLoad/
     - copied from r290924, user/ngie/more-tests2/tools/regression/geom/MdLoad/
  user/ngie/more-tests2/sbin/geom/core/tests/Ref/
     - copied from r290924, user/ngie/more-tests2/tools/regression/geom/Ref/
  user/ngie/more-tests2/sbin/geom/core/tests/run_test.sh
     - copied unchanged from r290924, user/ngie/more-tests2/tools/regression/geom/RunTest.t
Deleted:
  user/ngie/more-tests2/tools/regression/geom/
  user/ngie/more-tests2/tools/regression/geom_concat/
  user/ngie/more-tests2/tools/regression/geom_eli/
  user/ngie/more-tests2/tools/regression/geom_gate/
  user/ngie/more-tests2/tools/regression/geom_gpt/
  user/ngie/more-tests2/tools/regression/geom_mirror/
  user/ngie/more-tests2/tools/regression/geom_nop/
  user/ngie/more-tests2/tools/regression/geom_raid3/
  user/ngie/more-tests2/tools/regression/geom_shsec/
  user/ngie/more-tests2/tools/regression/geom_stripe/
  user/ngie/more-tests2/tools/regression/geom_subr.sh
  user/ngie/more-tests2/tools/regression/geom_uzip/
Modified:
  user/ngie/more-tests2/etc/mtree/BSD.tests.dist
  user/ngie/more-tests2/sbin/geom/core/tests/ConfCmp/ConfCmp.c
  user/ngie/more-tests2/sbin/geom/core/tests/ConfCmp/Makefile
  user/ngie/more-tests2/sbin/geom/core/tests/MdLoad/Makefile
  user/ngie/more-tests2/sbin/geom/core/tests/MdLoad/MdLoad.c

Modified: user/ngie/more-tests2/etc/mtree/BSD.tests.dist
==============================================================================
--- user/ngie/more-tests2/etc/mtree/BSD.tests.dist	Mon Nov 16 07:10:42 2015	(r290924)
+++ user/ngie/more-tests2/etc/mtree/BSD.tests.dist	Mon Nov 16 08:58:03 2015	(r290925)
@@ -336,6 +336,42 @@
         ..
         devd
         ..
+        geom
+            class
+                concat
+                ..
+                eli
+                ..
+                gate
+                ..
+                gpt
+                ..
+                mirror
+                ..
+                nop
+                ..
+                raid3
+                ..
+                shsec
+                ..
+                stripe
+                ..
+                uzip
+                    etalon
+                    ..
+                ..
+            ..
+            core
+                ConfCmp
+                ..
+                Data
+                ..
+                MdLoad
+                ..
+                Ref
+                ..
+            ..
+        ..
         growfs
         ..
         ifconfig

Added: user/ngie/more-tests2/sbin/geom/class/tests/Makefile
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/ngie/more-tests2/sbin/geom/class/tests/Makefile	Mon Nov 16 08:58:03 2015	(r290925)
@@ -0,0 +1,18 @@
+# $FreeBSD$
+
+TESTS_SUBDIRS+=	concat
+TESTS_SUBDIRS+=	eli
+TESTS_SUBDIRS+=	gate
+TESTS_SUBDIRS+=	gpt
+TESTS_SUBDIRS+=	mirror
+TESTS_SUBDIRS+=	nop
+TESTS_SUBDIRS+=	raid3
+TESTS_SUBDIRS+=	shsec
+TESTS_SUBDIRS+=	stripe
+TESTS_SUBDIRS+=	uzip
+
+BINDIR=		${TESTSBASE}/sbin/geom/class
+
+FILES+=		geom_subr.sh
+
+.include <bsd.test.mk>

Added: user/ngie/more-tests2/sbin/geom/class/tests/concat/1_test.sh
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/ngie/more-tests2/sbin/geom/class/tests/concat/1_test.sh	Mon Nov 16 08:58:03 2015	(r290925)
@@ -0,0 +1,30 @@
+#!/bin/sh
+# $FreeBSD$
+
+. `dirname $0`/conf.sh
+
+echo '1..1'
+
+us=45
+
+mdconfig -a -t malloc -s 1M -u $us || exit 1
+mdconfig -a -t malloc -s 2M -u `expr $us + 1` || exit 1
+mdconfig -a -t malloc -s 3M -u `expr $us + 2` || exit 1
+
+gconcat create $name /dev/md${us} /dev/md`expr $us + 1` /dev/md`expr $us + 2` || exit 1
+devwait
+
+# Size of created device should be 1MB + 2MB + 3MB.
+
+size=`diskinfo /dev/concat/${name} | awk '{print $3}'`
+
+if [ $size -eq 6291456 ]; then
+	echo "ok - Size is 6291456"
+else
+	echo "not ok - Size is 6291456"
+fi
+
+gconcat destroy $name
+mdconfig -d -u $us
+mdconfig -d -u `expr $us + 1`
+mdconfig -d -u `expr $us + 2`

Added: user/ngie/more-tests2/sbin/geom/class/tests/concat/2_test.sh
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/ngie/more-tests2/sbin/geom/class/tests/concat/2_test.sh	Mon Nov 16 08:58:03 2015	(r290925)
@@ -0,0 +1,35 @@
+#!/bin/sh
+# $FreeBSD$
+
+. `dirname $0`/conf.sh
+
+echo '1..1'
+
+us=45
+tsize=6
+src=`mktemp /tmp/$base.XXXXXX` || exit 1
+dst=`mktemp /tmp/$base.XXXXXX` || exit 1
+
+dd if=/dev/random of=${src} bs=1m count=$tsize >/dev/null 2>&1
+
+mdconfig -a -t malloc -s 1M -u $us || exit 1
+mdconfig -a -t malloc -s 2M -u `expr $us + 1` || exit 1
+mdconfig -a -t malloc -s 3M -u `expr $us + 2` || exit 1
+
+gconcat create $name /dev/md${us} /dev/md`expr $us + 1` /dev/md`expr $us + 2` || exit 1
+devwait
+
+dd if=${src} of=/dev/concat/${name} bs=1m count=$tsize >/dev/null 2>&1
+dd if=/dev/concat/${name} of=${dst} bs=1m count=$tsize >/dev/null 2>&1
+
+if [ `md5 -q ${src}` != `md5 -q ${dst}` ]; then
+	echo "not ok - md5 checksum comparison"
+else
+	echo "ok - md5 checksum comparison"
+fi
+
+gconcat destroy $name
+mdconfig -d -u $us
+mdconfig -d -u `expr $us + 1`
+mdconfig -d -u `expr $us + 2`
+rm -f ${src} ${dst}

Added: user/ngie/more-tests2/sbin/geom/class/tests/concat/conf.sh
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/ngie/more-tests2/sbin/geom/class/tests/concat/conf.sh	Mon Nov 16 08:58:03 2015	(r290925)
@@ -0,0 +1,8 @@
+#!/bin/sh
+# $FreeBSD$
+
+name="test"
+class="concat"
+base=`basename $0`
+
+. `dirname $0`/../geom_subr.sh

Added: user/ngie/more-tests2/sbin/geom/class/tests/eli/attach_d_test.sh
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/ngie/more-tests2/sbin/geom/class/tests/eli/attach_d_test.sh	Mon Nov 16 08:58:03 2015	(r290925)
@@ -0,0 +1,38 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+no=45
+sectors=100
+keyfile=`mktemp $base.XXXXXX` || exit 1
+mdconfig -a -t malloc -s `expr $sectors + 1` -u $no || exit 1
+
+echo "1..3"
+
+dd if=/dev/random of=${keyfile} bs=512 count=16 >/dev/null 2>&1
+
+geli init -B none -P -K $keyfile md${no}
+geli attach -d -p -k $keyfile md${no}
+if [ -c /dev/md${no}.eli ]; then
+	echo "ok 1"
+else
+	echo "not ok 1"
+fi
+# Be sure it doesn't detach on read.
+dd if=/dev/md${no}.eli of=/dev/null 2>/dev/null
+sleep 1
+if [ -c /dev/md${no}.eli ]; then
+	echo "ok 2"
+else
+	echo "not ok 2"
+fi
+true > /dev/md${no}.eli
+sleep 1
+if [ ! -c /dev/md${no}.eli ]; then
+	echo "ok 3"
+else
+	echo "not ok 3"
+fi
+
+mdconfig -d -u $no
+rm -f $keyfile

Added: user/ngie/more-tests2/sbin/geom/class/tests/eli/configure_b_B_test.sh
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/ngie/more-tests2/sbin/geom/class/tests/eli/configure_b_B_test.sh	Mon Nov 16 08:58:03 2015	(r290925)
@@ -0,0 +1,130 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+no=45
+sectors=100
+mdconfig -a -t malloc -s `expr $sectors + 1` -u $no || exit 1
+
+echo "1..17"
+
+geli init -B none -P -K /dev/null md${no}
+if [ $? -eq 0 ]; then
+	echo "ok 1"
+else
+	echo "not ok 1"
+fi
+
+geli dump md${no} | egrep 'flags: 0x0$' >/dev/null
+if [ $? -eq 0 ]; then
+	echo "ok 2"
+else
+	echo "not ok 2"
+fi
+
+geli init -B none -b -P -K /dev/null md${no}
+if [ $? -eq 0 ]; then
+	echo "ok 3"
+else
+	echo "not ok 3"
+fi
+
+geli dump md${no} | egrep 'flags: 0x2$' >/dev/null
+if [ $? -eq 0 ]; then
+	echo "ok 4"
+else
+	echo "not ok 4"
+fi
+
+geli configure -B md${no}
+if [ $? -eq 0 ]; then
+	echo "ok 5"
+else
+	echo "not ok 5"
+fi
+
+geli dump md${no} | egrep 'flags: 0x0$' >/dev/null
+if [ $? -eq 0 ]; then
+	echo "ok 6"
+else
+	echo "not ok 6"
+fi
+
+geli configure -b md${no}
+if [ $? -eq 0 ]; then
+	echo "ok 7"
+else
+	echo "not ok 7"
+fi
+
+geli dump md${no} | egrep 'flags: 0x2$' >/dev/null
+if [ $? -eq 0 ]; then
+	echo "ok 8"
+else
+	echo "not ok 8"
+fi
+
+geli attach -p -k /dev/null md${no}
+if [ $? -eq 0 ]; then
+	echo "ok 9"
+else
+	echo "not ok 9"
+fi
+
+geli list md${no}.eli | egrep '^Flags: .*BOOT' >/dev/null
+if [ $? -eq 0 ]; then
+	echo "ok 10"
+else
+	echo "not ok 10"
+fi
+
+geli configure -B md${no}
+if [ $? -eq 0 ]; then
+	echo "ok 11"
+else
+	echo "not ok 11"
+fi
+
+geli list md${no}.eli | egrep '^Flags: .*BOOT' >/dev/null
+if [ $? -ne 0 ]; then
+	echo "ok 12"
+else
+	echo "not ok 12"
+fi
+
+geli dump md${no} | egrep 'flags: 0x0$' >/dev/null
+if [ $? -eq 0 ]; then
+	echo "ok 13"
+else
+	echo "not ok 13"
+fi
+
+geli configure -b md${no}
+if [ $? -eq 0 ]; then
+	echo "ok 14"
+else
+	echo "not ok 14"
+fi
+
+geli list md${no}.eli | egrep '^Flags: .*BOOT' >/dev/null
+if [ $? -eq 0 ]; then
+	echo "ok 15"
+else
+	echo "not ok 15"
+fi
+
+geli dump md${no} | egrep 'flags: 0x2$' >/dev/null
+if [ $? -eq 0 ]; then
+	echo "ok 16"
+else
+	echo "not ok 16"
+fi
+
+geli detach md${no}
+if [ $? -eq 0 ]; then
+	echo "ok 17"
+else
+	echo "not ok 17"
+fi
+
+mdconfig -d -u $no

Added: user/ngie/more-tests2/sbin/geom/class/tests/eli/delkey_test.sh
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/ngie/more-tests2/sbin/geom/class/tests/eli/delkey_test.sh	Mon Nov 16 08:58:03 2015	(r290925)
@@ -0,0 +1,140 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+no=45
+sectors=100
+keyfile1=`mktemp $base.XXXXXX` || exit 1
+keyfile2=`mktemp $base.XXXXXX` || exit 1
+keyfile3=`mktemp $base.XXXXXX` || exit 1
+keyfile4=`mktemp $base.XXXXXX` || exit 1
+mdconfig -a -t malloc -s `expr $sectors + 1` -u $no || exit 1
+
+echo "1..14"
+
+dd if=/dev/random of=${keyfile1} bs=512 count=16 >/dev/null 2>&1
+dd if=/dev/random of=${keyfile2} bs=512 count=16 >/dev/null 2>&1
+dd if=/dev/random of=${keyfile3} bs=512 count=16 >/dev/null 2>&1
+dd if=/dev/random of=${keyfile4} bs=512 count=16 >/dev/null 2>&1
+
+geli init -B none -P -K $keyfile1 md${no}
+geli attach -p -k $keyfile1 md${no}
+geli setkey -n 1 -P -K $keyfile2 md${no}
+
+# Remove key 0 for attached provider.
+geli delkey -n 0 md${no}
+if [ $? -eq 0 ]; then
+	echo "ok 1"
+else
+	echo "not ok 1"
+fi
+geli detach md${no}
+
+# We cannot use keyfile1 anymore.
+geli attach -p -k $keyfile1 md${no} 2>/dev/null
+if [ $? -ne 0 ]; then
+	echo "ok 2"
+else
+	echo "not ok 2"
+fi
+
+# Attach with key 1.
+geli attach -p -k $keyfile2 md${no}
+if [ $? -eq 0 ]; then
+	echo "ok 3"
+else
+	echo "not ok 3"
+fi
+
+# We cannot remove last key without -f option (for attached provider).
+geli delkey -n 1 md${no} 2>/dev/null
+if [ $? -ne 0 ]; then
+	echo "ok 4"
+else
+	echo "not ok 4"
+fi
+
+# Remove last key for attached provider.
+geli delkey -f -n 1 md${no}
+if [ $? -eq 0 ]; then
+	echo "ok 5"
+else
+	echo "not ok 5"
+fi
+
+# If there are no valid keys, but provider is attached, we can save situation.
+geli setkey -n 0 -P -K $keyfile3 md${no}
+if [ $? -eq 0 ]; then
+	echo "ok 6"
+else
+	echo "not ok 6"
+fi
+geli detach md${no}
+
+# We cannot use keyfile2 anymore.
+geli attach -p -k $keyfile2 md${no} 2>/dev/null
+if [ $? -ne 0 ]; then
+	echo "ok 7"
+else
+	echo "not ok 7"
+fi
+
+# Attach with key 0.
+geli attach -p -k $keyfile3 md${no}
+if [ $? -eq 0 ]; then
+	echo "ok 8"
+else
+	echo "not ok 8"
+fi
+
+# Setup key 1.
+geli setkey -n 1 -P -K $keyfile4 md${no}
+if [ $? -eq 0 ]; then
+	echo "ok 9"
+else
+	echo "not ok 9"
+fi
+geli detach md${no}
+
+# Remove key 1 for detached provider.
+geli delkey -n 1 md${no}
+if [ $? -eq 0 ]; then
+	echo "ok 10"
+else
+	echo "not ok 10"
+fi
+
+# We cannot use keyfile4 anymore.
+geli attach -p -k $keyfile4 md${no} 2>/dev/null
+if [ $? -ne 0 ]; then
+	echo "ok 11"
+else
+	echo "not ok 11"
+fi
+
+# We cannot remove last key without -f option (for detached provider).
+geli delkey -n 0 md${no} 2>/dev/null
+if [ $? -ne 0 ]; then
+	echo "ok 12"
+else
+	echo "not ok 12"
+fi
+
+# Remove last key for detached provider.
+geli delkey -f -n 0 md${no}
+if [ $? -eq 0 ]; then
+	echo "ok 13"
+else
+	echo "not ok 13"
+fi
+
+# We cannot use keyfile3 anymore.
+geli attach -p -k $keyfile3 md${no} 2>/dev/null
+if [ $? -ne 0 ]; then
+	echo "ok 14"
+else
+	echo "not ok 14"
+fi
+
+mdconfig -d -u $no
+rm -f $keyfile1 $keyfile2 $keyfile3 $keyfile4

Added: user/ngie/more-tests2/sbin/geom/class/tests/eli/detach_l_test.sh
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/ngie/more-tests2/sbin/geom/class/tests/eli/detach_l_test.sh	Mon Nov 16 08:58:03 2015	(r290925)
@@ -0,0 +1,44 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+no=45
+sectors=100
+keyfile=`mktemp $base.XXXXXX` || exit 1
+mdconfig -a -t malloc -s `expr $sectors + 1` -u $no || exit 1
+
+echo "1..4"
+
+dd if=/dev/random of=${keyfile} bs=512 count=16 >/dev/null 2>&1
+
+geli init -B none -P -K $keyfile md${no}
+geli attach -p -k $keyfile md${no}
+if [ -c /dev/md${no}.eli ]; then
+	echo "ok 1"
+else
+	echo "not ok 1"
+fi
+# Be sure it doesn't detach before 'detach -l'.
+dd if=/dev/md${no}.eli of=/dev/null 2>/dev/null
+sleep 1
+if [ -c /dev/md${no}.eli ]; then
+	echo "ok 2"
+else
+	echo "not ok 2"
+fi
+geli detach -l md${no}
+if [ -c /dev/md${no}.eli ]; then
+	echo "ok 3"
+else
+	echo "not ok 3"
+fi
+dd if=/dev/md${no}.eli of=/dev/null 2>/dev/null
+sleep 1
+if [ ! -c /dev/md${no}.eli ]; then
+	echo "ok 4"
+else
+	echo "not ok 4"
+fi
+
+mdconfig -d -u $no
+rm -f $keyfile

Added: user/ngie/more-tests2/sbin/geom/class/tests/eli/init_B_test.sh
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/ngie/more-tests2/sbin/geom/class/tests/eli/init_B_test.sh	Mon Nov 16 08:58:03 2015	(r290925)
@@ -0,0 +1,106 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+no=45
+sectors=100
+keyfile=`mktemp $base.XXXXXX` || exit 1
+backupfile=`mktemp $base.XXXXXX` || exit 1
+
+echo "1..13"
+
+dd if=/dev/random of=${keyfile} bs=512 count=16 >/dev/null 2>&1
+
+mdconfig -a -t malloc -s $sectors -u $no || exit 1
+
+# -B none
+rm -f /var/backups/md${no}.eli
+geli init -B none -P -K $keyfile md${no} 2>/dev/null
+if [ ! -f /var/backups/md${no}.eli ]; then
+	echo "ok 1 - -B none"
+else
+	echo "not ok 1 - -B none"
+fi
+
+# no -B
+rm -f /var/backups/md${no}.eli
+geli init -P -K $keyfile md${no} >/dev/null 2>&1
+if [ -f /var/backups/md${no}.eli ]; then
+	echo "ok 2 - no -B"
+else
+	echo "not ok 2 - no -B"
+fi
+geli clear md${no}
+geli attach -p -k $keyfile md${no} 2>/dev/null
+if [ $? -ne 0 ]; then
+	echo "ok 3 - no -B"
+else
+	echo "not ok 3 - no -B"
+fi
+if [ ! -c /dev/md${no}.eli ]; then
+	echo "ok 4 - no -B"
+else
+	echo "not ok 4 - no -B"
+fi
+geli restore /var/backups/md${no}.eli md${no}
+if [ $? -eq 0 ]; then
+	echo "ok 5 - no -B"
+else
+	echo "not ok 5 - no -B"
+fi
+geli attach -p -k $keyfile md${no} 2>/dev/null
+if [ $? -eq 0 ]; then
+	echo "ok 6 - no -B"
+else
+	echo "not ok 6 - no -B"
+fi
+if [ -c /dev/md${no}.eli ]; then
+	echo "ok 7 - no -B"
+else
+	echo "not ok 7 - no -B"
+fi
+geli detach md${no}
+rm -f /var/backups/md${no}.eli
+
+# -B file
+rm -f $backupfile
+geli init -B $backupfile -P -K $keyfile md${no} >/dev/null 2>&1
+if [ -f $backupfile ]; then
+	echo "ok 8 - -B file"
+else
+	echo "not ok 8 - -B file"
+fi
+geli clear md${no}
+geli attach -p -k $keyfile md${no} 2>/dev/null
+if [ $? -ne 0 ]; then
+	echo "ok 9 - -B file"
+else
+	echo "not ok 9 - -B file"
+fi
+if [ ! -c /dev/md${no}.eli ]; then
+	echo "ok 10 - -B file"
+else
+	echo "not ok 10 - -B file"
+fi
+geli restore $backupfile md${no}
+if [ $? -eq 0 ]; then
+	echo "ok 11 - -B file"
+else
+	echo "not ok 11 - -B file"
+fi
+geli attach -p -k $keyfile md${no} 2>/dev/null
+if [ $? -eq 0 ]; then
+	echo "ok 12 - -B file"
+else
+	echo "not ok 12 - -B file"
+fi
+if [ -c /dev/md${no}.eli ]; then
+	echo "ok 13 - -B file"
+else
+	echo "not ok 13 - -B file"
+fi
+geli detach md${no}
+rm -f $backupfile
+
+mdconfig -d -u $no
+rm -f $keyfile

Added: user/ngie/more-tests2/sbin/geom/class/tests/eli/init_J_test.sh
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/ngie/more-tests2/sbin/geom/class/tests/eli/init_J_test.sh	Mon Nov 16 08:58:03 2015	(r290925)
@@ -0,0 +1,126 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+no=45
+sectors=100
+keyfile0=`mktemp $base.XXXXXX` || exit 1
+keyfile1=`mktemp $base.XXXXXX` || exit 1
+passfile0=`mktemp $base.XXXXXX` || exit 1
+passfile1=`mktemp $base.XXXXXX` || exit 1
+mdconfig -a -t malloc -s `expr $sectors + 1` -u $no || exit 1
+
+echo "1..150"
+
+dd if=/dev/random of=${keyfile0} bs=512 count=16 >/dev/null 2>&1
+dd if=/dev/random of=${keyfile1} bs=512 count=16 >/dev/null 2>&1
+dd if=/dev/random bs=512 count=16 2>/dev/null | sha1 > ${passfile0}
+dd if=/dev/random bs=512 count=16 2>/dev/null | sha1 > ${passfile1}
+
+i=1
+for iter in -1 0 64; do
+	geli init -i ${iter} -B none -J ${passfile0} -P md${no} 2>/dev/null && echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	geli init -i ${iter} -B none -J ${passfile0} -P -K ${keyfile0} md${no} 2>/dev/null && echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	geli init -i ${iter} -B none -J ${passfile0} -K ${keyfile0} md${no} 2>/dev/null || echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	geli attach -k ${keyfile0} -p md${no} 2>/dev/null && echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	geli attach -j ${passfile0} md${no} 2>/dev/null && echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	geli attach -j ${keyfile0} md${no} 2>/dev/null && echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	geli attach -k ${passfile0} -p md${no} 2>/dev/null && echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	geli attach -j ${keyfile0} -k ${passfile0} md${no} 2>/dev/null && echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	geli attach -j ${keyfile0} -k ${keyfile0} md${no} 2>/dev/null && echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	geli attach -j ${passfile0} -k ${passfile0} md${no} 2>/dev/null && echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	geli attach -j ${passfile0} -k ${keyfile0} md${no} 2>/dev/null || echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	geli detach md${no} || echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	cat ${keyfile0} | geli attach -j ${passfile0} -k - md${no} 2>/dev/null || echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	geli detach md${no} || echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	cat ${passfile0} | geli attach -j - -k ${keyfile0} md${no} 2>/dev/null || echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	geli detach md${no} || echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+
+	geli init -i ${iter} -B none -J ${passfile0} -J ${passfile1} -P md${no} 2>/dev/null && echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	geli init -i ${iter} -B none -J ${passfile0} -J ${passfile1} -P -K ${keyfile0} -K ${keyfile1} md${no} 2>/dev/null && echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	geli init -i ${iter} -B none -J ${passfile0} -J ${passfile1} -K ${keyfile0} -K ${keyfile1} md${no} 2>/dev/null || echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	geli attach -k ${keyfile0} -p md${no} 2>/dev/null && echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	geli attach -k ${keyfile1} -p md${no} 2>/dev/null && echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	geli attach -j ${passfile0} md${no} 2>/dev/null && echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	geli attach -j ${passfile1} md${no} 2>/dev/null && echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	geli attach -k ${keyfile0} -k ${keyfile1} -p md${no} 2>/dev/null && echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	geli attach -j ${passfile0} -j ${passfile1} md${no} 2>/dev/null && echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	geli attach -k ${keyfile0} -j ${passfile0} md${no} 2>/dev/null && echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	geli attach -k ${keyfile0} -j ${passfile1} md${no} 2>/dev/null && echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	geli attach -k ${keyfile1} -j ${passfile0} md${no} 2>/dev/null && echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	geli attach -k ${keyfile1} -j ${passfile1} md${no} 2>/dev/null && echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	geli attach -k ${keyfile0} -j ${passfile0} -j ${passfile1} md${no} 2>/dev/null && echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	geli attach -k ${keyfile1} -j ${passfile0} -j ${passfile1} md${no} 2>/dev/null && echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	geli attach -k ${keyfile0} -k ${keyfile1} -j ${passfile0} md${no} 2>/dev/null && echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	geli attach -k ${keyfile0} -k ${keyfile1} -j ${passfile1} md${no} 2>/dev/null && echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	geli attach -k ${keyfile1} -k ${keyfile0} -j ${passfile0} -j ${passfile1} md${no} 2>/dev/null && echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	geli attach -k ${keyfile0} -k ${keyfile1} -j ${passfile1} -j ${passfile0} md${no} 2>/dev/null && echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	geli attach -k ${keyfile1} -k ${keyfile0} -j ${passfile1} -j ${passfile0} md${no} 2>/dev/null && echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	geli attach -j ${passfile0} -j ${passfile1} -k ${keyfile0} -k ${keyfile1} md${no} 2>/dev/null || echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	geli detach md${no} || echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	cat ${passfile0} | geli attach -j - -j ${passfile1} -k ${keyfile0} -k ${keyfile1} md${no} 2>/dev/null || echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	geli detach md${no} || echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	cat ${passfile1} | geli attach -j ${passfile0} -j - -k ${keyfile0} -k ${keyfile1} md${no} 2>/dev/null || echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	geli detach md${no} || echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	cat ${keyfile0} | geli attach -j ${passfile0} -j ${passfile1} -k - -k ${keyfile1} md${no} 2>/dev/null || echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	geli detach md${no} || echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	cat ${keyfile1} | geli attach -j ${passfile0} -j ${passfile1} -k ${keyfile0} -k - md${no} 2>/dev/null || echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	geli detach md${no} || echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	cat ${keyfile0} ${keyfile1} | geli attach -j ${passfile0} -j ${passfile1} -k - md${no} 2>/dev/null || echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	geli detach md${no} || echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	cat ${passfile0} ${passfile1} | awk '{printf "%s", $0}' | geli attach -j - -k ${keyfile0} -k ${keyfile1} md${no} 2>/dev/null || echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+	geli detach md${no} || echo -n "not "
+	echo "ok ${i}"; i=$((i+1))
+done
+
+mdconfig -d -u $no
+rm -f ${keyfile0} ${keyfile1} ${passfile0} ${passfile1}

Added: user/ngie/more-tests2/sbin/geom/class/tests/eli/init_a_test.sh
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/ngie/more-tests2/sbin/geom/class/tests/eli/init_a_test.sh	Mon Nov 16 08:58:03 2015	(r290925)
@@ -0,0 +1,59 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+no=45
+sectors=100
+keyfile=`mktemp $base.XXXXXX` || exit 1
+
+echo "1..1380"
+
+i=1
+for cipher in aes:0 aes:128 aes:256 \
+    aes-xts:0 aes-xts:128 aes-xts:256 \
+    aes-cbc:0 aes-cbc:128 aes-cbc:192 aes-cbc:256 \
+    3des:0 3des:192 \
+    3des-cbc:0 3des-cbc:192 \
+    blowfish:0 blowfish:128 blowfish:160 blowfish:192 blowfish:224 \
+    blowfish:256 blowfish:288 blowfish:320 blowfish:352 blowfish:384 \
+    blowfish:416 blowfish:448 \
+    blowfish-cbc:0 blowfish-cbc:128 blowfish-cbc:160 blowfish-cbc:192 blowfish-cbc:224 \
+    blowfish-cbc:256 blowfish-cbc:288 blowfish-cbc:320 blowfish-cbc:352 blowfish-cbc:384 \
+    blowfish-cbc:416 blowfish-cbc:448 \
+    camellia:0 camellia:128 camellia:192 camellia:256 \
+    camellia-cbc:0 camellia-cbc:128 camellia-cbc:192 camellia-cbc:256; do
+	ealgo=${cipher%%:*}
+	keylen=${cipher##*:}
+	for aalgo in hmac/md5 hmac/sha1 hmac/ripemd160 hmac/sha256 hmac/sha384 hmac/sha512; do
+		for secsize in 512 1024 2048 4096 8192; do
+			rnd=`mktemp $base.XXXXXX` || exit 1
+			mdconfig -a -t malloc -s `expr $secsize \* $sectors + 512`b -u $no || exit 1
+
+			dd if=/dev/random of=${keyfile} bs=512 count=16 >/dev/null 2>&1
+
+			geli init -B none -a $aalgo -e $ealgo -l $keylen -P -K $keyfile -s $secsize md${no} 2>/dev/null
+			geli attach -p -k $keyfile md${no}
+
+			secs=`diskinfo /dev/md${no}.eli | awk '{print $4}'`
+
+			dd if=/dev/random of=${rnd} bs=${secsize} count=${secs} >/dev/null 2>&1
+			dd if=${rnd} of=/dev/md${no}.eli bs=${secsize} count=${secs} 2>/dev/null
+
+			md_rnd=`dd if=${rnd} bs=${secsize} count=${secs} 2>/dev/null | md5`
+			md_ddev=`dd if=/dev/md${no}.eli bs=${secsize} count=${secs} 2>/dev/null | md5`
+
+			if [ ${md_rnd} = ${md_ddev} ]; then
+				echo "ok $i - aalgo=${aalgo} ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
+			else
+				echo "not ok $i - aalgo=${aalgo} ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
+			fi
+			i=$((i+1))
+
+			geli detach md${no}
+			rm -f $rnd
+			mdconfig -d -u $no
+		done
+	done
+done
+
+rm -f $keyfile

Added: user/ngie/more-tests2/sbin/geom/class/tests/eli/init_i_P_test.sh
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/ngie/more-tests2/sbin/geom/class/tests/eli/init_i_P_test.sh	Mon Nov 16 08:58:03 2015	(r290925)
@@ -0,0 +1,22 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+no=45
+sectors=100
+keyfile=`mktemp $base.XXXXXX` || exit 1
+mdconfig -a -t malloc -s `expr $sectors + 1` -u $no || exit 1
+
+echo "1..1"
+
+dd if=/dev/random of=${keyfile} bs=512 count=16 >/dev/null 2>&1
+
+geli init -B none -i 64 -P -K ${keyfile} md${no} 2>/dev/null
+if [ $? -ne 0 ]; then
+	echo "ok 1"
+else
+	echo "not ok 1"
+fi
+
+mdconfig -d -u $no
+rm -f $keyfile

Added: user/ngie/more-tests2/sbin/geom/class/tests/eli/init_test.sh
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/ngie/more-tests2/sbin/geom/class/tests/eli/init_test.sh	Mon Nov 16 08:58:03 2015	(r290925)
@@ -0,0 +1,64 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+no=45
+sectors=100
+keyfile=`mktemp $base.XXXXXX` || exit 1
+
+echo "1..460"
+
+i=1
+for cipher in aes:0 aes:128 aes:256 \
+    aes-xts:0 aes-xts:128 aes-xts:256 \
+    aes-cbc:0 aes-cbc:128 aes-cbc:192 aes-cbc:256 \
+    3des:0 3des:192 \
+    3des-cbc:0 3des-cbc:192 \
+    blowfish:0 blowfish:128 blowfish:160 blowfish:192 blowfish:224 \
+    blowfish:256 blowfish:288 blowfish:320 blowfish:352 blowfish:384 \
+    blowfish:416 blowfish:448 \
+    blowfish-cbc:0 blowfish-cbc:128 blowfish-cbc:160 blowfish-cbc:192 blowfish-cbc:224 \
+    blowfish-cbc:256 blowfish-cbc:288 blowfish-cbc:320 blowfish-cbc:352 blowfish-cbc:384 \
+    blowfish-cbc:416 blowfish-cbc:448 \
+    camellia:0 camellia:128 camellia:192 camellia:256 \
+    camellia-cbc:0 camellia-cbc:128 camellia-cbc:192 camellia-cbc:256; do
+	ealgo=${cipher%%:*}
+	keylen=${cipher##*:}
+	for secsize in 512 1024 2048 4096 8192; do
+		rnd=`mktemp $base.XXXXXX` || exit 1
+		mdconfig -a -t malloc -s `expr $secsize \* $sectors + 512`b -u $no || exit 1
+
+		dd if=/dev/random of=${keyfile} bs=512 count=16 >/dev/null 2>&1
+
+		geli init -B none -e $ealgo -l $keylen -P -K $keyfile -s $secsize md${no} 2>/dev/null
+		geli attach -p -k $keyfile md${no}
+
+		secs=`diskinfo /dev/md${no}.eli | awk '{print $4}'`
+
+		dd if=/dev/random of=${rnd} bs=${secsize} count=${secs} >/dev/null 2>&1
+		dd if=${rnd} of=/dev/md${no}.eli bs=${secsize} count=${secs} 2>/dev/null
+
+		md_rnd=`dd if=${rnd} bs=${secsize} count=${secs} 2>/dev/null | md5`
+		md_ddev=`dd if=/dev/md${no}.eli bs=${secsize} count=${secs} 2>/dev/null | md5`
+		md_edev=`dd if=/dev/md${no} bs=${secsize} count=${secs} 2>/dev/null | md5`
+
+		if [ ${md_rnd} = ${md_ddev} ]; then
+			echo "ok $i - ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
+		else
+			echo "not ok $i - ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
+		fi
+		i=$((i+1))
+		if [ ${md_rnd} != ${md_edev} ]; then
+			echo "ok $i - ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
+		else
+			echo "not ok $i - ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
+		fi
+		i=$((i+1))
+
+		geli detach md${no}
+		rm -f $rnd
+		mdconfig -d -u $no
+	done
+done
+
+rm -f $keyfile

Added: user/ngie/more-tests2/sbin/geom/class/tests/eli/integrity_copy_test.sh
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/ngie/more-tests2/sbin/geom/class/tests/eli/integrity_copy_test.sh	Mon Nov 16 08:58:03 2015	(r290925)
@@ -0,0 +1,98 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+no=45
+sectors=100
+keyfile=`mktemp $base.XXXXXX` || exit 1
+sector=`mktemp $base.XXXXXX` || exit 1
+
+echo "1..5520"
+
+i=1
+for cipher in aes:0 aes:128 aes:256 \
+    aes-xts:0 aes-xts:128 aes-xts:256 \
+    aes-cbc:0 aes-cbc:128 aes-cbc:192 aes-cbc:256 \
+    3des:0 3des:192 \
+    3des-cbc:0 3des-cbc:192 \
+    blowfish:0 blowfish:128 blowfish:160 blowfish:192 blowfish:224 \
+    blowfish:256 blowfish:288 blowfish:320 blowfish:352 blowfish:384 \
+    blowfish:416 blowfish:448 \
+    blowfish-cbc:0 blowfish-cbc:128 blowfish-cbc:160 blowfish-cbc:192 blowfish-cbc:224 \
+    blowfish-cbc:256 blowfish-cbc:288 blowfish-cbc:320 blowfish-cbc:352 blowfish-cbc:384 \
+    blowfish-cbc:416 blowfish-cbc:448 \
+    camellia:0 camellia:128 camellia:192 camellia:256 \
+    camellia-cbc:0 camellia-cbc:128 camellia-cbc:192 camellia-cbc:256; do
+	ealgo=${cipher%%:*}
+	keylen=${cipher##*:}
+	for aalgo in hmac/md5 hmac/sha1 hmac/ripemd160 hmac/sha256 hmac/sha384 hmac/sha512; do
+		for secsize in 512 1024 2048 4096 8192; do
+			#mdconfig -a -t malloc -s `expr $secsize \* 2 + 512`b -u $no || exit 1
+			mdconfig -a -t malloc -s $sectors -u $no || exit 1
+
+			dd if=/dev/random of=${keyfile} bs=512 count=16 >/dev/null 2>&1
+
+			geli init -B none -a $aalgo -e $ealgo -l $keylen -P -K $keyfile -s $secsize md${no} 2>/dev/null
+			geli attach -p -k $keyfile md${no}
+
+			dd if=/dev/random of=/dev/md${no}.eli bs=${secsize} count=1 >/dev/null 2>&1
+
+			dd if=/dev/md${no}.eli bs=${secsize} count=1 >/dev/null 2>&1
+			if [ $? -eq 0 ]; then
+				echo "ok $i - small 1 aalgo=${aalgo} ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
+			else
+				echo "not ok $i - small 1 aalgo=${aalgo} ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
+			fi
+			i=$((i+1))
+
+			geli detach md${no}
+			# Copy first small sector to the second small sector.
+			# This should be detected as corruption.
+			dd if=/dev/md${no} of=${sector} bs=512 count=1 >/dev/null 2>&1
+			dd if=${sector} of=/dev/md${no} bs=512 count=1 seek=1 >/dev/null 2>&1
+			geli attach -p -k $keyfile md${no}
+
+			dd if=/dev/md${no}.eli of=/dev/null bs=${secsize} count=1 >/dev/null 2>&1
+			if [ $? -ne 0 ]; then
+				echo "ok $i - small 2 aalgo=${aalgo} ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
+			else
+				echo "not ok $i - small 2 aalgo=${aalgo} ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
+			fi
+			i=$((i+1))
+
+			ms=`diskinfo /dev/md${no} | awk '{print $3 - 512}'`
+			ns=`diskinfo /dev/md${no}.eli | awk '{print $4}'`
+			usecsize=`echo "($ms / $ns) - (($ms / $ns) % 512)" | bc`
+
+			dd if=/dev/random of=/dev/md${no}.eli bs=${secsize} count=2 >/dev/null 2>&1
+
+			dd if=/dev/md${no}.eli bs=${secsize} count=2 >/dev/null 2>&1
+			if [ $? -eq 0 ]; then
+				echo "ok $i - big 1 aalgo=${aalgo} ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
+			else
+				echo "not ok $i - big 1 aalgo=${aalgo} ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
+			fi
+			i=$((i+1))
+
+			geli detach md${no}
+			# Copy first big sector to the second big sector.
+			# This should be detected as corruption.
+			dd if=/dev/md${no} of=${sector} bs=${usecsize} count=1 >/dev/null 2>&1
+			dd if=${sector} of=/dev/md${no} bs=${usecsize} count=1 seek=1 >/dev/null 2>&1
+			geli attach -p -k $keyfile md${no}
+
+			dd if=/dev/md${no}.eli of=/dev/null bs=${secsize} count=2 >/dev/null 2>&1
+			if [ $? -ne 0 ]; then
+				echo "ok $i - big 2 aalgo=${aalgo} ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
+			else
+				echo "not ok $i - big 2 aalgo=${aalgo} ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
+			fi
+			i=$((i+1))
+
+			geli detach md${no}
+			mdconfig -d -u $no

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201511160858.tAG8w3Fq013149>