qemu/tests/qemu-iotests/301
<<
>>
Prefs
   1#!/usr/bin/env bash
   2# group: backing quick
   3#
   4# Test qcow backing file warnings
   5#
   6# Copyright (C) 2020-2021 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
  22seq=`basename $0`
  23echo "QA output created by $seq"
  24
  25status=1 # failure is the default!
  26
  27_cleanup()
  28{
  29    _cleanup_test_img
  30    _rm_test_img "$TEST_IMG.qcow2"
  31}
  32trap "_cleanup; exit \$status" 0 1 2 3 15
  33
  34# get standard environment, filters and checks
  35. ./common.rc
  36. ./common.filter
  37
  38_supported_fmt qcow
  39_supported_proto file
  40_supported_os Linux
  41
  42size=32M
  43
  44echo
  45echo "== qcow backed by qcow =="
  46
  47TEST_IMG="$TEST_IMG.base" _make_test_img $size
  48_make_test_img -b "$TEST_IMG.base" $size
  49_make_test_img -b "$TEST_IMG.base" -F $IMGFMT $size
  50_img_info
  51
  52echo
  53echo "== mismatched command line detection =="
  54
  55_make_test_img -b "$TEST_IMG.base" -F vmdk
  56_make_test_img -b "$TEST_IMG.base" -F vmdk $size
  57echo
  58# Use of -u bypasses the backing format sanity check
  59_make_test_img -u -b "$TEST_IMG.base" -F vmdk
  60_make_test_img -u -b "$TEST_IMG.base" -F vmdk $size
  61echo
  62# But the format must still be recognized
  63_make_test_img -b "$TEST_IMG.base" -F garbage $size
  64_make_test_img -u -b "$TEST_IMG.base" -F garbage $size
  65_img_info
  66
  67echo
  68echo "== qcow backed by raw =="
  69
  70rm "$TEST_IMG.base"
  71truncate --size=$size "$TEST_IMG.base"
  72_make_test_img -b "$TEST_IMG.base" $size
  73_make_test_img -b "$TEST_IMG.base" -F raw $size
  74_img_info
  75
  76echo
  77echo "== commit cannot change type of raw backing file =="
  78TEST_IMG="$TEST_IMG.qcow2" IMGFMT=qcow2 _make_test_img $size
  79truncate --size=$size "$TEST_IMG.qcow2"
  80$QEMU_IMG convert -n -f raw -O $IMGFMT "$TEST_IMG.qcow2" "$TEST_IMG"
  81$QEMU_IMG commit -f $IMGFMT "$TEST_IMG" && echo "unexpected success"
  82TEST_IMG="$TEST_IMG.base" _img_info
  83
  84# success, all done
  85echo "*** done"
  86rm -f $seq.full
  87status=0
  88