1*acbf30ecSPaolo Bonzini#!/bin/bash 2*acbf30ecSPaolo Bonzini# 3*acbf30ecSPaolo Bonzini# Test qemu-img rebase with zero clusters 4*acbf30ecSPaolo Bonzini# 5*acbf30ecSPaolo Bonzini# Copyright (C) 2013 Red Hat, Inc. 6*acbf30ecSPaolo Bonzini# 7*acbf30ecSPaolo Bonzini# This program is free software; you can redistribute it and/or modify 8*acbf30ecSPaolo Bonzini# it under the terms of the GNU General Public License as published by 9*acbf30ecSPaolo Bonzini# the Free Software Foundation; either version 2 of the License, or 10*acbf30ecSPaolo Bonzini# (at your option) any later version. 11*acbf30ecSPaolo Bonzini# 12*acbf30ecSPaolo Bonzini# This program is distributed in the hope that it will be useful, 13*acbf30ecSPaolo Bonzini# but WITHOUT ANY WARRANTY; without even the implied warranty of 14*acbf30ecSPaolo Bonzini# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15*acbf30ecSPaolo Bonzini# GNU General Public License for more details. 16*acbf30ecSPaolo Bonzini# 17*acbf30ecSPaolo Bonzini# You should have received a copy of the GNU General Public License 18*acbf30ecSPaolo Bonzini# along with this program. If not, see <http://www.gnu.org/licenses/>. 19*acbf30ecSPaolo Bonzini# 20*acbf30ecSPaolo Bonzini 21*acbf30ecSPaolo Bonzini# creator 22*acbf30ecSPaolo Bonziniowner=pbonzini@redhat.com 23*acbf30ecSPaolo Bonzini 24*acbf30ecSPaolo Bonziniseq=`basename $0` 25*acbf30ecSPaolo Bonziniecho "QA output created by $seq" 26*acbf30ecSPaolo Bonzini 27*acbf30ecSPaolo Bonzinihere=`pwd` 28*acbf30ecSPaolo Bonzinitmp=/tmp/$$ 29*acbf30ecSPaolo Bonzinistatus=1 # failure is the default! 30*acbf30ecSPaolo Bonzini 31*acbf30ecSPaolo Bonzini_cleanup() 32*acbf30ecSPaolo Bonzini{ 33*acbf30ecSPaolo Bonzini _cleanup_test_img 34*acbf30ecSPaolo Bonzini rm -f $TEST_IMG.old 35*acbf30ecSPaolo Bonzini rm -f $TEST_IMG.new 36*acbf30ecSPaolo Bonzini} 37*acbf30ecSPaolo Bonzinitrap "_cleanup; exit \$status" 0 1 2 3 15 38*acbf30ecSPaolo Bonzini 39*acbf30ecSPaolo Bonzini# get standard environment, filters and checks 40*acbf30ecSPaolo Bonzini. ./common.rc 41*acbf30ecSPaolo Bonzini. ./common.filter 42*acbf30ecSPaolo Bonzini 43*acbf30ecSPaolo Bonzini_supported_fmt qcow2 qed 44*acbf30ecSPaolo Bonzini_supported_proto file 45*acbf30ecSPaolo Bonzini_supported_os Linux 46*acbf30ecSPaolo Bonzini 47*acbf30ecSPaolo Bonziniif test "$IMGFMT" = qcow2 && test $IMGOPTS = ""; then 48*acbf30ecSPaolo Bonzini IMGOPTS=compat=1.1 49*acbf30ecSPaolo Bonzinifi 50*acbf30ecSPaolo Bonzini 51*acbf30ecSPaolo Bonziniecho 52*acbf30ecSPaolo Bonziniecho "== Creating images ==" 53*acbf30ecSPaolo Bonzini 54*acbf30ecSPaolo Bonzinisize=10M 55*acbf30ecSPaolo Bonzini_make_test_img $size 56*acbf30ecSPaolo Bonzini$QEMU_IO -c "write -P 0x40 0 1048576" $TEST_IMG | _filter_qemu_io 57*acbf30ecSPaolo Bonzinimv $TEST_IMG $TEST_IMG.old 58*acbf30ecSPaolo Bonzini 59*acbf30ecSPaolo Bonzini_make_test_img $size 60*acbf30ecSPaolo Bonzini$QEMU_IO -c "write -P 0x5a 0 1048576" $TEST_IMG | _filter_qemu_io 61*acbf30ecSPaolo Bonzinimv $TEST_IMG $TEST_IMG.new 62*acbf30ecSPaolo Bonzini 63*acbf30ecSPaolo Bonzini_make_test_img -b $TEST_IMG.old $size 64*acbf30ecSPaolo Bonzini$QEMU_IO -c "write -z 0 1048576" $TEST_IMG | _filter_qemu_io 65*acbf30ecSPaolo Bonzini 66*acbf30ecSPaolo Bonziniecho 67*acbf30ecSPaolo Bonziniecho "== Rebasing the image ==" 68*acbf30ecSPaolo Bonzini 69*acbf30ecSPaolo Bonzini$QEMU_IMG rebase -b $TEST_IMG.new $TEST_IMG 70*acbf30ecSPaolo Bonzini$QEMU_IO -c "read -P 0x00 0 1048576" $TEST_IMG | _filter_qemu_io 71*acbf30ecSPaolo Bonzini 72*acbf30ecSPaolo Bonzini# success, all done 73*acbf30ecSPaolo Bonziniecho "*** done" 74*acbf30ecSPaolo Bonzinirm -f $seq.full 75*acbf30ecSPaolo Bonzinistatus=0 76