From nobody Sat Oct 25 11:05:05 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1521776763772304.2672452935974; Thu, 22 Mar 2018 20:46:03 -0700 (PDT) Received: from localhost ([::1]:35891 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ezDeK-0002HL-Tm for importer@patchew.org; Thu, 22 Mar 2018 23:45:52 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57092) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ezDcm-0001L6-UY for qemu-devel@nongnu.org; Thu, 22 Mar 2018 23:44:18 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ezDcj-0004OI-0S for qemu-devel@nongnu.org; Thu, 22 Mar 2018 23:44:17 -0400 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:56536 helo=mx0a-001b2d01.pphosted.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1ezDci-0004Nd-Ry for qemu-devel@nongnu.org; Thu, 22 Mar 2018 23:44:12 -0400 Received: from pps.filterd (m0098420.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w2N3hjhv041251 for ; Thu, 22 Mar 2018 23:44:11 -0400 Received: from e06smtp15.uk.ibm.com (e06smtp15.uk.ibm.com [195.75.94.111]) by mx0b-001b2d01.pphosted.com with ESMTP id 2gvheps8kb-1 (version=TLSv1.2 cipher=AES256-SHA256 bits=256 verify=NOT) for ; Thu, 22 Mar 2018 23:44:11 -0400 Received: from localhost by e06smtp15.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Fri, 23 Mar 2018 03:44:08 -0000 Received: from b06cxnps4075.portsmouth.uk.ibm.com (9.149.109.197) by e06smtp15.uk.ibm.com (192.168.101.145) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Fri, 23 Mar 2018 03:44:05 -0000 Received: from d06av24.portsmouth.uk.ibm.com (mk.ibm.com [9.149.105.60]) by b06cxnps4075.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id w2N3i4cO57934028; Fri, 23 Mar 2018 03:44:04 GMT Received: from d06av24.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 12956421F7; Fri, 23 Mar 2018 03:36:10 +0000 (GMT) Received: from d06av24.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id F0BAC421F5; Fri, 23 Mar 2018 03:36:09 +0000 (GMT) Received: from tuxmaker.boeblingen.de.ibm.com (unknown [9.152.85.9]) by d06av24.portsmouth.uk.ibm.com (Postfix) with ESMTPS; Fri, 23 Mar 2018 03:36:09 +0000 (GMT) Received: by tuxmaker.boeblingen.de.ibm.com (Postfix, from userid 5569) id 4E68520F641; Fri, 23 Mar 2018 04:44:04 +0100 (CET) From: QingFeng Hao To: qemu-block@nongnu.org Date: Fri, 23 Mar 2018 04:43:56 +0100 X-Mailer: git-send-email 2.13.5 In-Reply-To: <20180323034356.72130-1-haoqf@linux.vnet.ibm.com> References: <20180323034356.72130-1-haoqf@linux.vnet.ibm.com> X-TM-AS-GCONF: 00 x-cbid: 18032303-0020-0000-0000-00000408703B X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 18032303-0021-0000-0000-0000429C961D Message-Id: <20180323034356.72130-2-haoqf@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2018-03-23_01:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=1 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 impostorscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1709140000 definitions=main-1803230040 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] [fuzzy] X-Received-From: 148.163.158.5 Subject: [Qemu-devel] [PATCH v2 1/1] iotests: fix test case 185 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, famz@redhat.com, QingFeng Hao , jcody@redhat.com, cohuck@redhat.com, qemu-devel@nongnu.org, borntraeger@de.ibm.com, stefanha@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Test case 185 failed since commit 4486e89c219 --- "vl: introduce vm_shutdow= n()". It's because of the newly introduced function vm_shutdown calls bdrv_drain_= all, which is called later by bdrv_close_all. bdrv_drain_all resumes the jobs that doubles the speed and offset is doubled. Some jobs' status are changed as well. The fix is to not resume the jobs that are already yielded and also change 185.out accordingly. Suggested-by: Stefan Hajnoczi Signed-off-by: QingFeng Hao --- blockjob.c | 10 +++++++++- include/block/blockjob.h | 5 +++++ tests/qemu-iotests/185.out | 11 +++++++++-- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/blockjob.c b/blockjob.c index ef3ed69ff1..fa9838ac97 100644 --- a/blockjob.c +++ b/blockjob.c @@ -206,11 +206,16 @@ void block_job_txn_add_job(BlockJobTxn *txn, BlockJob= *job) =20 static void block_job_pause(BlockJob *job) { - job->pause_count++; + if (!job->yielded) { + job->pause_count++; + } } =20 static void block_job_resume(BlockJob *job) { + if (job->yielded) { + return; + } assert(job->pause_count > 0); job->pause_count--; if (job->pause_count) { @@ -371,6 +376,7 @@ static void block_job_sleep_timer_cb(void *opaque) BlockJob *job =3D opaque; =20 block_job_enter(job); + job->yielded =3D false; } =20 void block_job_start(BlockJob *job) @@ -935,6 +941,7 @@ void *block_job_create(const char *job_id, const BlockJ= obDriver *driver, job->cb =3D cb; job->opaque =3D opaque; job->busy =3D false; + job->yielded =3D false; job->paused =3D true; job->pause_count =3D 1; job->refcnt =3D 1; @@ -1034,6 +1041,7 @@ static void block_job_do_yield(BlockJob *job, uint64_= t ns) timer_mod(&job->sleep_timer, ns); } job->busy =3D false; + job->yielded =3D true; block_job_unlock(); qemu_coroutine_yield(); =20 diff --git a/include/block/blockjob.h b/include/block/blockjob.h index fc645dac68..f8f208bbcf 100644 --- a/include/block/blockjob.h +++ b/include/block/blockjob.h @@ -99,6 +99,11 @@ typedef struct BlockJob { bool ready; =20 /** + * Set to true when the job is yielded. + */ + bool yielded; + + /** * Set to true when the job has deferred work to the main loop. */ bool deferred_to_main_loop; diff --git a/tests/qemu-iotests/185.out b/tests/qemu-iotests/185.out index 57eaf8d699..798282e196 100644 --- a/tests/qemu-iotests/185.out +++ b/tests/qemu-iotests/185.out @@ -7,6 +7,7 @@ Formatting 'TEST_DIR/t.IMGFMT.base', fmt=3DIMGFMT size=3D67= 108864 =20 =3D=3D=3D Creating backing chain =3D=3D=3D =20 +{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event"= : "RESUME"} Formatting 'TEST_DIR/t.qcow2.mid', fmt=3Dqcow2 size=3D67108864 backing_fil= e=3DTEST_DIR/t.qcow2.base backing_fmt=3Dqcow2 cluster_size=3D65536 lazy_ref= counts=3Doff refcount_bits=3D16 {"return": {}} wrote 4194304/4194304 bytes at offset 0 @@ -25,23 +26,28 @@ Formatting 'TEST_DIR/t.qcow2', fmt=3Dqcow2 size=3D67108= 864 backing_file=3DTEST_DIR/t.q =3D=3D=3D Start active commit job and exit qemu =3D=3D=3D =20 {"return": {}} +{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event"= : "RESUME"} {"return": {}} {"return": {}} {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event"= : "SHUTDOWN", "data": {"guest": false}} -{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event"= : "BLOCK_JOB_CANCELLED", "data": {"device": "disk", "len": 4194304, "offset= ": 4194304, "speed": 65536, "type": "commit"}} +{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event"= : "BLOCK_JOB_READY", "data": {"device": "disk", "len": 4194304, "offset": 4= 194304, "speed": 65536, "type": "commit"}} +{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event"= : "BLOCK_JOB_COMPLETED", "data": {"device": "disk", "len": 4194304, "offset= ": 4194304, "speed": 65536, "type": "commit"}} =20 =3D=3D=3D Start mirror job and exit qemu =3D=3D=3D =20 {"return": {}} +{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event"= : "RESUME"} Formatting 'TEST_DIR/t.qcow2.copy', fmt=3Dqcow2 size=3D67108864 cluster_si= ze=3D65536 lazy_refcounts=3Doff refcount_bits=3D16 {"return": {}} +{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event"= : "BLOCK_JOB_READY", "data": {"device": "disk", "len": 4194304, "offset": 4= 194304, "speed": 65536, "type": "mirror"}} {"return": {}} {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event"= : "SHUTDOWN", "data": {"guest": false}} -{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event"= : "BLOCK_JOB_CANCELLED", "data": {"device": "disk", "len": 4194304, "offset= ": 4194304, "speed": 65536, "type": "mirror"}} +{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event"= : "BLOCK_JOB_COMPLETED", "data": {"device": "disk", "len": 4194304, "offset= ": 4194304, "speed": 65536, "type": "mirror"}} =20 =3D=3D=3D Start backup job and exit qemu =3D=3D=3D =20 {"return": {}} +{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event"= : "RESUME"} Formatting 'TEST_DIR/t.qcow2.copy', fmt=3Dqcow2 size=3D67108864 cluster_si= ze=3D65536 lazy_refcounts=3Doff refcount_bits=3D16 {"return": {}} {"return": {}} @@ -51,6 +57,7 @@ Formatting 'TEST_DIR/t.qcow2.copy', fmt=3Dqcow2 size=3D67= 108864 cluster_size=3D65536 l =3D=3D=3D Start streaming job and exit qemu =3D=3D=3D =20 {"return": {}} +{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event"= : "RESUME"} {"return": {}} {"return": {}} {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event"= : "SHUTDOWN", "data": {"guest": false}} --=20 2.13.5