mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
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:
+14
-1
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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 */
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
#
|
||||
|
||||
# creator
|
||||
owner=stefanha@linux.vnet.ibm.com
|
||||
owner=stefanha@redhat.com
|
||||
|
||||
seq=`basename $0`
|
||||
echo "QA output created by $seq"
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
#
|
||||
|
||||
# creator
|
||||
owner=stefanha@linux.vnet.ibm.com
|
||||
owner=stefanha@redhat.com
|
||||
|
||||
seq=`basename $0`
|
||||
echo "QA output created by $seq"
|
||||
|
||||
@@ -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
@@ -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')
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
#
|
||||
|
||||
# creator
|
||||
owner=stefanha@linux.vnet.ibm.com
|
||||
owner=stefanha@redhat.com
|
||||
|
||||
seq=`basename $0`
|
||||
echo "QA output created by $seq"
|
||||
|
||||
@@ -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
@@ -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':
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
#
|
||||
|
||||
# creator
|
||||
owner=famz@redhat.com
|
||||
owner=fam@euphon.net
|
||||
|
||||
seq=`basename $0`
|
||||
echo "QA output created by $seq"
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
#
|
||||
|
||||
# creator
|
||||
owner=mreitz@redhat.com
|
||||
owner=hreitz@redhat.com
|
||||
|
||||
seq="$(basename $0)"
|
||||
echo "QA output created by $seq"
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
#
|
||||
|
||||
# creator
|
||||
owner=mreitz@redhat.com
|
||||
owner=hreitz@redhat.com
|
||||
|
||||
seq=`basename $0`
|
||||
echo "QA output created by $seq"
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
#
|
||||
|
||||
# creator
|
||||
owner=mreitz@redhat.com
|
||||
owner=hreitz@redhat.com
|
||||
|
||||
seq=`basename $0`
|
||||
echo "QA output created by $seq"
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
#
|
||||
|
||||
# creator
|
||||
owner=jcody@redhat.com
|
||||
owner=codyprime@gmail.com
|
||||
|
||||
seq=`basename $0`
|
||||
echo "QA output created by $seq"
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
#
|
||||
|
||||
# creator
|
||||
owner=mreitz@redhat.com
|
||||
owner=hreitz@redhat.com
|
||||
|
||||
seq="$(basename $0)"
|
||||
echo "QA output created by $seq"
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
#
|
||||
|
||||
# creator
|
||||
owner=mreitz@redhat.com
|
||||
owner=hreitz@redhat.com
|
||||
|
||||
seq="$(basename $0)"
|
||||
echo "QA output created by $seq"
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
#
|
||||
|
||||
# creator
|
||||
owner=mreitz@redhat.com
|
||||
owner=hreitz@redhat.com
|
||||
|
||||
seq="$(basename $0)"
|
||||
echo "QA output created by $seq"
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
#
|
||||
|
||||
# creator
|
||||
owner=jcody@redhat.com
|
||||
owner=codyprime@gmail.com
|
||||
|
||||
seq=`basename $0`
|
||||
echo "QA output created by $seq"
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
#
|
||||
|
||||
# creator
|
||||
owner=mreitz@redhat.com
|
||||
owner=hreitz@redhat.com
|
||||
|
||||
seq="$(basename $0)"
|
||||
echo "QA output created by $seq"
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user