1*514d9da5SStefan Hajnoczi#!/bin/bash 2*514d9da5SStefan Hajnoczi# 3*514d9da5SStefan Hajnoczi# Test that qemu-img info --backing-chain detects infinite loops 4*514d9da5SStefan Hajnoczi# 5*514d9da5SStefan Hajnoczi# Copyright (C) 2012 Red Hat, Inc. 6*514d9da5SStefan Hajnoczi# 7*514d9da5SStefan Hajnoczi# This program is free software; you can redistribute it and/or modify 8*514d9da5SStefan Hajnoczi# it under the terms of the GNU General Public License as published by 9*514d9da5SStefan Hajnoczi# the Free Software Foundation; either version 2 of the License, or 10*514d9da5SStefan Hajnoczi# (at your option) any later version. 11*514d9da5SStefan Hajnoczi# 12*514d9da5SStefan Hajnoczi# This program is distributed in the hope that it will be useful, 13*514d9da5SStefan Hajnoczi# but WITHOUT ANY WARRANTY; without even the implied warranty of 14*514d9da5SStefan Hajnoczi# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15*514d9da5SStefan Hajnoczi# GNU General Public License for more details. 16*514d9da5SStefan Hajnoczi# 17*514d9da5SStefan Hajnoczi# You should have received a copy of the GNU General Public License 18*514d9da5SStefan Hajnoczi# along with this program. If not, see <http://www.gnu.org/licenses/>. 19*514d9da5SStefan Hajnoczi# 20*514d9da5SStefan Hajnoczi 21*514d9da5SStefan Hajnoczi# creator 22*514d9da5SStefan Hajnocziowner=stefanha@redhat.com 23*514d9da5SStefan Hajnoczi 24*514d9da5SStefan Hajnocziseq=`basename $0` 25*514d9da5SStefan Hajnocziecho "QA output created by $seq" 26*514d9da5SStefan Hajnoczi 27*514d9da5SStefan Hajnoczihere=`pwd` 28*514d9da5SStefan Hajnoczitmp=/tmp/$$ 29*514d9da5SStefan Hajnoczistatus=1 # failure is the default! 30*514d9da5SStefan Hajnoczi 31*514d9da5SStefan Hajnoczi_cleanup() 32*514d9da5SStefan Hajnoczi{ 33*514d9da5SStefan Hajnoczi _cleanup_test_img 34*514d9da5SStefan Hajnoczi rm -f $TEST_IMG.[123].base 35*514d9da5SStefan Hajnoczi} 36*514d9da5SStefan Hajnoczitrap "_cleanup; exit \$status" 0 1 2 3 15 37*514d9da5SStefan Hajnoczi 38*514d9da5SStefan Hajnoczi# get standard environment, filters and checks 39*514d9da5SStefan Hajnoczi. ./common.rc 40*514d9da5SStefan Hajnoczi. ./common.filter 41*514d9da5SStefan Hajnoczi 42*514d9da5SStefan Hajnoczi# Any format supporting backing files 43*514d9da5SStefan Hajnoczi_supported_fmt qcow qcow2 vmdk qed 44*514d9da5SStefan Hajnoczi_supported_proto generic 45*514d9da5SStefan Hajnoczi_supported_os Linux 46*514d9da5SStefan Hajnoczi 47*514d9da5SStefan Hajnoczi 48*514d9da5SStefan Hajnoczisize=128M 49*514d9da5SStefan Hajnoczi_make_test_img $size 50*514d9da5SStefan Hajnoczi$QEMU_IMG rebase -u -b $TEST_IMG $TEST_IMG 51*514d9da5SStefan Hajnoczi 52*514d9da5SStefan Hajnocziecho 53*514d9da5SStefan Hajnocziecho "== backing file references self ==" 54*514d9da5SStefan Hajnoczi_img_info --backing-chain 55*514d9da5SStefan Hajnoczi 56*514d9da5SStefan Hajnoczi_make_test_img $size 57*514d9da5SStefan Hajnoczimv $TEST_IMG $TEST_IMG.base 58*514d9da5SStefan Hajnoczi_make_test_img -b $TEST_IMG.base $size 59*514d9da5SStefan Hajnoczi$QEMU_IMG rebase -u -b $TEST_IMG $TEST_IMG.base 60*514d9da5SStefan Hajnoczi 61*514d9da5SStefan Hajnocziecho 62*514d9da5SStefan Hajnocziecho "== parent references self ==" 63*514d9da5SStefan Hajnoczi_img_info --backing-chain 64*514d9da5SStefan Hajnoczi 65*514d9da5SStefan Hajnoczi_make_test_img $size 66*514d9da5SStefan Hajnoczimv $TEST_IMG $TEST_IMG.1.base 67*514d9da5SStefan Hajnoczi_make_test_img -b $TEST_IMG.1.base $size 68*514d9da5SStefan Hajnoczimv $TEST_IMG $TEST_IMG.2.base 69*514d9da5SStefan Hajnoczi_make_test_img -b $TEST_IMG.2.base $size 70*514d9da5SStefan Hajnoczimv $TEST_IMG $TEST_IMG.3.base 71*514d9da5SStefan Hajnoczi_make_test_img -b $TEST_IMG.3.base $size 72*514d9da5SStefan Hajnoczi$QEMU_IMG rebase -u -b $TEST_IMG.2.base $TEST_IMG.1.base 73*514d9da5SStefan Hajnoczi 74*514d9da5SStefan Hajnocziecho 75*514d9da5SStefan Hajnocziecho "== ancestor references another ancestor ==" 76*514d9da5SStefan Hajnoczi_img_info --backing-chain 77*514d9da5SStefan Hajnoczi 78*514d9da5SStefan Hajnoczi_make_test_img $size 79*514d9da5SStefan Hajnoczimv $TEST_IMG $TEST_IMG.1.base 80*514d9da5SStefan Hajnoczi_make_test_img -b $TEST_IMG.1.base $size 81*514d9da5SStefan Hajnoczimv $TEST_IMG $TEST_IMG.2.base 82*514d9da5SStefan Hajnoczi_make_test_img -b $TEST_IMG.2.base $size 83*514d9da5SStefan Hajnoczi 84*514d9da5SStefan Hajnocziecho 85*514d9da5SStefan Hajnocziecho "== finite chain of length 3 (human) ==" 86*514d9da5SStefan Hajnoczi_img_info --backing-chain 87*514d9da5SStefan Hajnoczi 88*514d9da5SStefan Hajnocziecho 89*514d9da5SStefan Hajnocziecho "== finite chain of length 3 (json) ==" 90*514d9da5SStefan Hajnoczi_img_info --backing-chain --output=json 91*514d9da5SStefan Hajnoczi 92*514d9da5SStefan Hajnoczi# success, all done 93*514d9da5SStefan Hajnocziecho "*** done" 94*514d9da5SStefan Hajnoczirm -f $seq.full 95*514d9da5SStefan Hajnoczistatus=0 96