xref: /qemu/tests/qemu-iotests/043 (revision 514d9da5a9a820b43a2cb90b439dd570a7835114)
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