Add integritysetup bitmap mode test.

This commit is contained in:
Milan Broz
2019-06-04 20:05:13 +02:00
parent 9c3a020ecf
commit df0faef9ca

View File

@@ -51,6 +51,9 @@ function dm_integrity_features()
DM_INTEGRITY_META=1 DM_INTEGRITY_META=1
DM_INTEGRITY_RECALC=1 DM_INTEGRITY_RECALC=1
} }
[ $VER_MIN -gt 2 ] && {
DM_INTEGRITY_BITMAP=1
}
} }
add_device() { add_device() {
@@ -156,24 +159,29 @@ intformat() # alg alg_out tagsize sector_size csum [keyfile keysize]
echo "[OK]" echo "[OK]"
} }
int_error_detection() # alg tagsize sector_size key_file key_size int_error_detection() # mode alg tagsize sector_size key_file key_size
{ {
if [ -n "$5" ] ; then if [ "$1" == "B" ] ; then
KEY_PARAMS="--integrity-key-file $4 --integrity-key-size $5" INT_MODE="-B"
else
INT_MODE=""
fi
if [ -n "$6" ] ; then
KEY_PARAMS="--integrity-key-file $5 --integrity-key-size $6"
else else
KEY_PARAMS="" KEY_PARAMS=""
fi fi
dd if=/dev/zero of=$DEV bs=1M count=32 >/dev/null 2>&1 dd if=/dev/zero of=$DEV bs=1M count=32 >/dev/null 2>&1
echo -n "[INTEGRITY:$1:$2:$3]" echo -n "[INTEGRITY:$1:$2:$3:$4]"
echo -n "[FORMAT]" echo -n "[FORMAT]"
$INTSETUP format -q --integrity $1 --tag-size $2 --sector-size $3 $KEY_PARAMS $DEV || fail "Cannot format device." $INTSETUP format -q --integrity $2 --tag-size $3 --sector-size $4 $KEY_PARAMS $DEV $INT_MODE || fail "Cannot format device."
echo -n "[ACTIVATE]" echo -n "[ACTIVATE]"
$INTSETUP open $DEV $DEV_NAME --integrity $1 --integrity-no-journal $KEY_PARAMS || fail "Cannot activate device." $INTSETUP open $DEV $DEV_NAME --integrity $2 --integrity-no-journal $KEY_PARAMS $INT_MODE || fail "Cannot activate device."
if [ -n "$4" -a -n "$5" ]; then if [ -n "$5" -a -n "$6" ]; then
echo -n "[KEYED HASH]" echo -n "[KEYED HASH]"
KEY_HEX=$(xxd -c 256 -l $5 -p $4) KEY_HEX=$(xxd -c 256 -l $6 -p $5)
[ -z "$KEY_HEX" ] && fail "Cannot decode key." [ -z "$KEY_HEX" ] && fail "Cannot decode key."
dmsetup table --showkeys $DEV_NAME | grep -q $KEY_HEX || fail "Key mismatch." dmsetup table --showkeys $DEV_NAME | grep -q $KEY_HEX || fail "Key mismatch."
fi fi
@@ -191,9 +199,8 @@ int_error_detection() # alg tagsize sector_size key_file key_size
echo -n "Z" | dd of=$DEV bs=1 seek=$OFF_DEC conv=notrunc >/dev/null 2>&1 || fail "Cannot write to device." echo -n "Z" | dd of=$DEV bs=1 seek=$OFF_DEC conv=notrunc >/dev/null 2>&1 || fail "Cannot write to device."
echo -n "[DETECT ERROR]" echo -n "[DETECT ERROR]"
$INTSETUP open $DEV $DEV_NAME --integrity $1 $KEY_PARAMS || fail "Cannot activate device." $INTSETUP open $DEV $DEV_NAME --integrity $2 $KEY_PARAMS $INT_MODE || fail "Cannot activate device."
dd if=/dev/mapper/$DEV_NAME >/dev/null 2>&1 && fail "Error detection failed." dd if=/dev/mapper/$DEV_NAME >/dev/null 2>&1 && fail "Error detection failed."
echo -n "[REMOVE]" echo -n "[REMOVE]"
$INTSETUP close $DEV_NAME || fail "Cannot deactivate device." $INTSETUP close $DEV_NAME || fail "Cannot deactivate device."
echo "[OK]" echo "[OK]"
@@ -301,19 +308,19 @@ intformat sha256 sha256 32 4096 33f7dfa5163ca9f740383fb8b0919574e38
intformat hmac-sha256 hmac\(sha256\) 32 4096 33f7dfa5163ca9f740383fb8b0919574e38a7b20a94a4170fde4238196b7c4b4 $KEY_FILE 32 intformat hmac-sha256 hmac\(sha256\) 32 4096 33f7dfa5163ca9f740383fb8b0919574e38a7b20a94a4170fde4238196b7c4b4 $KEY_FILE 32
echo "Error detection tests:" echo "Error detection tests:"
int_error_detection crc32c 4 512 int_error_detection J crc32c 4 512
int_error_detection crc32c 4 4096 int_error_detection J crc32c 4 4096
int_error_detection crc32 4 512 int_error_detection J crc32 4 512
int_error_detection crc32 4 4096 int_error_detection J crc32 4 4096
int_error_detection sha1 20 512 int_error_detection J sha1 20 512
int_error_detection sha1 16 512 int_error_detection J sha1 16 512
int_error_detection sha1 20 4096 int_error_detection J sha1 20 4096
int_error_detection sha256 32 512 int_error_detection J sha256 32 512
int_error_detection sha256 32 4096 int_error_detection J sha256 32 4096
which xxd >/dev/null 2>&1 || skip "WARNING: xxd tool required." which xxd >/dev/null 2>&1 || skip "WARNING: xxd tool required."
int_error_detection hmac-sha256 32 512 $KEY_FILE 32 int_error_detection J hmac-sha256 32 512 $KEY_FILE 32
int_error_detection hmac-sha256 32 4096 $KEY_FILE 32 int_error_detection J hmac-sha256 32 4096 $KEY_FILE 32
echo "Journal parameters tests:" echo "Journal parameters tests:"
# Watermark is calculated in kernel, so it can be rounded down/up # Watermark is calculated in kernel, so it can be rounded down/up
@@ -362,4 +369,24 @@ else
echo "[N/A]" echo "[N/A]"
fi fi
echo -n "Bitmap mode parameters:"
if [ -n "$DM_INTEGRITY_BITMAP" ] ; then
add_device
$INTSETUP format -q $DEV --integrity-bitmap-mode $DEV2 || fail "Cannot format device."
$INTSETUP open $DEV --integrity-bitmap-mode --bitmap-sectors-per-bit 65536 --bitmap-flush-time 5000 $DEV_NAME || fail "Cannot activate device."
$INTSETUP status $DEV_NAME | grep -q 'bitmap 512-byte sectors per bit: 65536' || fail
$INTSETUP status $DEV_NAME | grep -q 'bitmap flush interval: 5000 ms' || fail
$INTSETUP close $DEV_NAME fail "Cannot deactivate device."
echo "[OK]"
echo "Bitmap error detection tests:"
int_error_detection B crc32c 4 512
int_error_detection B crc32c 4 4096
int_error_detection B sha256 32 512
int_error_detection B sha256 32 4096
int_error_detection B hmac-sha256 32 512 $KEY_FILE 32
int_error_detection B hmac-sha256 32 4096 $KEY_FILE 32
else
echo "[N/A]"
fi
cleanup cleanup