xref: /openbmc/qemu/tests/qemu-iotests/tests/write-zeroes-unmap (revision 39a032cea23e522268519d89bb738974bc43b6f6)
1*d05ae948SNir Soffer#!/usr/bin/env bash
2*d05ae948SNir Soffer# group: quick
3*d05ae948SNir Soffer#
4*d05ae948SNir Soffer# Test write zeros unmap.
5*d05ae948SNir Soffer#
6*d05ae948SNir Soffer# Copyright (C) Red Hat, Inc.
7*d05ae948SNir Soffer#
8*d05ae948SNir Soffer# This program is free software; you can redistribute it and/or modify
9*d05ae948SNir Soffer# it under the terms of the GNU General Public License as published by
10*d05ae948SNir Soffer# the Free Software Foundation; either version 2 of the License, or
11*d05ae948SNir Soffer# (at your option) any later version.
12*d05ae948SNir Soffer#
13*d05ae948SNir Soffer# This program is distributed in the hope that it will be useful,
14*d05ae948SNir Soffer# but WITHOUT ANY WARRANTY; without even the implied warranty of
15*d05ae948SNir Soffer# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16*d05ae948SNir Soffer# GNU General Public License for more details.
17*d05ae948SNir Soffer#
18*d05ae948SNir Soffer# You should have received a copy of the GNU General Public License
19*d05ae948SNir Soffer# along with this program.  If not, see <http://www.gnu.org/licenses/>.
20*d05ae948SNir Soffer#
21*d05ae948SNir Soffer
22*d05ae948SNir Sofferseq="$(basename $0)"
23*d05ae948SNir Sofferecho "QA output created by $seq"
24*d05ae948SNir Soffer
25*d05ae948SNir Soffertrap _cleanup_test_img exit
26*d05ae948SNir Soffer
27*d05ae948SNir Soffer# get standard environment, filters and checks
28*d05ae948SNir Soffercd ..
29*d05ae948SNir Soffer. ./common.rc
30*d05ae948SNir Soffer. ./common.filter
31*d05ae948SNir Soffer
32*d05ae948SNir Soffer_supported_fmt raw
33*d05ae948SNir Soffer_supported_proto file
34*d05ae948SNir Soffer_supported_os Linux
35*d05ae948SNir Soffer
36*d05ae948SNir Soffercreate_test_image() {
37*d05ae948SNir Soffer    _make_test_img -f $IMGFMT 1m
38*d05ae948SNir Soffer}
39*d05ae948SNir Soffer
40*d05ae948SNir Sofferfilter_command() {
41*d05ae948SNir Soffer    _filter_testdir | _filter_qemu_io | _filter_qemu | _filter_hmp
42*d05ae948SNir Soffer}
43*d05ae948SNir Soffer
44*d05ae948SNir Sofferprint_disk_usage() {
45*d05ae948SNir Soffer    du -sh $TEST_IMG | _filter_testdir
46*d05ae948SNir Soffer}
47*d05ae948SNir Soffer
48*d05ae948SNir Sofferecho
49*d05ae948SNir Sofferecho "=== defaults - write zeros ==="
50*d05ae948SNir Sofferecho
51*d05ae948SNir Soffer
52*d05ae948SNir Soffercreate_test_image
53*d05ae948SNir Sofferecho -e 'qemu-io none0 "write -z 0 1m"\nquit' \
54*d05ae948SNir Soffer    | $QEMU -monitor stdio -drive if=none,file=$TEST_IMG,format=$IMGFMT \
55*d05ae948SNir Soffer    | filter_command
56*d05ae948SNir Sofferprint_disk_usage
57*d05ae948SNir Soffer
58*d05ae948SNir Sofferecho
59*d05ae948SNir Sofferecho "=== defaults - write zeros unmap ==="
60*d05ae948SNir Sofferecho
61*d05ae948SNir Soffer
62*d05ae948SNir Soffercreate_test_image
63*d05ae948SNir Sofferecho -e 'qemu-io none0 "write -zu 0 1m"\nquit' \
64*d05ae948SNir Soffer    | $QEMU -monitor stdio -drive if=none,file=$TEST_IMG,format=$IMGFMT \
65*d05ae948SNir Soffer    | filter_command
66*d05ae948SNir Sofferprint_disk_usage
67*d05ae948SNir Soffer
68*d05ae948SNir Soffer
69*d05ae948SNir Sofferecho
70*d05ae948SNir Sofferecho "=== defaults - write actual zeros ==="
71*d05ae948SNir Sofferecho
72*d05ae948SNir Soffer
73*d05ae948SNir Soffercreate_test_image
74*d05ae948SNir Sofferecho -e 'qemu-io none0 "write -P 0 0 1m"\nquit' \
75*d05ae948SNir Soffer    | $QEMU -monitor stdio -drive if=none,file=$TEST_IMG,format=$IMGFMT \
76*d05ae948SNir Soffer    | filter_command
77*d05ae948SNir Sofferprint_disk_usage
78*d05ae948SNir Soffer
79*d05ae948SNir Sofferecho
80*d05ae948SNir Sofferecho "=== discard=off - write zeroes unmap ==="
81*d05ae948SNir Sofferecho
82*d05ae948SNir Soffer
83*d05ae948SNir Soffercreate_test_image
84*d05ae948SNir Sofferecho -e 'qemu-io none0 "write -zu 0 1m"\nquit' \
85*d05ae948SNir Soffer    | $QEMU -monitor stdio -drive if=none,file=$TEST_IMG,format=$IMGFMT,discard=off \
86*d05ae948SNir Soffer    | filter_command
87*d05ae948SNir Sofferprint_disk_usage
88*d05ae948SNir Soffer
89*d05ae948SNir Sofferecho
90*d05ae948SNir Sofferecho "=== detect-zeroes=on - write actual zeros ==="
91*d05ae948SNir Sofferecho
92*d05ae948SNir Soffer
93*d05ae948SNir Soffercreate_test_image
94*d05ae948SNir Sofferecho -e 'qemu-io none0 "write -P 0 0 1m"\nquit' \
95*d05ae948SNir Soffer    | $QEMU -monitor stdio -drive if=none,file=$TEST_IMG,format=$IMGFMT,detect-zeroes=on \
96*d05ae948SNir Soffer    | filter_command
97*d05ae948SNir Sofferprint_disk_usage
98*d05ae948SNir Soffer
99*d05ae948SNir Sofferecho
100*d05ae948SNir Sofferecho "=== detect-zeroes=on,discard=on - write actual zeros ==="
101*d05ae948SNir Sofferecho
102*d05ae948SNir Soffer
103*d05ae948SNir Soffercreate_test_image
104*d05ae948SNir Sofferecho -e 'qemu-io none0 "write -P 0 0 1m"\nquit' \
105*d05ae948SNir Soffer    | $QEMU -monitor stdio -drive if=none,file=$TEST_IMG,format=$IMGFMT,detect-zeroes=on,discard=on \
106*d05ae948SNir Soffer    | filter_command
107*d05ae948SNir Sofferprint_disk_usage
108*d05ae948SNir Soffer
109*d05ae948SNir Sofferecho
110*d05ae948SNir Sofferecho "=== discard=on - write zeroes ==="
111*d05ae948SNir Sofferecho
112*d05ae948SNir Soffer
113*d05ae948SNir Soffercreate_test_image
114*d05ae948SNir Sofferecho -e 'qemu-io none0 "write -z 0 1m"\nquit' \
115*d05ae948SNir Soffer    | $QEMU -monitor stdio -drive if=none,file=$TEST_IMG,format=$IMGFMT,discard=on \
116*d05ae948SNir Soffer    | filter_command
117*d05ae948SNir Sofferprint_disk_usage
118*d05ae948SNir Soffer
119*d05ae948SNir Sofferecho
120*d05ae948SNir Sofferecho "=== discard=on - write zeroes unmap ==="
121*d05ae948SNir Sofferecho
122*d05ae948SNir Soffer
123*d05ae948SNir Soffercreate_test_image
124*d05ae948SNir Sofferecho -e 'qemu-io none0 "write -zu 0 1m"\nquit' \
125*d05ae948SNir Soffer    | $QEMU -monitor stdio -drive if=none,file=$TEST_IMG,format=$IMGFMT,discard=on \
126*d05ae948SNir Soffer    | filter_command
127*d05ae948SNir Sofferprint_disk_usage
128