221 (2197B)
1 #!/usr/bin/env bash 2 # group: rw quick 3 # 4 # Test qemu-img vs. unaligned images 5 # (See also 253, which is the O_DIRECT version) 6 # 7 # Copyright (C) 2018-2019 Red Hat, Inc. 8 # 9 # This program is free software; you can redistribute it and/or modify 10 # it under the terms of the GNU General Public License as published by 11 # the Free Software Foundation; either version 2 of the License, or 12 # (at your option) any later version. 13 # 14 # This program is distributed in the hope that it will be useful, 15 # but WITHOUT ANY WARRANTY; without even the implied warranty of 16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 # GNU General Public License for more details. 18 # 19 # You should have received a copy of the GNU General Public License 20 # along with this program. If not, see <http://www.gnu.org/licenses/>. 21 # 22 23 seq="$(basename $0)" 24 echo "QA output created by $seq" 25 26 status=1 # failure is the default! 27 28 _cleanup() 29 { 30 _cleanup_test_img 31 } 32 trap "_cleanup; exit \$status" 0 1 2 3 15 33 34 # get standard environment, filters and checks 35 . ./common.rc 36 . ./common.filter 37 38 _supported_fmt raw 39 _supported_proto file fuse 40 _supported_os Linux 41 42 _default_cache_mode writeback 43 _supported_cache_modes writeback writethrough unsafe 44 45 echo 46 echo "=== Check mapping of unaligned raw image ===" 47 echo 48 49 _make_test_img 65537 # qemu-img create rounds size up 50 51 # file-posix allocates the first block of any images when it is created; 52 # the size of this block depends on the host page size and the file 53 # system block size, none of which are constant. Discard the whole 54 # image so we will not see this allocation in qemu-img map's output. 55 $QEMU_IO -c 'discard 0 65537' "$TEST_IMG" | _filter_qemu_io 56 57 $QEMU_IMG map --output=json "$TEST_IMG" | _filter_qemu_img_map 58 59 truncate --size=65537 "$TEST_IMG" # so we resize it and check again 60 $QEMU_IMG map --output=json "$TEST_IMG" | _filter_qemu_img_map 61 62 $QEMU_IO -c 'w 65536 1' "$TEST_IMG" | _filter_qemu_io # writing also rounds up 63 $QEMU_IMG map --output=json "$TEST_IMG" | _filter_qemu_img_map 64 65 truncate --size=65537 "$TEST_IMG" # so we resize it and check again 66 $QEMU_IMG map --output=json "$TEST_IMG" | _filter_qemu_img_map 67 68 # success, all done 69 echo '*** done' 70 rm -f $seq.full 71 status=0