1*087ab8e7SDaniel P. Berrangé#!/usr/bin/env bash 2*087ab8e7SDaniel P. Berrangé# 3*087ab8e7SDaniel P. Berrangé# Test ref count checks on encrypted images 4*087ab8e7SDaniel P. Berrangé# 5*087ab8e7SDaniel P. Berrangé# Copyright (C) 2019 Red Hat, Inc. 6*087ab8e7SDaniel P. Berrangé# 7*087ab8e7SDaniel P. Berrangé# This program is free software; you can redistribute it and/or modify 8*087ab8e7SDaniel P. Berrangé# it under the terms of the GNU General Public License as published by 9*087ab8e7SDaniel P. Berrangé# the Free Software Foundation; either version 2 of the License, or 10*087ab8e7SDaniel P. Berrangé# (at your option) any later version. 11*087ab8e7SDaniel P. Berrangé# 12*087ab8e7SDaniel P. Berrangé# This program is distributed in the hope that it will be useful, 13*087ab8e7SDaniel P. Berrangé# but WITHOUT ANY WARRANTY; without even the implied warranty of 14*087ab8e7SDaniel P. Berrangé# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15*087ab8e7SDaniel P. Berrangé# GNU General Public License for more details. 16*087ab8e7SDaniel P. Berrangé# 17*087ab8e7SDaniel P. Berrangé# You should have received a copy of the GNU General Public License 18*087ab8e7SDaniel P. Berrangé# along with this program. If not, see <http://www.gnu.org/licenses/>. 19*087ab8e7SDaniel P. Berrangé# 20*087ab8e7SDaniel P. Berrangé 21*087ab8e7SDaniel P. Berrangé# creator 22*087ab8e7SDaniel P. Berrangéowner=berrange@redhat.com 23*087ab8e7SDaniel P. Berrangé 24*087ab8e7SDaniel P. Berrangéseq=`basename $0` 25*087ab8e7SDaniel P. Berrangéecho "QA output created by $seq" 26*087ab8e7SDaniel P. Berrangé 27*087ab8e7SDaniel P. Berrangéstatus=1 # failure is the default! 28*087ab8e7SDaniel P. Berrangé 29*087ab8e7SDaniel P. Berrangé_cleanup() 30*087ab8e7SDaniel P. Berrangé{ 31*087ab8e7SDaniel P. Berrangé _cleanup_test_img 32*087ab8e7SDaniel P. Berrangé} 33*087ab8e7SDaniel P. Berrangétrap "_cleanup; exit \$status" 0 1 2 3 15 34*087ab8e7SDaniel P. Berrangé 35*087ab8e7SDaniel P. Berrangé# get standard environment, filters and checks 36*087ab8e7SDaniel P. Berrangé. ./common.rc 37*087ab8e7SDaniel P. Berrangé. ./common.filter 38*087ab8e7SDaniel P. Berrangé 39*087ab8e7SDaniel P. Berrangé_supported_fmt qcow2 40*087ab8e7SDaniel P. Berrangé_supported_proto generic 41*087ab8e7SDaniel P. Berrangé_supported_os Linux 42*087ab8e7SDaniel P. Berrangé 43*087ab8e7SDaniel P. Berrangé 44*087ab8e7SDaniel P. Berrangésize=1M 45*087ab8e7SDaniel P. Berrangé 46*087ab8e7SDaniel P. BerrangéSECRET="secret,id=sec0,data=astrochicken" 47*087ab8e7SDaniel P. Berrangé 48*087ab8e7SDaniel P. BerrangéIMGSPEC="driver=$IMGFMT,file.filename=$TEST_IMG,encrypt.key-secret=sec0" 49*087ab8e7SDaniel P. BerrangéQEMU_IO_OPTIONS=$QEMU_IO_OPTIONS_NO_FMT 50*087ab8e7SDaniel P. Berrangé 51*087ab8e7SDaniel P. Berrangé_run_test() 52*087ab8e7SDaniel P. Berrangé{ 53*087ab8e7SDaniel P. Berrangé IMGOPTSSYNTAX=true 54*087ab8e7SDaniel P. Berrangé OLD_TEST_IMG="$TEST_IMG" 55*087ab8e7SDaniel P. Berrangé TEST_IMG="driver=$IMGFMT,file.filename=$TEST_IMG,encrypt.key-secret=sec0" 56*087ab8e7SDaniel P. Berrangé QEMU_IMG_EXTRA_ARGS="--image-opts --object $SECRET" 57*087ab8e7SDaniel P. Berrangé 58*087ab8e7SDaniel P. Berrangé echo 59*087ab8e7SDaniel P. Berrangé echo "== cluster size $csize" 60*087ab8e7SDaniel P. Berrangé echo "== checking image refcounts ==" 61*087ab8e7SDaniel P. Berrangé _check_test_img 62*087ab8e7SDaniel P. Berrangé 63*087ab8e7SDaniel P. Berrangé echo 64*087ab8e7SDaniel P. Berrangé echo "== writing some data ==" 65*087ab8e7SDaniel P. Berrangé $QEMU_IO -c "write -P 0x9 0 1" $QEMU_IMG_EXTRA_ARGS $TEST_IMG | _filter_qemu_io | _filter_testdir 66*087ab8e7SDaniel P. Berrangé echo 67*087ab8e7SDaniel P. Berrangé echo "== rechecking image refcounts ==" 68*087ab8e7SDaniel P. Berrangé _check_test_img 69*087ab8e7SDaniel P. Berrangé 70*087ab8e7SDaniel P. Berrangé echo 71*087ab8e7SDaniel P. Berrangé echo "== writing some more data ==" 72*087ab8e7SDaniel P. Berrangé $QEMU_IO -c "write -P 0x9 $csize 1" $QEMU_IMG_EXTRA_ARGS $TEST_IMG | _filter_qemu_io | _filter_testdir 73*087ab8e7SDaniel P. Berrangé echo 74*087ab8e7SDaniel P. Berrangé echo "== rechecking image refcounts ==" 75*087ab8e7SDaniel P. Berrangé _check_test_img 76*087ab8e7SDaniel P. Berrangé 77*087ab8e7SDaniel P. Berrangé TEST_IMG="$OLD_TEST_IMG" 78*087ab8e7SDaniel P. Berrangé QEMU_IMG_EXTRA_ARGS= 79*087ab8e7SDaniel P. Berrangé IMGOPTSSYNTAX= 80*087ab8e7SDaniel P. Berrangé} 81*087ab8e7SDaniel P. Berrangé 82*087ab8e7SDaniel P. Berrangé 83*087ab8e7SDaniel P. Berrangéecho 84*087ab8e7SDaniel P. Berrangéecho "testing LUKS qcow2 encryption" 85*087ab8e7SDaniel P. Berrangéecho 86*087ab8e7SDaniel P. Berrangé 87*087ab8e7SDaniel P. Berrangéfor csize in 512 2048 32768 88*087ab8e7SDaniel P. Berrangédo 89*087ab8e7SDaniel P. Berrangé _make_test_img --object $SECRET -o "encrypt.format=luks,encrypt.key-secret=sec0,encrypt.iter-time=10,cluster_size=$csize" $size 90*087ab8e7SDaniel P. Berrangé _run_test 91*087ab8e7SDaniel P. Berrangé _cleanup_test_img 92*087ab8e7SDaniel P. Berrangédone 93*087ab8e7SDaniel P. Berrangé 94*087ab8e7SDaniel P. Berrangé# success, all done 95*087ab8e7SDaniel P. Berrangéecho "*** done" 96*087ab8e7SDaniel P. Berrangérm -f $seq.full 97*087ab8e7SDaniel P. Berrangéstatus=0 98