cachepc-qemu

Fork of AMDESE/qemu with changes for cachepc side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-qemu
Log | Files | Refs | Submodules | LICENSE | sfeed.txt

190 (3517B)


      1#!/usr/bin/env bash
      2# group: rw auto quick
      3#
      4# qemu-img measure sub-command tests on huge qcow2 files
      5#
      6# Copyright (C) 2017-2020 Red Hat, Inc.
      7#
      8# This program is free software; you can redistribute it and/or modify
      9# it under the terms of the GNU General Public License as published by
     10# the Free Software Foundation; either version 2 of the License, or
     11# (at your option) any later version.
     12#
     13# This program is distributed in the hope that it will be useful,
     14# but WITHOUT ANY WARRANTY; without even the implied warranty of
     15# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     16# GNU General Public License for more details.
     17#
     18# You should have received a copy of the GNU General Public License
     19# along with this program.  If not, see <http://www.gnu.org/licenses/>.
     20#
     21
     22# creator
     23owner=eblake@redhat.com
     24
     25seq=`basename $0`
     26echo "QA output created by $seq"
     27
     28status=1    # failure is the default!
     29
     30_cleanup()
     31{
     32    _cleanup_test_img
     33    _rm_test_img "$TEST_IMG.converted"
     34}
     35trap "_cleanup; exit \$status" 0 1 2 3 15
     36
     37# get standard environment, filters and checks
     38. ./common.rc
     39. ./common.filter
     40. ./common.pattern
     41
     42# See 178 for more extensive tests across more formats
     43_supported_fmt qcow2
     44_supported_proto file
     45# compat=0.10 does not support bitmaps
     46_unsupported_imgopts 'compat=0.10'
     47
     48echo "== Huge file without bitmaps =="
     49echo
     50
     51_make_test_img -o 'cluster_size=2M' 2T
     52
     53$QEMU_IMG measure -O raw -f qcow2 "$TEST_IMG"
     54$QEMU_IMG measure -O qcow2 -o cluster_size=64k -f qcow2 "$TEST_IMG"
     55$QEMU_IMG measure -O qcow2 -o cluster_size=2M -f qcow2 "$TEST_IMG"
     56
     57echo
     58echo "== Huge file with bitmaps =="
     59echo
     60
     61$QEMU_IMG bitmap --add --granularity 512 -f qcow2 "$TEST_IMG" b1
     62$QEMU_IMG bitmap --add -g 2M -f qcow2 "$TEST_IMG" b2
     63
     64# No bitmap without a source
     65$QEMU_IMG measure -O qcow2 --size 10M
     66# No bitmap output, since raw does not support it
     67$QEMU_IMG measure -O raw -f qcow2 "$TEST_IMG"
     68# No bitmap output, since no bitmaps on raw source. Munge required size, as
     69# some filesystems store the qcow2 file with less sparseness than others
     70$QEMU_IMG measure -O qcow2 -f raw "$TEST_IMG" |
     71    sed '/^required size:/ s/[0-9][0-9]*/SIZE/'
     72# No bitmap output, since v2 does not support it
     73$QEMU_IMG measure -O qcow2 -o compat=0.10 -f qcow2 "$TEST_IMG"
     74
     75# Compute expected output: bitmap clusters + bitmap tables + bitmaps directory
     76echo
     77val2T=$((2*1024*1024*1024*1024))
     78cluster=$((64*1024))
     79b1clusters=$(( (val2T/512/8 + cluster - 1) / cluster ))
     80b2clusters=$(( (val2T/2/1024/1024/8 + cluster - 1) / cluster ))
     81echo expected bitmap $((b1clusters * cluster +
     82                        (b1clusters * 8 + cluster - 1) / cluster * cluster +
     83                        b2clusters * cluster +
     84                        (b2clusters * 8 + cluster - 1) / cluster * cluster +
     85                        cluster))
     86$QEMU_IMG measure -O qcow2 -o cluster_size=64k -f qcow2 "$TEST_IMG"
     87
     88# Compute expected output: bitmap clusters + bitmap tables + bitmaps directory
     89echo
     90cluster=$((2*1024*1024))
     91b1clusters=$(( (val2T/512/8 + cluster - 1) / cluster ))
     92b2clusters=$(( (val2T/2/1024/1024/8 + cluster - 1) / cluster ))
     93echo expected bitmap $((b1clusters * cluster +
     94                        (b1clusters * 8 + cluster - 1) / cluster * cluster +
     95                        b2clusters * cluster +
     96                        (b2clusters * 8 + cluster - 1) / cluster * cluster +
     97                        cluster))
     98$QEMU_IMG measure --output=json -O qcow2 -o cluster_size=2M -f qcow2 "$TEST_IMG"
     99
    100# success, all done
    101echo "*** done"
    102rm -f $seq.full
    103status=0