xref: /qemu/tests/qemu-iotests/043 (revision dbcdd7cb04595cc0015f2dba6be751faa63fab00)
1514d9da5SStefan Hajnoczi#!/bin/bash
2514d9da5SStefan Hajnoczi#
3514d9da5SStefan Hajnoczi# Test that qemu-img info --backing-chain detects infinite loops
4514d9da5SStefan Hajnoczi#
5514d9da5SStefan Hajnoczi# Copyright (C) 2012 Red Hat, Inc.
6514d9da5SStefan Hajnoczi#
7514d9da5SStefan Hajnoczi# This program is free software; you can redistribute it and/or modify
8514d9da5SStefan Hajnoczi# it under the terms of the GNU General Public License as published by
9514d9da5SStefan Hajnoczi# the Free Software Foundation; either version 2 of the License, or
10514d9da5SStefan Hajnoczi# (at your option) any later version.
11514d9da5SStefan Hajnoczi#
12514d9da5SStefan Hajnoczi# This program is distributed in the hope that it will be useful,
13514d9da5SStefan Hajnoczi# but WITHOUT ANY WARRANTY; without even the implied warranty of
14514d9da5SStefan Hajnoczi# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15514d9da5SStefan Hajnoczi# GNU General Public License for more details.
16514d9da5SStefan Hajnoczi#
17514d9da5SStefan Hajnoczi# You should have received a copy of the GNU General Public License
18514d9da5SStefan Hajnoczi# along with this program.  If not, see <http://www.gnu.org/licenses/>.
19514d9da5SStefan Hajnoczi#
20514d9da5SStefan Hajnoczi
21514d9da5SStefan Hajnoczi# creator
22514d9da5SStefan Hajnocziowner=stefanha@redhat.com
23514d9da5SStefan Hajnoczi
24514d9da5SStefan Hajnocziseq=`basename $0`
25514d9da5SStefan Hajnocziecho "QA output created by $seq"
26514d9da5SStefan Hajnoczi
27514d9da5SStefan Hajnoczihere=`pwd`
28514d9da5SStefan Hajnoczitmp=/tmp/$$
29514d9da5SStefan Hajnoczistatus=1	# failure is the default!
30514d9da5SStefan Hajnoczi
31514d9da5SStefan Hajnoczi_cleanup()
32514d9da5SStefan Hajnoczi{
33514d9da5SStefan Hajnoczi    _cleanup_test_img
34514d9da5SStefan Hajnoczi    rm -f $TEST_IMG.[123].base
35514d9da5SStefan Hajnoczi}
36514d9da5SStefan Hajnoczitrap "_cleanup; exit \$status" 0 1 2 3 15
37514d9da5SStefan Hajnoczi
38514d9da5SStefan Hajnoczi# get standard environment, filters and checks
39514d9da5SStefan Hajnoczi. ./common.rc
40514d9da5SStefan Hajnoczi. ./common.filter
41514d9da5SStefan Hajnoczi
42514d9da5SStefan Hajnoczi# Any format supporting backing files
43*dbcdd7cbSFam Zheng_supported_fmt qcow2 qed
44514d9da5SStefan Hajnoczi_supported_proto generic
45514d9da5SStefan Hajnoczi_supported_os Linux
46514d9da5SStefan Hajnoczi
47514d9da5SStefan Hajnoczi
48514d9da5SStefan Hajnoczisize=128M
49514d9da5SStefan Hajnoczi_make_test_img $size
50514d9da5SStefan Hajnoczi$QEMU_IMG rebase -u -b $TEST_IMG $TEST_IMG
51514d9da5SStefan Hajnoczi
52514d9da5SStefan Hajnocziecho
53514d9da5SStefan Hajnocziecho "== backing file references self =="
54514d9da5SStefan Hajnoczi_img_info --backing-chain
55514d9da5SStefan Hajnoczi
56514d9da5SStefan Hajnoczi_make_test_img $size
57514d9da5SStefan Hajnoczimv $TEST_IMG $TEST_IMG.base
58514d9da5SStefan Hajnoczi_make_test_img -b $TEST_IMG.base $size
59514d9da5SStefan Hajnoczi$QEMU_IMG rebase -u -b $TEST_IMG $TEST_IMG.base
60514d9da5SStefan Hajnoczi
61514d9da5SStefan Hajnocziecho
62514d9da5SStefan Hajnocziecho "== parent references self =="
63514d9da5SStefan Hajnoczi_img_info --backing-chain
64514d9da5SStefan Hajnoczi
65514d9da5SStefan Hajnoczi_make_test_img $size
66514d9da5SStefan Hajnoczimv $TEST_IMG $TEST_IMG.1.base
67514d9da5SStefan Hajnoczi_make_test_img -b $TEST_IMG.1.base $size
68514d9da5SStefan Hajnoczimv $TEST_IMG $TEST_IMG.2.base
69514d9da5SStefan Hajnoczi_make_test_img -b $TEST_IMG.2.base $size
70514d9da5SStefan Hajnoczimv $TEST_IMG $TEST_IMG.3.base
71514d9da5SStefan Hajnoczi_make_test_img -b $TEST_IMG.3.base $size
72514d9da5SStefan Hajnoczi$QEMU_IMG rebase -u -b $TEST_IMG.2.base $TEST_IMG.1.base
73514d9da5SStefan Hajnoczi
74514d9da5SStefan Hajnocziecho
75514d9da5SStefan Hajnocziecho "== ancestor references another ancestor =="
76514d9da5SStefan Hajnoczi_img_info --backing-chain
77514d9da5SStefan Hajnoczi
78514d9da5SStefan Hajnoczi_make_test_img $size
79514d9da5SStefan Hajnoczimv $TEST_IMG $TEST_IMG.1.base
80514d9da5SStefan Hajnoczi_make_test_img -b $TEST_IMG.1.base $size
81514d9da5SStefan Hajnoczimv $TEST_IMG $TEST_IMG.2.base
82514d9da5SStefan Hajnoczi_make_test_img -b $TEST_IMG.2.base $size
83514d9da5SStefan Hajnoczi
84514d9da5SStefan Hajnocziecho
85514d9da5SStefan Hajnocziecho "== finite chain of length 3 (human) =="
86514d9da5SStefan Hajnoczi_img_info --backing-chain
87514d9da5SStefan Hajnoczi
88514d9da5SStefan Hajnocziecho
89514d9da5SStefan Hajnocziecho "== finite chain of length 3 (json) =="
90514d9da5SStefan Hajnoczi_img_info --backing-chain --output=json
91514d9da5SStefan Hajnoczi
92514d9da5SStefan Hajnoczi# success, all done
93514d9da5SStefan Hajnocziecho "*** done"
94514d9da5SStefan Hajnoczirm -f $seq.full
95514d9da5SStefan Hajnoczistatus=0
96