From nobody Fri Nov 14 18:19:10 2025 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1761837838; cv=none; d=zohomail.com; s=zohoarc; b=Tby3aaByjLfVU0AlbOvY7LG/ibZ9YI9bRVTMfEVYTOifmbDKA7e3D+9XY5/7iYi6knLQyfIF4jnooZt2/ZmSrVOmbH7CJyv7WR2VR4rXgTdjNQfZYuK5Vu87rKsdiwPtr8qA6zQQeg+PwR6HALthfNS3J/mJOB9rU1QB8Puggb4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1761837838; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=/N1KmGem74f+3FZqBEjDnMhvDlCG/AFMNp0jDpnadAw=; b=gD1BeiTARATX1HW2weMuCKRlcOGXTZ89BQxKZoMoffIHVj/fVfyGA9K/kh4fwObDthFoYcAl7STrNX3w+UH9T3KipYSqRpblCLif1ojHvjuBrWh3aMYGPCvT2w3Wt9sNT9A8tuhZ3rhkNhSB2V+E3d2fkdupNsjjw1SOI0CtxAI= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1761837838346643.4732942012226; Thu, 30 Oct 2025 08:23:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vEUTe-0004YO-0T; Thu, 30 Oct 2025 11:22:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vEUTc-0004Wj-2a for qemu-devel@nongnu.org; Thu, 30 Oct 2025 11:22:12 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vEUTR-0006RM-Iu for qemu-devel@nongnu.org; Thu, 30 Oct 2025 11:22:11 -0400 Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-204-K1p3pMEKMvuy058q7qGWVw-1; Thu, 30 Oct 2025 11:21:56 -0400 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id DED64180B5C8; Thu, 30 Oct 2025 15:21:54 +0000 (UTC) Received: from localhost (unknown [10.2.16.94]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 8665130001A1; Thu, 30 Oct 2025 15:21:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1761837718; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=/N1KmGem74f+3FZqBEjDnMhvDlCG/AFMNp0jDpnadAw=; b=WTyzw2mKjx168FOFsNJFdUlpVqH/7lXxPHIRnB3lTc7YFoAODDbLf/swFGMSaZ7L/sml/g B9VeSdwpxTqIbEenLsZhucQ6+2qlm+uVxVVmDE7Uli5T/75Ktd0vjV71BvzRDXWiHNOOjH wfq2X64DLxI5FK1fK0FVDi+cGq2YnMA= X-MC-Unique: K1p3pMEKMvuy058q7qGWVw-1 X-Mimecast-MFC-AGG-ID: K1p3pMEKMvuy058q7qGWVw_1761837715 From: Stefan Hajnoczi To: qemu-devel@nongnu.org Cc: Hanna Czenczek , Paolo Bonzini , hibriansong@gmail.com, eblake@redhat.com, Stefan Hajnoczi , Kevin Wolf , qemu-block@nongnu.org, Chao Gao Subject: [RESEND PATCH v5 02/13] aio-posix: keep polling enabled with fdmon-io_uring.c Date: Thu, 30 Oct 2025 11:21:38 -0400 Message-ID: <20251030152150.470170-3-stefanha@redhat.com> In-Reply-To: <20251030152150.470170-1-stefanha@redhat.com> References: <20251030152150.470170-1-stefanha@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 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=stefanha@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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.29 Precedence: list List-Id: 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 @redhat.com) X-ZM-MESSAGEID: 1761837838941154100 Content-Type: text/plain; charset="utf-8" Commit 816a430c517e ("util/aio: Defer disabling poll mode as long as possible") kept polling enabled when the event loop timeout is 0. Since there is no timeout the event loop will continue immediately and the overhead of disabling and re-enabling polling can be avoided. fdmon-io_uring.c is unable to take advantage of this optimization because its ->need_wait() function returns true whenever there are new io_uring SQEs to submit: if (timeout || ctx->fdmon_ops->need_wait(ctx)) { ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Polling will be disabled even when timeout =3D=3D 0. Extend the optimization to handle the case when need_wait() returns true and timeout =3D=3D 0. Cc: Chao Gao Signed-off-by: Stefan Hajnoczi Reviewed-by: Eric Blake Reviewed-by: Kevin Wolf --- util/aio-posix.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/util/aio-posix.c b/util/aio-posix.c index 2e0a5dadc4..824fdc34cc 100644 --- a/util/aio-posix.c +++ b/util/aio-posix.c @@ -559,7 +559,14 @@ static bool run_poll_handlers(AioContext *ctx, AioHand= lerList *ready_list, elapsed_time =3D qemu_clock_get_ns(QEMU_CLOCK_REALTIME) - start_ti= me; max_ns =3D qemu_soonest_timeout(*timeout, max_ns); assert(!(max_ns && progress)); - } while (elapsed_time < max_ns && !ctx->fdmon_ops->need_wait(ctx)); + + if (ctx->fdmon_ops->need_wait(ctx)) { + if (fdmon_supports_polling(ctx)) { + *timeout =3D 0; /* stay in polling mode */ + } + break; + } + } while (elapsed_time < max_ns); =20 if (remove_idle_poll_handlers(ctx, ready_list, start_time + elapsed_time)) { @@ -722,7 +729,7 @@ bool aio_poll(AioContext *ctx, bool blocking) * up IO threads when some work becomes pending. It is essential to * avoid hangs or unnecessary latency. */ - if (poll_set_started(ctx, &ready_list, false)) { + if (timeout && poll_set_started(ctx, &ready_list, false)) { timeout =3D 0; progress =3D true; } --=20 2.51.0