From nobody Mon Feb 9 05:01:06 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1624523972799233.10577861416436; Thu, 24 Jun 2021 01:39:32 -0700 (PDT) Received: from localhost ([::1]:39030 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lwKtV-0006NR-KF for importer@patchew.org; Thu, 24 Jun 2021 04:39:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43694) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lwKsc-0004e4-UU for qemu-devel@nongnu.org; Thu, 24 Jun 2021 04:38:34 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:45545) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lwKsa-0005aA-Lk for qemu-devel@nongnu.org; Thu, 24 Jun 2021 04:38:34 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-527-8Q8WQ9JrO82egk8CqmsGvQ-1; Thu, 24 Jun 2021 04:38:30 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 747D9362FB; Thu, 24 Jun 2021 08:38:29 +0000 (UTC) Received: from localhost (ovpn-112-15.ams2.redhat.com [10.36.112.15]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 164EE60583; Thu, 24 Jun 2021 08:38:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1624523912; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=dYCYMyjeywWXfNqYhITp5HutawL5KubLshBdG0MKGaI=; b=ZLHIRFKwO/tlklNLgfmoaX9u3YPeXBt1sCRfkLaaQuRGqjWhPaAHJoVWkxjjWF5d6BNvON DRqAKvMTQSYn5KIvXsoZj6YmMoV8NZRgGwQWwlAe7ePrP36uwq9MZH+L/xi9r4fs70z7jG fDgw/M87LaX8lyJyHhlEug6OTdDfAyE= X-MC-Unique: 8Q8WQ9JrO82egk8CqmsGvQ-1 From: Max Reitz To: qemu-block@nongnu.org Subject: [PATCH v2 1/2] block/export: Conditionally ignore set-context error Date: Thu, 24 Jun 2021 10:38:24 +0200 Message-Id: <20210624083825.29224-2-mreitz@redhat.com> In-Reply-To: <20210624083825.29224-1-mreitz@redhat.com> References: <20210624083825.29224-1-mreitz@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=mreitz@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.205.24.124; envelope-from=mreitz@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -31 X-Spam_score: -3.2 X-Spam_bar: --- X-Spam_report: (-3.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.373, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Vladimir Sementsov-Ogievskiy , qemu-devel@nongnu.org, Max Reitz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" When invoking block-export-add with some iothread and fixed-iothread=3Dfalse, and changing the node's iothread fails, the error is supposed to be ignored. However, it is still stored in *errp, which is wrong. If a second error occurs, the "*errp must be NULL" assertion in error_setv() fails: qemu-system-x86_64: ../util/error.c:59: error_setv: Assertion `*errp =3D=3D NULL' failed. So if fixed-iothread=3Dfalse, we should ignore the error by passing NULL to bdrv_try_set_aio_context(). Fixes: f51d23c80af73c95e0ce703ad06a300f1b3d63ef ("block/export: add iothread and fixed-iothread options") Signed-off-by: Max Reitz Reviewed-by: Vladimir Sementsov-Ogievskiy --- block/export/export.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/block/export/export.c b/block/export/export.c index fec7d9f738..6d3b9964c8 100644 --- a/block/export/export.c +++ b/block/export/export.c @@ -111,6 +111,7 @@ BlockExport *blk_exp_add(BlockExportOptions *export, Er= ror **errp) if (export->has_iothread) { IOThread *iothread; AioContext *new_ctx; + Error **set_context_errp; =20 iothread =3D iothread_by_id(export->iothread); if (!iothread) { @@ -120,7 +121,9 @@ BlockExport *blk_exp_add(BlockExportOptions *export, Er= ror **errp) =20 new_ctx =3D iothread_get_aio_context(iothread); =20 - ret =3D bdrv_try_set_aio_context(bs, new_ctx, errp); + /* Ignore errors with fixed-iothread=3Dfalse */ + set_context_errp =3D fixed_iothread ? errp : NULL; + ret =3D bdrv_try_set_aio_context(bs, new_ctx, set_context_errp); if (ret =3D=3D 0) { aio_context_release(ctx); aio_context_acquire(new_ctx); --=20 2.31.1 From nobody Mon Feb 9 05:01:06 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1624524054618968.858338871744; Thu, 24 Jun 2021 01:40:54 -0700 (PDT) Received: from localhost ([::1]:45136 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lwKur-000231-Fm for importer@patchew.org; Thu, 24 Jun 2021 04:40:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43720) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lwKsl-00055V-4u for qemu-devel@nongnu.org; Thu, 24 Jun 2021 04:38:43 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]:22217) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lwKsj-0005hQ-HM for qemu-devel@nongnu.org; Thu, 24 Jun 2021 04:38:42 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-398-XKG1guSTPNqsUcTzt3mB4g-1; Thu, 24 Jun 2021 04:38:32 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 68C111922963; Thu, 24 Jun 2021 08:38:31 +0000 (UTC) Received: from localhost (ovpn-112-15.ams2.redhat.com [10.36.112.15]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 0DC8D19711; Thu, 24 Jun 2021 08:38:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1624523921; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=1PWMkr+TqSSCJv+JZ/fo9TR+eomt/81LsH1M97/nsXc=; b=XoiqYqwmBmNrrOgXoYDJ3vEH4493U0mlYBc36JhN6+4zvtL/hVi4DwnelI/jUctlz5hbO2 A4kGtNv77dczQH/T6tOASlThQzzCmdHg0QyVFj+gnnUK6YlgCFCIk5/TAmRM2JTShExlSQ MnHCbdg9T5UfZ2jmQmS+esaS5oG/dGo= X-MC-Unique: XKG1guSTPNqsUcTzt3mB4g-1 From: Max Reitz To: qemu-block@nongnu.org Subject: [PATCH v2 2/2] iotests/307: Test iothread conflict for exports Date: Thu, 24 Jun 2021 10:38:25 +0200 Message-Id: <20210624083825.29224-3-mreitz@redhat.com> In-Reply-To: <20210624083825.29224-1-mreitz@redhat.com> References: <20210624083825.29224-1-mreitz@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=mreitz@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=mreitz@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -31 X-Spam_score: -3.2 X-Spam_bar: --- X-Spam_report: (-3.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.373, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Vladimir Sementsov-Ogievskiy , qemu-devel@nongnu.org, Max Reitz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Passing fixed-iothread=3Dtrue should make iothread conflicts fatal, whereas fixed-iothread=3Dfalse should not. Combine the second case with an error condition that is checked after the iothread is handled, to verify that qemu does not crash if there is such an error after changing the iothread failed. Signed-off-by: Max Reitz Reviewed-by: Vladimir Sementsov-Ogievskiy Tested-by: Vladimir Sementsov-Ogievskiy --- tests/qemu-iotests/307 | 15 +++++++++++++++ tests/qemu-iotests/307.out | 8 ++++++++ 2 files changed, 23 insertions(+) diff --git a/tests/qemu-iotests/307 b/tests/qemu-iotests/307 index c7685347bc..b429b5aa50 100755 --- a/tests/qemu-iotests/307 +++ b/tests/qemu-iotests/307 @@ -41,9 +41,11 @@ with iotests.FilePath('image') as img, \ iotests.log('=3D=3D=3D Launch VM =3D=3D=3D') =20 vm.add_object('iothread,id=3Diothread0') + vm.add_object('iothread,id=3Diothread1') vm.add_blockdev(f'file,filename=3D{img},node-name=3Dfile') vm.add_blockdev(f'{iotests.imgfmt},file=3Dfile,node-name=3Dfmt') vm.add_blockdev('raw,file=3Dfile,node-name=3Dro,read-only=3Don') + vm.add_blockdev('null-co,node-name=3Dnull') vm.add_device(f'id=3Dscsi0,driver=3Dvirtio-scsi,iothread=3Diothread0') vm.launch() =20 @@ -74,6 +76,19 @@ with iotests.FilePath('image') as img, \ vm.qmp_log('query-block-exports') iotests.qemu_nbd_list_log('-k', socket) =20 + iotests.log('\n=3D=3D=3D Add export with conflicting iothread =3D=3D= =3D') + + vm.qmp_log('device_add', id=3D'sdb', driver=3D'scsi-hd', drive=3D'null= ') + + # Should fail because of fixed-iothread + vm.qmp_log('block-export-add', id=3D'export1', type=3D'nbd', node_name= =3D'null', + iothread=3D'iothread1', fixed_iothread=3DTrue, writable=3DT= rue) + + # Should ignore the iothread conflict, but then fail because of the + # permission conflict (and not crash) + vm.qmp_log('block-export-add', id=3D'export1', type=3D'nbd', node_name= =3D'null', + iothread=3D'iothread1', fixed_iothread=3DFalse, writable=3D= True) + iotests.log('\n=3D=3D=3D Add a writable export =3D=3D=3D') =20 # This fails because share-rw=3Doff diff --git a/tests/qemu-iotests/307.out b/tests/qemu-iotests/307.out index 4b0c7e155a..ec8d2be0e0 100644 --- a/tests/qemu-iotests/307.out +++ b/tests/qemu-iotests/307.out @@ -51,6 +51,14 @@ exports available: 1 base:allocation =20 =20 +=3D=3D=3D Add export with conflicting iothread =3D=3D=3D +{"execute": "device_add", "arguments": {"drive": "null", "driver": "scsi-h= d", "id": "sdb"}} +{"return": {}} +{"execute": "block-export-add", "arguments": {"fixed-iothread": true, "id"= : "export1", "iothread": "iothread1", "node-name": "null", "type": "nbd", "= writable": true}} +{"error": {"class": "GenericError", "desc": "Cannot change iothread of act= ive block backend"}} +{"execute": "block-export-add", "arguments": {"fixed-iothread": false, "id= ": "export1", "iothread": "iothread1", "node-name": "null", "type": "nbd", = "writable": true}} +{"error": {"class": "GenericError", "desc": "Permission conflict on node '= null': permissions 'write' are both required by an unnamed block device (us= es node 'null' as 'root' child) and unshared by block device 'sdb' (uses no= de 'null' as 'root' child)."}} + =3D=3D=3D Add a writable export =3D=3D=3D {"execute": "block-export-add", "arguments": {"description": "This is the = writable second export", "id": "export1", "name": "export1", "node-name": "= fmt", "type": "nbd", "writable": true, "writethrough": true}} {"error": {"class": "GenericError", "desc": "Permission conflict on node '= fmt': permissions 'write' are both required by an unnamed block device (use= s node 'fmt' as 'root' child) and unshared by block device 'sda' (uses node= 'fmt' as 'root' child)."}} --=20 2.31.1