1087ab8e7SDaniel P. Berrangé#!/usr/bin/env bash 2087ab8e7SDaniel P. Berrangé# 3087ab8e7SDaniel P. Berrangé# Test ref count checks on encrypted images 4087ab8e7SDaniel P. Berrangé# 5087ab8e7SDaniel P. Berrangé# Copyright (C) 2019 Red Hat, Inc. 6087ab8e7SDaniel P. Berrangé# 7087ab8e7SDaniel P. Berrangé# This program is free software; you can redistribute it and/or modify 8087ab8e7SDaniel P. Berrangé# it under the terms of the GNU General Public License as published by 9087ab8e7SDaniel P. Berrangé# the Free Software Foundation; either version 2 of the License, or 10087ab8e7SDaniel P. Berrangé# (at your option) any later version. 11087ab8e7SDaniel P. Berrangé# 12087ab8e7SDaniel P. Berrangé# This program is distributed in the hope that it will be useful, 13087ab8e7SDaniel P. Berrangé# but WITHOUT ANY WARRANTY; without even the implied warranty of 14087ab8e7SDaniel P. Berrangé# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15087ab8e7SDaniel P. Berrangé# GNU General Public License for more details. 16087ab8e7SDaniel P. Berrangé# 17087ab8e7SDaniel P. Berrangé# You should have received a copy of the GNU General Public License 18087ab8e7SDaniel P. Berrangé# along with this program. If not, see <http://www.gnu.org/licenses/>. 19087ab8e7SDaniel P. Berrangé# 20087ab8e7SDaniel P. Berrangé 21087ab8e7SDaniel P. Berrangé# creator 22087ab8e7SDaniel P. Berrangéowner=berrange@redhat.com 23087ab8e7SDaniel P. Berrangé 24087ab8e7SDaniel P. Berrangéseq=`basename $0` 25087ab8e7SDaniel P. Berrangéecho "QA output created by $seq" 26087ab8e7SDaniel P. Berrangé 27087ab8e7SDaniel P. Berrangéstatus=1 # failure is the default! 28087ab8e7SDaniel P. Berrangé 29087ab8e7SDaniel P. Berrangé_cleanup() 30087ab8e7SDaniel P. Berrangé{ 31087ab8e7SDaniel P. Berrangé _cleanup_test_img 32087ab8e7SDaniel P. Berrangé} 33087ab8e7SDaniel P. Berrangétrap "_cleanup; exit \$status" 0 1 2 3 15 34087ab8e7SDaniel P. Berrangé 35087ab8e7SDaniel P. Berrangé# get standard environment, filters and checks 36087ab8e7SDaniel P. Berrangé. ./common.rc 37087ab8e7SDaniel P. Berrangé. ./common.filter 38087ab8e7SDaniel P. Berrangé 39087ab8e7SDaniel P. Berrangé_supported_fmt qcow2 40087ab8e7SDaniel P. Berrangé_supported_proto generic 41087ab8e7SDaniel P. Berrangé_supported_os Linux 42*d2a839edSMax Reitz_require_working_luks 43087ab8e7SDaniel P. Berrangé 44087ab8e7SDaniel P. Berrangé 45087ab8e7SDaniel P. Berrangésize=1M 46087ab8e7SDaniel P. Berrangé 47087ab8e7SDaniel P. BerrangéSECRET="secret,id=sec0,data=astrochicken" 48087ab8e7SDaniel P. Berrangé 49087ab8e7SDaniel P. BerrangéIMGSPEC="driver=$IMGFMT,file.filename=$TEST_IMG,encrypt.key-secret=sec0" 50087ab8e7SDaniel P. BerrangéQEMU_IO_OPTIONS=$QEMU_IO_OPTIONS_NO_FMT 51087ab8e7SDaniel P. Berrangé 52087ab8e7SDaniel P. Berrangé_run_test() 53087ab8e7SDaniel P. Berrangé{ 54087ab8e7SDaniel P. Berrangé IMGOPTSSYNTAX=true 55087ab8e7SDaniel P. Berrangé OLD_TEST_IMG="$TEST_IMG" 56087ab8e7SDaniel P. Berrangé TEST_IMG="driver=$IMGFMT,file.filename=$TEST_IMG,encrypt.key-secret=sec0" 57087ab8e7SDaniel P. Berrangé QEMU_IMG_EXTRA_ARGS="--image-opts --object $SECRET" 58087ab8e7SDaniel P. Berrangé 59087ab8e7SDaniel P. Berrangé echo 60087ab8e7SDaniel P. Berrangé echo "== cluster size $csize" 61087ab8e7SDaniel P. Berrangé echo "== checking image refcounts ==" 62087ab8e7SDaniel P. Berrangé _check_test_img 63087ab8e7SDaniel P. Berrangé 64087ab8e7SDaniel P. Berrangé echo 65087ab8e7SDaniel P. Berrangé echo "== writing some data ==" 66087ab8e7SDaniel P. Berrangé $QEMU_IO -c "write -P 0x9 0 1" $QEMU_IMG_EXTRA_ARGS $TEST_IMG | _filter_qemu_io | _filter_testdir 67087ab8e7SDaniel P. Berrangé echo 68087ab8e7SDaniel P. Berrangé echo "== rechecking image refcounts ==" 69087ab8e7SDaniel P. Berrangé _check_test_img 70087ab8e7SDaniel P. Berrangé 71087ab8e7SDaniel P. Berrangé echo 72087ab8e7SDaniel P. Berrangé echo "== writing some more data ==" 73087ab8e7SDaniel P. Berrangé $QEMU_IO -c "write -P 0x9 $csize 1" $QEMU_IMG_EXTRA_ARGS $TEST_IMG | _filter_qemu_io | _filter_testdir 74087ab8e7SDaniel P. Berrangé echo 75087ab8e7SDaniel P. Berrangé echo "== rechecking image refcounts ==" 76087ab8e7SDaniel P. Berrangé _check_test_img 77087ab8e7SDaniel P. Berrangé 78087ab8e7SDaniel P. Berrangé TEST_IMG="$OLD_TEST_IMG" 79087ab8e7SDaniel P. Berrangé QEMU_IMG_EXTRA_ARGS= 80087ab8e7SDaniel P. Berrangé IMGOPTSSYNTAX= 81087ab8e7SDaniel P. Berrangé} 82087ab8e7SDaniel P. Berrangé 83087ab8e7SDaniel P. Berrangé 84087ab8e7SDaniel P. Berrangéecho 85087ab8e7SDaniel P. Berrangéecho "testing LUKS qcow2 encryption" 86087ab8e7SDaniel P. Berrangéecho 87087ab8e7SDaniel P. Berrangé 88087ab8e7SDaniel P. Berrangéfor csize in 512 2048 32768 89087ab8e7SDaniel P. Berrangédo 90087ab8e7SDaniel P. Berrangé _make_test_img --object $SECRET -o "encrypt.format=luks,encrypt.key-secret=sec0,encrypt.iter-time=10,cluster_size=$csize" $size 91087ab8e7SDaniel P. Berrangé _run_test 92087ab8e7SDaniel P. Berrangé _cleanup_test_img 93087ab8e7SDaniel P. Berrangédone 94087ab8e7SDaniel P. Berrangé 95087ab8e7SDaniel P. Berrangé# success, all done 96087ab8e7SDaniel P. Berrangéecho "*** done" 97087ab8e7SDaniel P. Berrangérm -f $seq.full 98087ab8e7SDaniel P. Berrangéstatus=0 99