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