xref: /openbmc/qemu/tests/qemu-iotests/043 (revision 0e324626)
111a82d14SPhilippe Mathieu-Daudé#!/usr/bin/env bash
2*9dd003a9SVladimir Sementsov-Ogievskiy# group: rw auto backing
3514d9da5SStefan Hajnoczi#
4514d9da5SStefan Hajnoczi# Test that qemu-img info --backing-chain detects infinite loops
5514d9da5SStefan Hajnoczi#
6514d9da5SStefan Hajnoczi# Copyright (C) 2012 Red Hat, Inc.
7514d9da5SStefan Hajnoczi#
8514d9da5SStefan Hajnoczi# This program is free software; you can redistribute it and/or modify
9514d9da5SStefan Hajnoczi# it under the terms of the GNU General Public License as published by
10514d9da5SStefan Hajnoczi# the Free Software Foundation; either version 2 of the License, or
11514d9da5SStefan Hajnoczi# (at your option) any later version.
12514d9da5SStefan Hajnoczi#
13514d9da5SStefan Hajnoczi# This program is distributed in the hope that it will be useful,
14514d9da5SStefan Hajnoczi# but WITHOUT ANY WARRANTY; without even the implied warranty of
15514d9da5SStefan Hajnoczi# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16514d9da5SStefan Hajnoczi# GNU General Public License for more details.
17514d9da5SStefan Hajnoczi#
18514d9da5SStefan Hajnoczi# You should have received a copy of the GNU General Public License
19514d9da5SStefan Hajnoczi# along with this program.  If not, see <http://www.gnu.org/licenses/>.
20514d9da5SStefan Hajnoczi#
21514d9da5SStefan Hajnoczi
22514d9da5SStefan Hajnoczi# creator
23514d9da5SStefan Hajnocziowner=stefanha@redhat.com
24514d9da5SStefan Hajnoczi
25514d9da5SStefan Hajnocziseq=`basename $0`
26514d9da5SStefan Hajnocziecho "QA output created by $seq"
27514d9da5SStefan Hajnoczi
28514d9da5SStefan Hajnoczistatus=1	# failure is the default!
29514d9da5SStefan Hajnoczi
30514d9da5SStefan Hajnoczi_cleanup()
31514d9da5SStefan Hajnoczi{
32514d9da5SStefan Hajnoczi    _cleanup_test_img
33f91ecbd7SMax Reitz    for img in "$TEST_IMG".[123].base; do
34f91ecbd7SMax Reitz        _rm_test_img "$img"
35f91ecbd7SMax Reitz    done
36514d9da5SStefan Hajnoczi}
37514d9da5SStefan Hajnoczitrap "_cleanup; exit \$status" 0 1 2 3 15
38514d9da5SStefan Hajnoczi
39514d9da5SStefan Hajnoczi# get standard environment, filters and checks
40514d9da5SStefan Hajnoczi. ./common.rc
41514d9da5SStefan Hajnoczi. ./common.filter
42514d9da5SStefan Hajnoczi
43514d9da5SStefan Hajnoczi# Any format supporting backing files
44dbcdd7cbSFam Zheng_supported_fmt qcow2 qed
451f7bf7d0SPeter Lieven_supported_proto file
46514d9da5SStefan Hajnoczi
47514d9da5SStefan Hajnoczi
48514d9da5SStefan Hajnoczisize=128M
49514d9da5SStefan Hajnoczi_make_test_img $size
50b66ff2c2SEric Blake$QEMU_IMG rebase -u -b "$TEST_IMG" -F $IMGFMT "$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
57fef9c191SJeff Codymv "$TEST_IMG" "$TEST_IMG.base"
58b66ff2c2SEric Blake_make_test_img -b "$TEST_IMG.base" -F $IMGFMT $size
59b66ff2c2SEric Blake$QEMU_IMG rebase -u -b "$TEST_IMG" -F $IMGFMT "$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
66fef9c191SJeff Codymv "$TEST_IMG" "$TEST_IMG.1.base"
67b66ff2c2SEric Blake_make_test_img -b "$TEST_IMG.1.base" -F $IMGFMT $size
68fef9c191SJeff Codymv "$TEST_IMG" "$TEST_IMG.2.base"
69b66ff2c2SEric Blake_make_test_img -b "$TEST_IMG.2.base" -F $IMGFMT $size
70fef9c191SJeff Codymv "$TEST_IMG" "$TEST_IMG.3.base"
71b66ff2c2SEric Blake_make_test_img -b "$TEST_IMG.3.base" -F $IMGFMT $size
72b66ff2c2SEric Blake$QEMU_IMG rebase -u -b "$TEST_IMG.2.base" -F $IMGFMT "$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
79fef9c191SJeff Codymv "$TEST_IMG" "$TEST_IMG.1.base"
80b66ff2c2SEric Blake_make_test_img -b "$TEST_IMG.1.base" -F $IMGFMT $size
81fef9c191SJeff Codymv "$TEST_IMG" "$TEST_IMG.2.base"
82b66ff2c2SEric Blake_make_test_img -b "$TEST_IMG.2.base" -F $IMGFMT $size
83514d9da5SStefan Hajnoczi
84514d9da5SStefan Hajnocziecho
85514d9da5SStefan Hajnocziecho "== finite chain of length 3 (human) =="
86b66ff2c2SEric Blake# Exclude backing format, since qed differs from qcow2 on what gets stored
87b66ff2c2SEric Blake_img_info --backing-chain | grep -v '^backing file format:'
88514d9da5SStefan Hajnoczi
89514d9da5SStefan Hajnocziecho
90514d9da5SStefan Hajnocziecho "== finite chain of length 3 (json) =="
91b66ff2c2SEric Blake_img_info --backing-chain --output=json | grep -v 'backing-filename-format'
92514d9da5SStefan Hajnoczi
93514d9da5SStefan Hajnoczi# success, all done
94514d9da5SStefan Hajnocziecho "*** done"
95514d9da5SStefan Hajnoczirm -f $seq.full
96514d9da5SStefan Hajnoczistatus=0
97