From nobody Fri May 17 00:54:56 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=1612147363; cv=pass; d=zohomail.com; s=zohoarc; b=JrPIJScINstfyQ21TpAWmjnVBmO/AoY/Opzf0yeF8QHhxFHXQrD6FBjstlb+dhbS10367+Q91/WNj75m8c5YROcXQtV7hbhFIE2jZ2WGGm4rX2KtVKqPVxT4mlhaebAWSOk4ad9LgrsPK96iOPMqfrr5duGzC32owHVhoYBVpDE= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1612147363; 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=5Cp/rcoxIoaRjD9YHsOPZoWCU3DJ6gIAJQisG2D0QjA=; b=VqnZnTyA4GkuIJH3xKk/9FDtYIPHsO6te7vzSsbFBCHnrU0NZ5ld3xhidzKvzJuT4ZJiU5RNfokLBIfkDKKDVI10Net8gTuC8ZErjTSimxdGw2znvsU3n80xm8Ylajca9Erm3pK8alFM8qtwwEG1HZLbYmZSXde+6MZoS2OWzqE= 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 1612147363066998.245860956824; Sun, 31 Jan 2021 18:42:43 -0800 (PST) Received: from localhost ([::1]:34958 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l6PAn-0008Bo-9d for importer@patchew.org; Sun, 31 Jan 2021 21:42:41 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:52742) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l6P9G-0007eN-O0; Sun, 31 Jan 2021 21:41:06 -0500 Received: from mail-shaon0138.outbound.protection.partner.outlook.cn ([42.159.164.138]:33669 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 1l6P9A-0005qh-BM; Sun, 31 Jan 2021 21:41:06 -0500 Received: from BJXPR01MB0776.CHNPR01.prod.partner.outlook.cn (10.43.36.76) by BJXPR01MB0598.CHNPR01.prod.partner.outlook.cn (10.43.32.147) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3805.19; Mon, 1 Feb 2021 02:40:45 +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.026; Mon, 1 Feb 2021 02:40:45 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BiTy8H1cakSNB9Hhz2Mcn2f/0iW78LpB3M4B7CnnBCqo+5QRJcE+FuM3bGckkfQgiEBMfU/Cel9keMx5irTc5KCYRuACsvo40QmUng/ahBd3IxxS2p73jSreEnXqLLEIMNK9w0puimOiLG5h+Re/joexFHz8mvxJPHweN6aPoqWiSscIs3Rb9DwkGdRTESf5Cm5mSwjD1GsROhxRV++oN3K/8au74gEVycJoFO+QsaK24qgRTSP4W3Ly3tAysKJRKQkWR5x7bCAsJkm344AcjC/uXmRpLu41q4u37SAf1/09SFmM5hF761XcD7notgjUdq2HkaRXpXJlmjnv1TCIUA== 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=5Cp/rcoxIoaRjD9YHsOPZoWCU3DJ6gIAJQisG2D0QjA=; b=X97C2BQ+npZIHJkgmfbhdAWCDRSKF1F5vuRoU0moCUHOdTZpTtKXT/L5HJlebPfgxsWgosUS50lnxd2rSNuDKuCW2EZxahShRzIv1EiVjP6ySYlAgcHtoNyxMJu19wISvyYAajfF9EtjvuYf0k8tTX/Bd9ZSBBe9ZU5vM5qLiigpF5Js4zJBCGx+By5CWEABbpHO4WQhJnvR5NDowx27acs4QG7JtaAiIULA1nmQGNfWoLM4QflV9tygOVEB4VBLrTu8rj2+9dauFX0aS/vKuWd0BgVd+YgmuOdJEf6WkaHZqvt+eKixekRTLU/5u9AmJ5VYEJ+cBUBc7QoZ5Hr/hg== 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=5Cp/rcoxIoaRjD9YHsOPZoWCU3DJ6gIAJQisG2D0QjA=; b=L3bHRBle6+pl/TVACqr0jvsU/mwnvZL4fb+28Aff+oD5Si1Yx+XHZ9Cd8AKt6jWOuKgkNTm0oVQaeoSJ5PlZWAqgJykTWZWUrFfWlynyvgmAo8spaT8ITZOH+98MyDKiTc/ea5tBa690W/EiMdsmuV5MY4IREV0jRf+g/13c3PM= 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: AQHW9RU6HzbrvThE906I7emhJunSaKo8fsbggAYdnKA= Date: Mon, 1 Feb 2021 02:40:45 +0000 Message-ID: References: <20210126032545.13349-1-08005325@163.com> <20210128013053.23266-1-08005325@163.com> In-Reply-To: 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: 3a556e23-321e-431b-dd26-08d8c65ac6c8 x-ms-traffictypediagnostic: BJXPR01MB0598: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:454; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: RHsCBkO6GY7KLQLk1Dtop7N15ZKLyaQLPgLgywNvRFjOrmqW6O+J/i9eVnIo8Sj+4TwowQbTqCbpCTgeiZTMYrju5FHD6dFsKrfxCsP1ZVLyJNMMiq8iEYACV9E4HQyyq0Yrf7Cpzr7Nb9aQVWzgnTGcURHSpZoPau7CG7KZuH/7pCXWRiCEs+zuWWHAoz+Qqv6mooLI16uLV/55YQi1sg5/guqc7F8j44PO/jI9b0VxTODDzkntOIbUWsGbZJOlPioCRhh7VsjnCPiRmuQDOc5zgV4AZuGt2xiR6f/9PaTFKxhpXChkTBw8gjW9sicTIR/lfTB768ib7UnrM/NkvKOiM+Alps9IgLTiuc/QVL0cCKTNnnzTZtSn5/0VjC8IgfXAbftFElFFrFdylrpgQjRLXktD91CKrCY3WIjoBiNUmfOVCYAC9M7Jvj/tBKOibSRDE9NSFEHKWnPSRo3MuOCO71P3+Y57b23vNFI4Sgm4yW3RiMv2fxAhRWuB15ow30dx/IjQ06wMGh7QzV19AA== 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:(346002)(366004)(376002)(329002)(328002)(5660300002)(2906002)(53546011)(59450400001)(186003)(26005)(8936002)(7696005)(8676002)(55016002)(83380400001)(9686003)(508600001)(110136005)(54906003)(66476007)(66556008)(71200400001)(66946007)(76116006)(64756008)(66446008)(85182001)(63696004)(33656002)(4326008)(95416001)(86362001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: =?gb2312?B?aUhteGxGV2xMVkFvSUtXQzJIcENMaTF3V080RTNtZ2szbE04cXZ5amczU0p4?= =?gb2312?B?VmU4aFBzbWVLTXljQk5aS0M2cGtWTmw5TWYycXV4VWVRRjdGWHkxRE4xRWQ4?= =?gb2312?B?TUNWbmlZREZaVFNEcnE2ejhOdVBCaWVtb1phWjRtN2ZVVkV0ZXljNDRwZEQw?= =?gb2312?B?N0lBQW1lb1lwWGZ6eHVJTlpoa25OejBmekJvNktRdFJFMlVmV3ZuMlY3bDBr?= =?gb2312?B?TkxmRUpIMVFBQ2cvUElaWk1jc0t5Tm5DSEFRWnVwdU40MlM5blFldkE0NGps?= =?gb2312?B?S29yUzhyUjNWOFRwMGdEenVWS3ZLRkd4eU90ZklqcVl4VXpsZnJESHVLb2ZS?= =?gb2312?B?eHp5RmFJWS9UNWdWLzEyckJZVlF5WTBrektYYS90VlBIZTkwTVAvZ2hVL0ZD?= =?gb2312?B?Rk9rZ3YyYjRjMFFxODZVK3VJY2szUXJybjZrQjNxVVpGYUVmMysyWG12SCsr?= =?gb2312?B?eEc1UlphZUJnN0NMM29kUWthbVRqeURQUWluMXBzZFA5bm9DaUhTMU1lcXQv?= =?gb2312?B?cWZSa28vYjQxZGVkYkxkck4xN3pYLzJtNDkxcmdVbW1tZUE1VWU1dk9oL1Fr?= =?gb2312?B?MnhsSVpuYkdkS2I3MGsvTjdWbXFyLy9Da0x6NDJHelRqQkI1SkZURUVUaWc5?= =?gb2312?B?N093T2RtaW1IWHNoVjl3a1djMWFXZGVZb080dGtSNUlsT1ZxNWpKclZwTGZH?= =?gb2312?B?TVkwd05EMHBtSlRPaFpqdTJBQXEwNlV6dmtiRlNIeG0xNW84MWt4aTJaZ1gz?= =?gb2312?B?NzRhMUFvTHZZSEJ3a2dQT2UzWFh4UFcvOFdCRGt6Q1ZaeEIyZFE5ZWlIQ0Q1?= =?gb2312?B?YnpRZkhGcEdPVVZnYkt6NlEvdS9TVWgrMU9ROVpYRVZ4QjFTWnEwbjBPa2My?= =?gb2312?B?WG9FRVZKdVFhU3BxclNWenlHN1JNUmF3MXZXbEE5cEl0aG1VT0NnQ3ZZYkpx?= =?gb2312?B?YVZ2TW9vT0h2V1gwbHV4UEZWL01iUGtQUnJwVWxSdm5qR0Y1R1ptYm1zOHF4?= =?gb2312?B?V3hwWXV0bjRkQk1pdEpzbDd6SlZVTEF6bjRuTmM1djFtUHJ2RDQvS1hMdTFG?= =?gb2312?B?ZnB2UVhDMDVXREFxOXpRdEtUanlrR25nUjBDeExzTWlKYzRBdFhvK0FNdlRG?= =?gb2312?B?VmtNd2RleHNwdHZJQWRzUHpzcjQxQXpMci9MbkVkU1lJbW0xNVMwdEVZNm44?= =?gb2312?B?dWFmQUdJa1FvaDFYaFpDZXpPNXgyS0tlbUlZMGRwbkNFR0x3aWNZejI5ekZE?= =?gb2312?B?WXFXWlZqd0NzaVMvWFhvZzF0SUs0THdhaTZxRFRmRlhHSmlVZXljZGJOODd2?= =?gb2312?Q?8ZOvsSDNPu+hg=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: 3a556e23-321e-431b-dd26-08d8c65ac6c8 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Feb 2021 02:40:45.6044 (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: 9BcUuCmImawrrK4v0g0OKC3T5w4Cd7JUOLb6xnvibFpHIr8Ve5YZWXfZL/zi86M0xo46NPuljY6OdGgpipMbXA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BJXPR01MB0598 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.138; 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-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? It's really a bug and can cause the qemu to segmentfault. Thanks, Michael -----Original Message----- From: =E4=BB=87=E5=A4=A7=E7=8E=89=20 Sent: 2021=E5=B9=B41=E6=9C=8828=E6=97=A5 13:16 To: qemu-block@nongnu.org; qemu-devel@nongnu.org Cc: kwolf@redhat.com; mreitz@redhat.com; jsnow@redhat.com; 08005325@163.com Subject: RE: [PATCH v4] blockjob: Fix crash with IOthread when block commit= after snapshot 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