Lines Matching +full:data +full:- +full:mirror
30 target_backing_img = os.path.join(iotests.test_dir, 'target-backing.img')
44 qmp_cmd = 'drive-mirror'
49 qemu_img('create', '-f', iotests.imgfmt,
50 '-o', 'backing_file=%s' % backing_img, '-F', 'raw', test_img)
51 self.vm = iotests.VM().add_drive(test_img, "node-name=top,backing.node-name=base")
72 result = self.vm.qmp('query-block')
85 result = self.vm.qmp('query-block')
95 result = self.vm.qmp('query-block')
109 result = self.vm.qmp('query-block-jobs')
113 result = self.vm.qmp('query-block-jobs')
116 self.vm.cmd('block-job-resume', device='drive0')
131 result = self.vm.qmp('query-block')
140 qemu_img('create', '-f', iotests.imgfmt, '-o', 'cluster_size=%d,size=%d'
146 result = self.vm.qmp('query-block')
155 qemu_img('create', '-f', iotests.imgfmt, '-o', 'cluster_size=%d,backing_file=%s'
157 '-F', 'raw', target_img)
162 result = self.vm.qmp('query-block')
169 # difference to query-block
176 result = self.vm.qmp('query-block')
182 self.assert_qmp(result, 'return[0]/inserted/image/backing-image/filename', backing_img)
184 result = self.vm.qmp('query-blockstats')
185 self.assert_qmp(result, 'return[0]/node-name', 'top')
186 self.assert_qmp(result, 'return[0]/backing/node-name', 'base')
189 result = self.vm.qmp('query-block')
195 self.assert_qmp(result, 'return[0]/inserted/image/backing-image/filename', backing_img)
197 result = self.vm.qmp('query-blockstats')
198 self.assert_qmp(result, 'return[0]/node-name', 'top')
199 self.assert_qmp(result, 'return[0]/backing/node-name', 'base')
205 result = self.vm.qmp(self.qmp_cmd, device='ide1-cd0', sync='full',
220 qmp_cmd = 'blockdev-mirror'
225 qemu_img('create', '-f', iotests.imgfmt,
226 '-o', 'backing_file=%s' % backing_img, '-F', 'raw', target_img)
228 'node-name': self.qmp_target,
230 self.vm.cmd("blockdev-add", args)
307 qemu_img('create', '-f', iotests.imgfmt,
308 '-o', 'backing_file=%s' % backing_img, '-F', 'raw', test_img)
325 qemu_img('create', '-f', iotests.imgfmt,
326 '-o', 'backing_file=%s' % backing_img, '-F', 'raw', target_img)
327 self.vm.cmd('drive-mirror', device='drive0', sync='full',
331 result = self.vm.qmp('query-block')
340 qemu_img('create', '-f', iotests.imgfmt,
341 '-o', 'backing_file=%s' % backing_img, '-F', 'raw', target_img)
342 self.vm.cmd('drive-mirror', device='drive0', sync='full',
346 result = self.vm.qmp('query-block')
355 # qemu-img create fails if the image is not there
356 qemu_img('create', '-f', iotests.imgfmt, '-o', 'size=%d'
358 qemu_img('create', '-f', iotests.imgfmt, '-o', 'cluster_size=%d,backing_file=%s'
360 '-F', iotests.imgfmt, target_img)
362 self.vm.cmd('drive-mirror', device='drive0', sync='full',
366 result = self.vm.qmp('query-block')
378 qemu_img('create', '-f', iotests.imgfmt,
379 '-o', 'backing_file=%s' % backing_img, '-F', 'raw', test_img)
396 self.vm.cmd('drive-mirror', device='drive0', sync='top',
400 result = self.vm.qmp('query-block')
409 self.vm.cmd('drive-mirror', device='drive0', sync='full',
413 result = self.vm.qmp('query-block')
429 [inject-error]
437 [set-state]
442 [set-state]
453 qemu_img('create', '-f', iotests.imgfmt,
454 '-o', 'backing_file=blkdebug:%s:%s,backing_fmt=raw'
458 qemu_io('-c', 'write %d 512' % (self.MIRROR_GRANULARITY + 65536),
473 self.vm.cmd('drive-mirror', device='drive0', sync='full',
481 self.assert_qmp(event, 'data/device', 'drive0')
482 self.assert_qmp(event, 'data/operation', 'read')
488 self.assert_qmp(event, 'data/type', 'mirror')
489 self.assert_qmp(event, 'data/device', 'drive0')
490 self.assert_qmp(event, 'data/error', 'Input/output error')
493 self.assert_qmp(event, 'data/id', 'drive0')
500 self.vm.cmd('drive-mirror', device='drive0', sync='full',
505 self.assert_qmp(event, 'data/id', 'drive0')
509 self.assert_qmp(event, 'data/device', 'drive0')
510 self.assert_qmp(event, 'data/operation', 'read')
511 result = self.vm.qmp('query-block-jobs')
521 qemu_img('create', '-f', iotests.imgfmt,
522 '-ocluster_size=131072,backing_file=%s' %(backing_img),
523 '-F', 'raw', target_img)
524 self.vm.cmd('drive-mirror', device='drive0', sync='top',
530 self.assert_qmp(event, 'data/id', 'drive0')
534 self.assert_qmp(event, 'data/device', 'drive0')
535 self.assert_qmp(event, 'data/operation', 'read')
536 result = self.vm.qmp('query-block-jobs')
542 qemu_img('rebase', '-f', iotests.imgfmt, '-u', '-b', backing_img,
543 '-F', 'raw', test_img)
550 self.vm.cmd('drive-mirror', device='drive0', sync='full',
558 self.assert_qmp(event, 'data/device', 'drive0')
559 self.assert_qmp(event, 'data/operation', 'read')
561 if self.vm.qmp('query-block-jobs')['return'][0]['status'] != 'paused':
564 {'data': {'id': 'drive0', 'status': 'paused'}}
567 result = self.vm.qmp('query-block-jobs')
569 self.assert_qmp(result, 'return[0]/io-status', 'failed')
571 self.vm.cmd('block-job-resume', device='drive0')
575 self.assert_qmp(event, 'data/device', 'drive0')
578 result = self.vm.qmp('query-block-jobs')
580 self.assert_qmp(result, 'return[0]/io-status', 'ok')
595 [inject-error]
603 [set-state]
608 [set-state]
619 qemu_img('create', '-f', iotests.imgfmt,
620 '-obacking_file=%s' %(backing_img), '-F', 'raw', test_img)
623 … qemu_img('create', '-f', iotests.imgfmt, '-osize=%d' %(TestWriteErrors.image_len), target_img)
636 self.vm.cmd('drive-mirror', device='drive0', sync='full',
644 self.assert_qmp(event, 'data/device', 'drive0')
645 self.assert_qmp(event, 'data/operation', 'write')
651 self.assert_qmp(event, 'data/type', 'mirror')
652 self.assert_qmp(event, 'data/device', 'drive0')
653 self.assert_qmp(event, 'data/error', 'Input/output error')
661 self.vm.cmd('drive-mirror', device='drive0', sync='full',
667 self.assert_qmp(event, 'data/device', 'drive0')
668 self.assert_qmp(event, 'data/operation', 'write')
669 result = self.vm.qmp('query-block-jobs')
676 self.vm.cmd('drive-mirror', device='drive0', sync='full',
685 self.assert_qmp(event, 'data/device', 'drive0')
686 self.assert_qmp(event, 'data/operation', 'write')
688 if self.vm.qmp('query-block-jobs')['return'][0]['status'] != 'paused':
691 {'data': {'id': 'drive0', 'status': 'paused'}}
694 result = self.vm.qmp('query-block-jobs')
696 self.assert_qmp(result, 'return[0]/io-status', 'failed')
698 self.vm.cmd('block-job-resume', device='drive0')
700 result = self.vm.qmp('query-block-jobs')
702 self.assert_qmp(result, 'return[0]/io-status', 'ok')
706 self.assert_qmp(event, 'data/device', 'drive0')
717 qemu_img('create', '-f', iotests.imgfmt,
718 '-o', 'backing_file=%s' % backing_img, '-F', 'raw', test_img)
731 self.vm.cmd('drive-mirror', device='drive0', sync='full',
735 result = self.vm.qmp('query-block-jobs')
739 self.vm.cmd('block-job-set-speed', device='drive0', speed=8 * 1024 * 1024)
742 result = self.vm.qmp('query-block-jobs')
748 # Check setting speed in drive-mirror works
749 self.vm.cmd('drive-mirror', device='drive0', sync='full',
752 result = self.vm.qmp('query-block-jobs')
761 result = self.vm.qmp('drive-mirror', device='drive0', sync='full',
762 target=target_img, speed=-1)
767 self.vm.cmd('drive-mirror', device='drive0', sync='full',
770 result = self.vm.qmp('block-job-set-speed', device='drive0', speed=-1)
779 qemu_img('create', '-f', iotests.imgfmt, test_img,
783 self.vm.cmd('blockdev-add', node_name='drive0',
797 self.vm.cmd('drive-mirror', job_id='drive0', device='drive0',
799 mode='absolute-paths')
805 self.vm.cmd('drive-mirror', job_id='drive0', device='drive0',
807 mode='absolute-paths')
813 self.vm.cmd('drive-mirror', job_id='drive0', device='drive0',
815 mode='absolute-paths')
820 qemu_img('create', '-f', iotests.imgfmt, target_img,
822 qemu_io('-c', 'write -P 42 0 64k', target_img)
825 self.vm.cmd('drive-mirror', job_id='drive0', device='drive0',
830 self.vm.cmd('blockdev-del', node_name='drive0')
836 qemu_img('create', '-f', iotests.imgfmt, target_img,
838 qemu_io('-c', 'write -P 42 0 64k', target_img)
840 self.vm.cmd('blockdev-add', node_name='target',
848 self.vm.cmd('blockdev-mirror', job_id='drive0', device='drive0',
853 self.vm.cmd('blockdev-del', node_name='drive0')
855 self.vm.cmd('blockdev-del', node_name='target')
864 qemu_img('create', '-f', iotests.imgfmt, test_img,
866 qemu_io('-c', 'write 0 %d' % (self.image_len),
880 self.vm.cmd('drive-mirror', device='drive0',
882 mode='absolute-paths', granularity=8192)
886 self.assert_qmp(event, 'data/id', 'drive0')
895 """ This class test quorum file repair using drive-mirror.
909 qemu_img('create', '-f', iotests.imgfmt, i,
913 opts = "node-name=img%i" % self.IMAGES.index(i)
922 args = { "driver": "quorum", "node-name": "quorum0",
923 "vote-threshold": 2, "children": [ "img0", "img1", "img2" ] }
924 self.vm.cmd("blockdev-add", args)
938 self.vm.cmd('drive-mirror', job_id='job0', device='quorum0',
950 self.vm.cmd('drive-mirror', job_id='job0', device='quorum0',
960 self.vm.cmd('drive-mirror', job_id='job0', device='quorum0',
973 self.vm.cmd('drive-mirror', job_id='job0', device='quorum0',
979 result = self.vm.qmp('query-block-jobs')
983 result = self.vm.qmp('query-block-jobs')
986 self.vm.cmd('block-job-resume', device='job0')
997 result = self.vm.qmp('drive-mirror', job_id='job0', device='drive0', # CD-ROM
1005 result = self.vm.qmp('drive-mirror', job_id='job0', device='quorum0',
1012 result = self.vm.qmp('drive-mirror', job_id='job0',
1020 result = self.vm.qmp('drive-mirror', device='quorum0', job_id='job0',
1027 result = self.vm.qmp('drive-mirror', job_id='job0', device='quorum0',
1033 result = self.vm.qmp('drive-mirror', job_id='job0', device='quorum0',
1039 self.vm.cmd('blockdev-snapshot-sync', node_name='img1',
1043 result = self.vm.qmp('drive-mirror', job_id='job0', device='quorum0',
1048 self.vm.cmd('drive-mirror', job_id='job0', device='quorum0',
1061 self.vm.cmd('nbd-server-start',
1064 'data': {'path': nbd_sock_path}
1067 self.vm.cmd('nbd-server-add', device='img1')
1069 result = self.vm.qmp('drive-mirror', job_id='mirror', device='quorum0',
1075 "so would not lead to an abrupt change of visible data")
1080 only when the mirror job is already running.
1082 self.vm.cmd('nbd-server-start',
1085 'data': {'path': nbd_sock_path}
1088 self.vm.cmd('drive-mirror', job_id='mirror', device='quorum0',
1092 self.vm.cmd('nbd-server-add', device='img1')
1095 self.complete_and_wait('mirror',
1112 "not lead to an abrupt change of visible data")
1119 blk0 = { 'node-name': 'src',
1120 'driver': 'null-co' }
1122 blk1 = { 'node-name': 'dest',
1123 'driver': 'null-co' }
1125 blk2 = { 'node-name': 'dest-ro',
1126 'driver': 'null-co',
1127 'read-only': 'on' }
1141 result = self.vm.qmp('blockdev-mirror', device='src', sync='full',
1148 self.vm.cmd('blockdev-mirror', job_id='job', device='src',
1156 result = self.vm.qmp('blockdev-mirror', device='src', sync='full',
1157 target='dest-ro')
1163 # Unshare consistent-read on the target
1164 # (The mirror job does not care)
1165 self.vm.cmd('blockdev-add',
1167 node_name='dest-perm',
1169 unshare_child_perms=['consistent-read'])
1171 self.vm.cmd('blockdev-mirror', job_id='job', device='src',
1173 filter_node_name='mirror-filter')
1175 # Require consistent-read on the source
1177 # will complain that it does not want to run on non-root nodes)
1178 self.vm.cmd('blockdev-add',
1180 node_name='src-perm',
1182 take_child_perms=['consistent-read'])
1184 # While completing, mirror will attempt to replace src by
1185 # dest, which must fail because src-perm requires
1186 # consistent-read but dest-perm does not share it; thus
1192 # mirror filter, which should be gone despite the failure)
1193 nodes = self.vm.qmp('query-named-block-nodes')['return']
1194 nodes = [node['node-name'] for node in nodes]
1196 for expect in ('src', 'src-perm', 'dest', 'dest-perm'):
1198 self.assertFalse('mirror-filter' in nodes,
1199 'Mirror filter node did not disappear')
1217 @iotests.skip_if_unsupported(['copy-on-read'])
1222 self.vm.cmd('blockdev-add', {
1223 'driver': 'copy-on-read',
1224 'node-name': 'filter0',
1226 'driver': 'copy-on-read',
1227 'node-name': 'filter1',
1229 'driver': 'null-co'
1234 self.vm.cmd('blockdev-add',
1235 node_name='target', driver='null-co')
1237 self.vm.cmd('blockdev-mirror', job_id='mirror', device='filter0',
1240 self.complete_and_wait('mirror')
1244 # Tests for mirror with filters (and how the mirror filter behaves, as
1248 qemu_img('create', '-f', iotests.imgfmt, backing_img, '1M')
1249 qemu_img('create', '-f', iotests.imgfmt, '-b', backing_img,
1250 '-F', iotests.imgfmt, test_img)
1251 qemu_img('create', '-f', iotests.imgfmt, '-b', backing_img,
1252 '-F', iotests.imgfmt, target_img)
1254 qemu_io('-c', 'write -P 1 0 512k', backing_img)
1255 qemu_io('-c', 'write -P 2 512k 512k', test_img)
1257 self.vm = iotests.VM().add_device('virtio-scsi,id=vio-scsi')
1260 self.vm.cmd('blockdev-add', {
1261 'node-name': 'target',
1271 'node-name': 'source',
1278 'node-name': 'backing',
1295 self.vm.cmd('blockdev-add', {
1296 'node-name': 'filter',
1297 'driver': 'copy-on-read',
1301 self.vm.cmd('blockdev-mirror',
1302 job_id='mirror',
1307 self.complete_and_wait('mirror')
1309 self.vm.qmp('blockdev-del', node_name='target')
1322 self.vm.cmd('blockdev-add', self.filterless_chain)
1324 # We need this so we can query from above the mirror node
1326 driver='scsi-hd',
1328 bus='vio-scsi.0',
1331 self.vm.cmd('blockdev-mirror',
1332 job_id='mirror',
1337 # The mirror filter is now an implicit node, so it should be
1339 blockdevs = self.vm.qmp('query-block')['return']
1342 assert device_info['inserted']['node-name'] == 'source'
1346 assert image_info['backing-image']['filename'] == backing_img
1348 self.complete_and_wait('mirror')
1351 # Same test as above, but this time we give the mirror filter
1352 # a node-name so it will not be invisible
1353 self.vm.cmd('blockdev-add', self.filterless_chain)
1355 # We need this so we can query from above the mirror node
1357 driver='scsi-hd',
1359 bus='vio-scsi.0',
1362 self.vm.cmd('blockdev-mirror',
1363 job_id='mirror',
1367 filter_node_name='mirror-filter')
1369 # With a node-name given to it, the mirror filter should now
1371 blockdevs = self.vm.qmp('query-block')['return']
1374 assert device_info['inserted']['node-name'] == 'mirror-filter'
1376 self.complete_and_wait('mirror')