qemu/tests/qemu-iotests/098
<<
>>
Prefs
   1#!/usr/bin/env bash
   2# group: rw auto backing quick
   3#
   4# Test qcow2's bdrv_make_empty for images without internal snapshots
   5#
   6# Copyright (C) 2014 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=hreitz@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 -f "$TEST_DIR/blkdebug.conf"
  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_supported_fmt qcow2
  43_supported_proto file fuse
  44# The code path we want to test here only works for compat=1.1 images;
  45# blkdebug can only inject errors on bs->file, so external data files
  46# do not work with this test
  47_unsupported_imgopts 'compat=0.10' data_file
  48
  49for event in l1_update empty_image_prepare reftable_update refblock_alloc; do
  50
  51echo
  52echo "=== $event ==="
  53echo
  54
  55TEST_IMG="$TEST_IMG.base" _make_test_img 64M
  56_make_test_img -b "$TEST_IMG.base" -F $IMGFMT 64M
  57
  58# Some data that can be leaked when emptying the top image
  59$QEMU_IO -c 'write 0 64k' "$TEST_IMG" | _filter_qemu_io
  60
  61cat > "$TEST_DIR/blkdebug.conf" <<EOF
  62[inject-error]
  63event = "$event"
  64EOF
  65
  66$QEMU_IMG commit "blkdebug:$TEST_DIR/blkdebug.conf:$TEST_IMG" 2>&1 \
  67    | _filter_testdir | _filter_imgfmt
  68
  69# There may be errors, but they should be fixed by opening the image
  70$QEMU_IO -c close "$TEST_IMG"
  71
  72_check_test_img
  73
  74done
  75
  76
  77rm -f "$TEST_DIR/blkdebug.conf"
  78
  79# success, all done
  80echo "*** done"
  81rm -f $seq.full
  82status=0
  83