From nobody Sat May 30 17:43:39 2026 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; dmarc=pass(p=none dis=none) header.from=linux.alibaba.com ARC-Seal: i=1; a=rsa-sha256; t=1780024409; cv=none; d=zohomail.com; s=zohoarc; b=XQGXeysr6yX2diTkuSV0u+lf2Q2JDyBMbAe4akR2aP7F1OHa696FCIpn9wZtOT8c1oh2o2OTpSTUSE9vaPZdthWsJsPFfGDY3JdSD0HL3eirTXlfb+U1DuBWYDgQLQ9hvDGH0Ruc9gA/TpaS413thcmoT9NW0XWbZ8NB8qXPEBg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780024409; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=U7ml39co5GffbC88S5cMrFMKR/CLnGY7E6qkMfoJ5GQ=; b=eZCv65bAChItPs828v7WJ3bmU/SZAgL0un43x0oGq6LS0mlhRBC/i1ZV+lYbwuJcwCh+66Vj8wMKcskSgyz0OWnRe1Z/N78bv1fWRmmxm1wRdR2/cy9LIDGMr/tbkSXFhGiEjw4kLCHw7JqFb9mzD6qCbu5dtt6REpp3Hj5xK10= ARC-Authentication-Results: i=1; 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; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17800244097871004.7426720485774; Thu, 28 May 2026 20:13:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wSneV-0000RL-MG; Thu, 28 May 2026 23:12:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wSneR-0000QL-Qo; Thu, 28 May 2026 23:12:47 -0400 Received: from [115.124.30.98] (helo=out30-98.freemail.mail.aliyun.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wSneL-0002gL-Vs; Thu, 28 May 2026 23:12:47 -0400 Received: from localhost(mailfrom:guobin@linux.alibaba.com fp:SMTPD_---0X3o2D1I_1780024335 cluster:ay36) by smtp.aliyun-inc.com; Fri, 29 May 2026 11:12:16 +0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780024339; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=U7ml39co5GffbC88S5cMrFMKR/CLnGY7E6qkMfoJ5GQ=; b=q/BxA5k4pDNz06fWJelgVtuqmGL4ki6V6zCrGxPRIC0BpnmVTyK5nEVLVnPkrg8f6/7VUXrRq45oDnwS6uMabdnXPI8OUliqJb3lcMCE9+zu6VLVDQ8V8hvrCpr4dC5TatCUszmnfQhAAiTr1jJRQnHWyaOrGsCdIyJSJQIGGjA= X-Alimail-AntiSpam: AC=PASS; BC=-1|-1; BR=01201311R451e4; CH=green; DM=||false|; DS=||; FP=0|-1|-1|-1|0|-1|-1|-1; HT=maildocker-contentspam033037009110; MF=guobin@linux.alibaba.com; NM=1; PH=DS; RN=6; SR=0; TI=SMTPD_---0X3o2D1I_1780024335; From: Bin Guo To: qemu-block@nongnu.org, qemu-devel@nongnu.org Cc: stefanha@redhat.com, fam@euphon.net, kwolf@redhat.com, hreitz@redhat.com Subject: [PATCH] block/io: skip conflict scan when no serialising requests exist Date: Fri, 29 May 2026 11:12:15 +0800 Message-ID: <20260529031215.59494-1-guobin@linux.alibaba.com> X-Mailer: git-send-email 2.50.1 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 115.124.30.98 (deferred) 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=lists1p.gnu.org; Received-SPF: pass client-ip=115.124.30.98; envelope-from=guobin@linux.alibaba.com; helo=out30-98.freemail.mail.aliyun.com X-Spam_score_int: -166 X-Spam_score: -16.7 X-Spam_bar: ---------------- X-Spam_report: (-16.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, ENV_AND_HDR_SPF_MATCH=-0.5, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_PASS=-0.001, T_SPF_HELO_TEMPERROR=0.01, UNPARSEABLE_RELAY=0.001, USER_IN_DEF_DKIM_WL=-7.5, USER_IN_DEF_SPF_WL=-7.5 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linux.alibaba.com) X-ZM-MESSAGEID: 1780024414248154100 Content-Type: text/plain; charset="utf-8" bdrv_find_conflicting_request() always linearly scans the tracked_requests list looking for overlapping serialising requests. However, BlockDriverState already maintains a serialising_in_flight atomic counter that is incremented/decremented as serialising requests are created/destroyed. When the counter is zero there are no serialising requests in the list and the scan is guaranteed to find nothing, so return NULL immediately. This complements the existing fast path in bdrv_wait_serialising_requests() which checks the same counter before acquiring reqs_lock. No functional change. Signed-off-by: Bin Guo --- block/io.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/block/io.c b/block/io.c index e8fb4ede4d..eb7ba59a90 100644 --- a/block/io.c +++ b/block/io.c @@ -649,6 +649,15 @@ bdrv_find_conflicting_request(BdrvTrackedRequest *self) { BdrvTrackedRequest *req; =20 + /* + * Fast path: if there are no serialising requests in flight, there + * can be no conflicts. This mirrors the check in + * bdrv_wait_serialising_requests(). + */ + if (!qatomic_read(&self->bs->serialising_in_flight)) { + return NULL; + } + QLIST_FOREACH(req, &self->bs->tracked_requests, list) { if (req =3D=3D self || (!req->serialising && !self->serialising)) { continue; --=20 2.50.1 (Apple Git-155)