Merge tag 'pull-block-2022-03-29' of https://gitlab.com/hreitz/qemu into staging

Block patches for 7.0-rc2:
- Disable GLOBAL_STATE_CODE() assertion for the 7.0 release: We got
  another bug report for this, and we do not have the time to
  investigate before 7.0, so disable the assertion for the release, to
  re-enable and continue investigation in the 7.1 cycle

- stream job fix (regarding interaction with concurrent block jobs)

- iotests fixes

# gpg: Signature made Tue 29 Mar 2022 15:55:33 BST
# gpg:                using RSA key CB62D7A0EE3829E45F004D34A1FA40D098019CDF
# gpg:                issuer "hreitz@redhat.com"
# gpg: Good signature from "Hanna Reitz <hreitz@redhat.com>" [marginal]
# gpg: WARNING: This key is not certified with sufficiently trusted signatures!
# gpg:          It is not certain that the signature belongs to the owner.
# Primary key fingerprint: CB62 D7A0 EE38 29E4 5F00  4D34 A1FA 40D0 9801 9CDF

* tag 'pull-block-2022-03-29' of https://gitlab.com/hreitz/qemu:
  iotests: Fix status checks
  block/stream: Drain subtree around graph change
  main-loop: Disable GLOBAL_STATE_CODE() assertions
  iotests: update test owner contact information

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
Peter Maydell
2022-03-29 20:53:05 +01:00
80 changed files with 136 additions and 90 deletions
+14 -1
View File
@@ -64,7 +64,13 @@ static int stream_prepare(Job *job)
bdrv_cor_filter_drop(s->cor_filter_bs);
s->cor_filter_bs = NULL;
bdrv_subtree_drained_begin(s->above_base);
base = bdrv_filter_or_cow_bs(s->above_base);
if (base) {
bdrv_ref(base);
}
unfiltered_base = bdrv_skip_filters(base);
if (bdrv_cow_child(unfiltered_bs)) {
@@ -75,14 +81,21 @@ static int stream_prepare(Job *job)
base_fmt = unfiltered_base->drv->format_name;
}
}
bdrv_set_backing_hd(unfiltered_bs, base, &local_err);
ret = bdrv_change_backing_file(unfiltered_bs, base_id, base_fmt, false);
if (local_err) {
error_report_err(local_err);
return -EPERM;
ret = -EPERM;
goto out;
}
}
out:
if (base) {
bdrv_unref(base);
}
bdrv_subtree_drained_end(s->above_base);
return ret;
}
+2 -1
View File
@@ -284,7 +284,8 @@ bool qemu_in_main_thread(void);
#else
#define GLOBAL_STATE_CODE() \
do { \
assert(qemu_in_main_thread()); \
/* FIXME: Re-enable after 7.0 release */ \
/* assert(qemu_in_main_thread()); */ \
} while (0)
#endif /* CONFIG_COCOA */
+1 -1
View File
@@ -20,7 +20,7 @@
#
# creator
owner=stefanha@linux.vnet.ibm.com
owner=stefanha@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
+1 -1
View File
@@ -20,7 +20,7 @@
#
# creator
owner=stefanha@linux.vnet.ibm.com
owner=stefanha@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
+1 -1
View File
@@ -23,7 +23,7 @@
#
# creator
owner=stefanha@linux.vnet.ibm.com
owner=stefanha@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
+25 -5
View File
@@ -436,6 +436,11 @@ class TestParallelOps(iotests.QMPTestCase):
self.vm.run_job(job='node4', auto_dismiss=True)
self.assert_no_active_block_jobs()
# Assert that node0 is now the backing node of node4
result = self.vm.qmp('query-named-block-nodes')
node4 = next(node for node in result['return'] if node['node-name'] == 'node4')
self.assertEqual(node4['image']['backing-image']['filename'], self.imgs[0])
# Test a block-stream and a block-commit job in parallel
# Here the stream job is supposed to finish quickly in order to reproduce
# the scenario that triggers the bug fixed in 3d5d319e1221 and 1a63a907507
@@ -719,7 +724,8 @@ class TestEIO(TestErrors):
if result == {'return': []}:
# Job finished too quickly
continue
self.assert_qmp(result, 'return[0]/paused', False)
self.assertIn(result['return'][0]['status'],
['running', 'pending', 'aborting', 'concluded'])
elif event['event'] == 'BLOCK_JOB_COMPLETED':
self.assertTrue(error, 'job completed unexpectedly')
self.assert_qmp(event, 'data/type', 'stream')
@@ -749,8 +755,14 @@ class TestEIO(TestErrors):
self.assert_qmp(event, 'data/device', 'drive0')
self.assert_qmp(event, 'data/operation', 'read')
if self.vm.qmp('query-block-jobs')['return'][0]['status'] != 'paused':
self.vm.events_wait([(
'JOB_STATUS_CHANGE',
{'data': {'id': 'drive0', 'status': 'paused'}}
)])
result = self.vm.qmp('query-block-jobs')
self.assert_qmp(result, 'return[0]/paused', True)
self.assert_qmp(result, 'return[0]/status', 'paused')
self.assert_qmp(result, 'return[0]/offset', self.STREAM_BUFFER_SIZE)
self.assert_qmp(result, 'return[0]/io-status', 'failed')
@@ -761,7 +773,8 @@ class TestEIO(TestErrors):
if result == {'return': []}:
# Race; likely already finished. Check.
continue
self.assert_qmp(result, 'return[0]/paused', False)
self.assertIn(result['return'][0]['status'],
['running', 'pending', 'aborting', 'concluded'])
self.assert_qmp(result, 'return[0]/io-status', 'ok')
elif event['event'] == 'BLOCK_JOB_COMPLETED':
self.assertTrue(error, 'job completed unexpectedly')
@@ -838,8 +851,14 @@ class TestENOSPC(TestErrors):
self.assert_qmp(event, 'data/operation', 'read')
error = True
if self.vm.qmp('query-block-jobs')['return'][0]['status'] != 'paused':
self.vm.events_wait([(
'JOB_STATUS_CHANGE',
{'data': {'id': 'drive0', 'status': 'paused'}}
)])
result = self.vm.qmp('query-block-jobs')
self.assert_qmp(result, 'return[0]/paused', True)
self.assert_qmp(result, 'return[0]/status', 'paused')
self.assert_qmp(result, 'return[0]/offset', self.STREAM_BUFFER_SIZE)
self.assert_qmp(result, 'return[0]/io-status', 'nospace')
@@ -850,7 +869,8 @@ class TestENOSPC(TestErrors):
if result == {'return': []}:
# Race; likely already finished. Check.
continue
self.assert_qmp(result, 'return[0]/paused', False)
self.assertIn(result['return'][0]['status'],
['running', 'pending', 'aborting', 'concluded'])
self.assert_qmp(result, 'return[0]/io-status', 'ok')
elif event['event'] == 'BLOCK_JOB_COMPLETED':
self.assertTrue(error, 'job completed unexpectedly')
+1 -1
View File
@@ -23,7 +23,7 @@
#
# creator
owner=stefanha@linux.vnet.ibm.com
owner=stefanha@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
+1 -1
View File
@@ -23,7 +23,7 @@
#
# creator
owner=stefanha@linux.vnet.ibm.com
owner=stefanha@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
+19 -7
View File
@@ -529,7 +529,7 @@ new_state = "1"
self.assert_qmp(event, 'data/device', 'drive0')
self.assert_qmp(event, 'data/operation', 'read')
result = self.vm.qmp('query-block-jobs')
self.assert_qmp(result, 'return[0]/paused', False)
self.assertIn(result['return'][0]['status'], ['running', 'ready'])
self.complete_and_wait()
def test_large_cluster(self):
@@ -555,7 +555,7 @@ new_state = "1"
self.assert_qmp(event, 'data/device', 'drive0')
self.assert_qmp(event, 'data/operation', 'read')
result = self.vm.qmp('query-block-jobs')
self.assert_qmp(result, 'return[0]/paused', False)
self.assertIn(result['return'][0]['status'], ['running', 'ready'])
self.complete_and_wait()
self.vm.shutdown()
@@ -580,8 +580,14 @@ new_state = "1"
self.assert_qmp(event, 'data/device', 'drive0')
self.assert_qmp(event, 'data/operation', 'read')
if self.vm.qmp('query-block-jobs')['return'][0]['status'] != 'paused':
self.vm.events_wait([(
'JOB_STATUS_CHANGE',
{'data': {'id': 'drive0', 'status': 'paused'}}
)])
result = self.vm.qmp('query-block-jobs')
self.assert_qmp(result, 'return[0]/paused', True)
self.assert_qmp(result, 'return[0]/status', 'paused')
self.assert_qmp(result, 'return[0]/io-status', 'failed')
result = self.vm.qmp('block-job-resume', device='drive0')
@@ -593,7 +599,7 @@ new_state = "1"
ready = True
result = self.vm.qmp('query-block-jobs')
self.assert_qmp(result, 'return[0]/paused', False)
self.assert_qmp(result, 'return[0]/status', 'ready')
self.assert_qmp(result, 'return[0]/io-status', 'ok')
self.complete_and_wait(wait_ready=False)
@@ -686,7 +692,7 @@ new_state = "1"
self.assert_qmp(event, 'data/device', 'drive0')
self.assert_qmp(event, 'data/operation', 'write')
result = self.vm.qmp('query-block-jobs')
self.assert_qmp(result, 'return[0]/paused', False)
self.assertIn(result['return'][0]['status'], ['running', 'ready'])
self.complete_and_wait()
def test_stop_write(self):
@@ -705,15 +711,21 @@ new_state = "1"
self.assert_qmp(event, 'data/device', 'drive0')
self.assert_qmp(event, 'data/operation', 'write')
if self.vm.qmp('query-block-jobs')['return'][0]['status'] != 'paused':
self.vm.events_wait([(
'JOB_STATUS_CHANGE',
{'data': {'id': 'drive0', 'status': 'paused'}}
)])
result = self.vm.qmp('query-block-jobs')
self.assert_qmp(result, 'return[0]/paused', True)
self.assert_qmp(result, 'return[0]/status', 'paused')
self.assert_qmp(result, 'return[0]/io-status', 'failed')
result = self.vm.qmp('block-job-resume', device='drive0')
self.assert_qmp(result, 'return', {})
result = self.vm.qmp('query-block-jobs')
self.assert_qmp(result, 'return[0]/paused', False)
self.assertIn(result['return'][0]['status'], ['running', 'ready'])
self.assert_qmp(result, 'return[0]/io-status', 'ok')
error = True
elif event['event'] == 'BLOCK_JOB_READY':
+1 -1
View File
@@ -20,7 +20,7 @@
#
# creator
owner=famz@redhat.com
owner=fam@euphon.net
seq=`basename $0`
echo "QA output created by $seq"
+1 -1
View File
@@ -20,7 +20,7 @@
#
# creator
owner=mreitz@redhat.com
owner=hreitz@redhat.com
seq="$(basename $0)"
echo "QA output created by $seq"
+1 -1
View File
@@ -20,7 +20,7 @@
#
# creator
owner=mreitz@redhat.com
owner=hreitz@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
+1 -1
View File
@@ -21,7 +21,7 @@
#
# creator
owner=mreitz@redhat.com
owner=hreitz@redhat.com
seq=`basename $0`
echo "QA output created by $seq"
+1 -1
View File
@@ -20,7 +20,7 @@
#
# creator
owner=jcody@redhat.com
owner=codyprime@gmail.com
seq=`basename $0`
echo "QA output created by $seq"
+1 -1
View File
@@ -20,7 +20,7 @@
#
# creator
owner=mreitz@redhat.com
owner=hreitz@redhat.com
seq="$(basename $0)"
echo "QA output created by $seq"
+1 -1
View File
@@ -20,7 +20,7 @@
#
# creator
owner=mreitz@redhat.com
owner=hreitz@redhat.com
seq="$(basename $0)"
echo "QA output created by $seq"
+1 -1
View File
@@ -20,7 +20,7 @@
#
# creator
owner=mreitz@redhat.com
owner=hreitz@redhat.com
seq="$(basename $0)"
echo "QA output created by $seq"
+1 -1
View File
@@ -21,7 +21,7 @@
#
# creator
owner=jcody@redhat.com
owner=codyprime@gmail.com
seq=`basename $0`
echo "QA output created by $seq"
+1 -1
View File
@@ -20,7 +20,7 @@
#
# creator
owner=mreitz@redhat.com
owner=hreitz@redhat.com
seq="$(basename $0)"
echo "QA output created by $seq"
+1 -1
View File
@@ -20,7 +20,7 @@
#
# creator
owner=mreitz@redhat.com
owner=hreitz@redhat.com
seq="$(basename $0)"
echo "QA output created by $seq"

Some files were not shown because too many files have changed in this diff Show More