qemu with hax to log dma reads & writes jcs.org/2018/11/12/vfio

iotests: add test-case to 165 to test reopening qcow2 bitmaps to RW

Reopening bitmaps to RW was broken prior to previous commit. Check that
it works now.

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Message-id: 20190927122355.7344-4-vsementsov@virtuozzo.com
Signed-off-by: John Snow <jsnow@redhat.com>

authored by

Vladimir Sementsov-Ogievskiy and committed by
John Snow
5752f89a fcd6a4f4

+57 -4
+55 -2
tests/qemu-iotests/165
··· 43 43 os.remove(disk) 44 44 45 45 def mkVm(self): 46 - return iotests.VM().add_drive(disk) 46 + return iotests.VM().add_drive(disk, opts='node-name=node0') 47 47 48 48 def mkVmRo(self): 49 - return iotests.VM().add_drive(disk, opts='readonly=on') 49 + return iotests.VM().add_drive(disk, opts='readonly=on,node-name=node0') 50 50 51 51 def getSha256(self): 52 52 result = self.vm.qmp('x-debug-block-dirty-bitmap-sha256', ··· 101 101 self.checkBitmap(sha256) 102 102 103 103 self.vm.shutdown() 104 + 105 + def test_reopen_rw(self): 106 + self.vm = self.mkVm() 107 + self.vm.launch() 108 + self.qmpAddBitmap() 109 + 110 + # Calculate hashes 111 + 112 + self.writeRegions(regions1) 113 + sha256_1 = self.getSha256() 114 + 115 + self.writeRegions(regions2) 116 + sha256_2 = self.getSha256() 117 + assert sha256_1 != sha256_2 # Otherwise, it's not very interesting. 118 + 119 + result = self.vm.qmp('block-dirty-bitmap-clear', node='drive0', 120 + name='bitmap0') 121 + self.assert_qmp(result, 'return', {}) 122 + 123 + # Start with regions1 124 + 125 + self.writeRegions(regions1) 126 + assert sha256_1 == self.getSha256() 127 + 128 + self.vm.shutdown() 129 + 130 + self.vm = self.mkVmRo() 131 + self.vm.launch() 132 + 133 + assert sha256_1 == self.getSha256() 134 + 135 + # Check that we are in RO mode and can't modify bitmap. 136 + self.writeRegions(regions2) 137 + assert sha256_1 == self.getSha256() 138 + 139 + # Reopen to RW 140 + result = self.vm.qmp('x-blockdev-reopen', **{ 141 + 'node-name': 'node0', 142 + 'driver': iotests.imgfmt, 143 + 'file': { 144 + 'driver': 'file', 145 + 'filename': disk 146 + }, 147 + 'read-only': False 148 + }) 149 + self.assert_qmp(result, 'return', {}) 150 + 151 + # Check that bitmap is reopened to RW and we can write to it. 152 + self.writeRegions(regions2) 153 + assert sha256_2 == self.getSha256() 154 + 155 + self.vm.shutdown() 156 + 104 157 105 158 if __name__ == '__main__': 106 159 iotests.main(supported_fmts=['qcow2'],
+2 -2
tests/qemu-iotests/165.out
··· 1 - . 1 + .. 2 2 ---------------------------------------------------------------------- 3 - Ran 1 tests 3 + Ran 2 tests 4 4 5 5 OK