From nobody Fri May 17 18:39:35 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; arc=pass (i=1dmarc=pass fromdomain=huayun.com) ARC-Seal: i=2; a=rsa-sha256; t=1611829429; cv=pass; d=zohomail.com; s=zohoarc; b=kt1ZPzNeQoGFSpcXgVs66Ph+gVMIxQY+aFqfogl3WMKt1APEtqM5lyn40xBj/EE22QWzawdOU/FWP7R8n3BWhLvG0dHN1Q+KaDDRh/Dy1zgVFUxjSr0VfzxLTSUX84+9FkO8cu+2LAOTSfwjdfnPtUTdlk2edBUdsWZVM8p1M7E= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1611829429; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=mkeDHnA7CHhLvE9fihqOXyKJFoBiwfCSkrUS+nzQtfg=; b=j9RYbJpC7Vf1GlQXqdgkodpItz4U5oNF5DMzOhRTEVnTLE2+0ZQ3EoER2NhLPMf4elGZI5/Etggg5IA1s+3rfcZK7+lrddqlHYxjkbHEFrnKixZ20hnJwFGs5l85/9SYi3e5faHvR+olXntw2bg3WMF/83vUhsMsiRZK2BrVVjc= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; 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; arc=pass (i=1dmarc=pass fromdomain=huayun.com) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1611829429015630.1015881387957; Thu, 28 Jan 2021 02:23:49 -0800 (PST) Received: from localhost ([::1]:40352 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l54Sp-0002q9-87 for importer@patchew.org; Thu, 28 Jan 2021 05:23:47 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:60016) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l50BY-00005Q-Mu; Thu, 28 Jan 2021 00:49:41 -0500 Received: from mail-shaon0139.outbound.protection.partner.outlook.cn ([42.159.164.139]:9999 helo=CN01-SHA-obe.outbound.protection.partner.outlook.cn) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l50BR-00042s-Vo; Thu, 28 Jan 2021 00:49:39 -0500 Received: from BJXPR01MB0776.CHNPR01.prod.partner.outlook.cn (10.43.36.76) by BJXPR01MB0712.CHNPR01.prod.partner.outlook.cn (10.43.36.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3784.13; Thu, 28 Jan 2021 05:16:10 +0000 Received: from BJXPR01MB0776.CHNPR01.prod.partner.outlook.cn ([10.43.36.76]) by BJXPR01MB0776.CHNPR01.prod.partner.outlook.cn ([10.43.36.76]) with mapi id 15.20.3805.019; Thu, 28 Jan 2021 05:16:09 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=O7rnEHxlJOQ3467S3VTTYCoOmz8z04+jezP2V/Z+ge/IbtP5+eMfsuPQThBTn4SX3GEJCw7v5g5sBwb4UxA6yz+EDP7bSJsLGRJeWluPCkLlbPfcw6xF2Wq+4y5zu5eKwWN5r22JdDNTOWom4kKDfYAlE5+lvwQOZGq/ekaAS7OTZtyDx7DJ0MQJjkbVGF7LLgWXNC8wxHJpEhCp79nwlheDN3NS5GZJsOsAfMmpT+Ljg17jNQVqRNBhVxV07YmL0cdFb47mTKym3TMLJiNYMNXT2CuPrMV7kI8eBuH/1Wtodqbp6czwMPQTjazeFMIIenvelR5r/KUfvBmvNgBWyg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=mkeDHnA7CHhLvE9fihqOXyKJFoBiwfCSkrUS+nzQtfg=; b=YiQDs/hJ+KIkkqDNBs+u0nFwP9oEwlSMpwRbl7b/kVekOwCaT2pxIFaaeVrgGus21QrSncKsoVYTeV4TQaXHN/kq5CKHauYKzBx/DBqxau5bsZdtWkaFFSwjN719o69IRt2nOdLrPKVxihj9Hn81qX/JGiSHzMnMXDK35mkwowdmKtQ7Jrv9u2pomjz2KO/tEaqI14yH/hmIcJYZT+gj+usztwRxv3tKWEJhAcMpK4P9FawRyj4LmJhYNpONltkpQiyKWH8fgEDIRsL2DwEzeJvrYsCj4aw6is0R+dsvnclapkjpcSpl1By3weghebeBzkE/BdZEemQXWA6kEDMELw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=huayun.com; dmarc=pass action=none header.from=huayun.com; dkim=pass header.d=huayun.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hycloud.partner.onmschina.cn; s=selector1-hycloud-partner-onmschina-cn; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=mkeDHnA7CHhLvE9fihqOXyKJFoBiwfCSkrUS+nzQtfg=; b=HBH4+SgavCIprcLs+MZ10mroTPshQ8gMv4d9zO9kP55LSiZC5+gmUDdRsaxo8xo9glDdTGUf5TEoZBtG4NGM4RB9BYRKFXRvT9eWIBjQeqJGLpF8Zi63hlQURiByK8WGWCVmWXDsAPaTMfuwoS19ML11bxRrQgH0fuFJpki+m7Y= From: =?gb2312?B?s/C089Px?= To: "qemu-block@nongnu.org" , "qemu-devel@nongnu.org" Subject: RE: [PATCH v4] blockjob: Fix crash with IOthread when block commit after snapshot Thread-Topic: [PATCH v4] blockjob: Fix crash with IOthread when block commit after snapshot Thread-Index: AQHW9RU6HzbrvThE906I7emhJunSaKo8fsbg Date: Thu, 28 Jan 2021 05:16:09 +0000 Message-ID: References: <20210126032545.13349-1-08005325@163.com> <20210128013053.23266-1-08005325@163.com> In-Reply-To: <20210128013053.23266-1-08005325@163.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=huayun.com; x-originating-ip: [218.90.171.226] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 69c1cbea-2a96-4102-2f72-08d8c34bd2cf x-ms-traffictypediagnostic: BJXPR01MB0712: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:294; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: aNkbp33AyzIZP7wnm2uRV/UQhUW8sl8y4yoTgzp00+eWnW8gtIvRQoLgTZgzcO1GmdbaSvjc+3ZXmLkIxYmLu3Vt7PYNeITUcqrPF3UTPw96Tp3x8Qy/RrQfWlAKNRoQ9LRx93kgM9J+OrcF9iEjkt/o2OtZ10NIcvAvaPlR6901o5rCQqxtN2vErYQAG+3N3xOn/tKTX6NFxCx1/X4bz1Z6HFanRg7obUXV1zZYNViwysSNQ/SIuk+JL8LruW7btMZ/XQm/iQHfMMcs6ymMbN+8mNiCz+X/uuab6+JDq/rq0y9nKmhZilVOlZlzd+JUHn7R1nevnBkIDbBX+gkLYqhYttUC0AHibXsze0l+FXtcYAfcDcoWgrDEeBwt+Q2xcxyqMjARZL7x0vwTtdEwm/xs0qPFs9vp++U/xiwy6Wb6cgC9dLqRTriCN9rfY1z7AAvY/FkLiN5EWdIy4Ar459CsKPEaEo62fPP2zG/QItzAaAkApVmt444n3INTI6u2AWmn2iYWA2NFSQ5V/ADXsA== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BJXPR01MB0776.CHNPR01.prod.partner.outlook.cn; PTR:; CAT:NONE; SFS:(376002)(366004)(346002)(328002)(329002)(2906002)(33656002)(4326008)(63696004)(95416001)(83380400001)(55016002)(71200400001)(5660300002)(9686003)(85182001)(8936002)(8676002)(508600001)(66476007)(86362001)(76116006)(66446008)(64756008)(26005)(186003)(53546011)(54906003)(66556008)(110136005)(7696005)(66946007)(59450400001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: =?gb2312?B?VWNCcWFOQ1RtUS9kalAwZStwcEJGdE1SdjhxT0haRE5JRmlpOXg0OXhRNDAr?= =?gb2312?B?eExtdWpxaGpWaEhDTENRbnFZRjNianIyNDZDdGsxNFd2amU0QklvSysrWVF5?= =?gb2312?B?bG1tM0Jkb1ZjZTB5RldOdUlMTEthcW13Z3FrWDNNZWRWTTRUSDVzQmluaW15?= =?gb2312?B?RTF1SnhYVnoxRlZsTVJzZEpSdzJtYzk0enRKTFFRc0Q3N1JzL3lvdU1raDN5?= =?gb2312?B?ZWtsNzZjSnp2ZERiaHduWHlHNmhzQWFEZjR6Ly9ma0Z0Tml2b05RVUlGdktn?= =?gb2312?B?bUt5RXRsbks3clBobnZ3UHZYcnp1enExZUVMKzcvMGJ0L01jMkpYNTd5NjA1?= =?gb2312?B?a0kwR0V5UnYyN0RSTk9nYnFzY3hoNGlkWjVYeVpyUWdUNzBLYXcvMmQydGxz?= =?gb2312?B?UnVIZEI1b2w3YjdZRTRPVzA4MStFTmE2L1ZMZ3dzcWlIK2ZQOUdCazRRbUlr?= =?gb2312?B?c3NDeDA1YW90QWhUR0FTOU9sWVZqdFd5cUxuZDJEbVFmRDdwSXJqbXNITXhC?= =?gb2312?B?eTFEUFJLQlRjVTJyWjFJaXI0eVJOMXQzcmg5bmpySWtjSllkK05sRTRmRmE4?= =?gb2312?B?QmtDdEFTc0EwdkpNWHg0THRXR2ErYlN0NUwzYzR1TEZVLytIUVNxSm95S1dT?= =?gb2312?B?alE5T1VQNnNVOWw5L2tvdFNWa1NUOE5idE9hVEJyTWd1WmRQL0x1WWx5TU1s?= =?gb2312?B?WmtnU0grRWNPbGJnZm5LeitnMkFVUjZsdURCbGZVc3hHNDQ2QXR0bVhHdmta?= =?gb2312?B?ZkFWdzJsTS80S21nNmxKTjJKRUNySVV4OEpaWGxTRHdVQU13NUdDbFNGNlcx?= =?gb2312?B?U2tMejJWSGd6dGhtb2NUcGVOMDRYd0FPaUVHdm9FMjNkSy90ZEN6cHRocWVB?= =?gb2312?B?SU1RMm0vcnBlRVYraCtWZ1JQamw0ZkE2QWZNSXUxR2hrb2RubmRaQ0pYYjBl?= =?gb2312?B?UDNYQ2F0VjlEVFRRRXZ3SDdJdFZHZXN1TFovQjFaeEV6bC9VN0x6VU9sMkpT?= =?gb2312?B?SURSZHRHUitOdGx1R0NYQVJQZ056Y1hINDBEOVRWQTVYbUZNQXU5aS9pSmpl?= =?gb2312?B?YThQa2lHa3V2QndEaklLYmRlODZCMzFCZVNBa0paQmpLTjhHeHdGdGdIVDMx?= =?gb2312?B?NDd5bGVCYjd6V001S2J4QmlnZFRvVk0zZktab3p1YkU3R3AveEZERS9ia1Rw?= =?gb2312?B?Tm1ZVGI2bllCTDhZdDg2ekNOaGtGc29KRmVHcnNpN3Z6VjZxTnByV21sWi9X?= =?gb2312?B?ZjNxWkcxenFmR3AzWjNnYUVnVDJUcVNleEc2b0FJVFZtSUxMZEtod3Nxb3VK?= =?gb2312?Q?tzpaleVaBwQZQ=3D?= x-ms-exchange-transport-forked: True Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: huayun.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BJXPR01MB0776.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-Network-Message-Id: 69c1cbea-2a96-4102-2f72-08d8c34bd2cf X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Jan 2021 05:16:09.8562 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a674a363-98d5-4f2d-95da-d54302c8edaa X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: /ujjXdAZMExqPRPa9ATug4xSi0GBwg6CqWDAstKd1vOhV+s7jqe1WrA/xVjVmiYJopzvA7H/347aOYVaBawL0w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BJXPR01MB0712 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=42.159.164.139; envelope-from=qiudayu@huayun.com; helo=CN01-SHA-obe.outbound.protection.partner.outlook.cn X-Spam_score_int: 37 X-Spam_score: 3.7 X-Spam_bar: +++ X-Spam_report: (3.7 / 5.0 requ) BAYES_00=-1.9, CHARSET_FARAWAY_HEADER=3.2, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, MIME_CHARSET_FARAWAY=2.45, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Thu, 28 Jan 2021 05:22:43 -0500 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: "kwolf@redhat.com" , "jsnow@redhat.com" , "08005325@163.com" <08005325@163.com>, "mreitz@redhat.com" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @hycloud.partner.onmschina.cn) Content-Type: text/plain; charset="utf-8" Any comments? -----Original Message----- From: 08005325@163.com <08005325@163.com>=20 Sent: 2021=E5=B9=B41=E6=9C=8828=E6=97=A5 9:31 To: kwolf@redhat.com; mreitz@redhat.com; jsnow@redhat.com Cc: qemu-block@nongnu.org; qemu-devel@nongnu.org; =E4=BB=87=E5=A4=A7=E7=8E= =89 Subject: [PATCH v4] blockjob: Fix crash with IOthread when block commit aft= er snapshot From: Michael Qiu v4: rebase to latest code v3: reformat the commit log, remove duplicate content v2: modify the coredump backtrace within commit log with the newest qemu with master branch Currently, if guest has workloads, IO thread will acquire aio_context lock = before do io_submit, it leads to segmentfault when do block commit after sn= apshot. Just like below: Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 0x7f7c7d91f700 (LWP 99907)] 0x00005576d0f65aab in bdrv= _mirror_top_pwritev at ../block/mirror.c:1437 1437 ../block/mirror.c: No such file or directory. (gdb) p s->job $17 =3D (MirrorBlockJob *) 0x0 (gdb) p s->stop $18 =3D false (gdb) bt Switch to qemu main thread: /lib/../lib64/libpthread.so.0 /lib/../lib64/libpthread.so.0 ../util/qemu-thread-posix.c:79 qapi/qapi-commands-block-core.c:346 ../qapi/qmp-dispatch.c:110 /lib/../lib64/libglib-2.0.so.0 In IO thread when do bdrv_mirror_top_pwritev, the job is NULL, and stop fie= ld is false, this means the MirrorBDSOpaque "s" object has not been initial= ized yet, and this object is initialized by block_job_create(), but the ini= tialize process is stuck in acquiring the lock. The rootcause is that qemu do release/acquire when hold the lock, at the sa= me time, IO thread get the lock after release stage, and the crash occured. Actually, in this situation, job->job.aio_context will not equal to qemu_ge= t_aio_context(), and will be the same as bs->aio_context, thus, no need to = release the lock, becasue bdrv_root_attach_child() will not change the cont= ext. This patch fix this issue. Signed-off-by: Michael Qiu --- blockjob.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/blockjob.c b/blockjob.c index 98ac8af982..51a09f3b60 100644 --- a/blockjob.c +++ b/blockjob.c @@ -214,13 +214,15 @@ int block_job_add_bdrv(BlockJob *job, const char *nam= e, BlockDriverState *bs, BdrvChild *c; =20 bdrv_ref(bs); - if (job->job.aio_context !=3D qemu_get_aio_context()) { + if (bdrv_get_aio_context(bs) !=3D job->job.aio_context && + job->job.aio_context !=3D qemu_get_aio_context()) { aio_context_release(job->job.aio_context); } c =3D bdrv_root_attach_child(bs, name, &child_job, 0, job->job.aio_context, perm, shared_perm, jo= b, errp); - if (job->job.aio_context !=3D qemu_get_aio_context()) { + if (bdrv_get_aio_context(bs) !=3D job->job.aio_context && + job->job.aio_context !=3D qemu_get_aio_context()) { aio_context_acquire(job->job.aio_context); } if (c =3D=3D NULL) { -- 2.22.0