From nobody Mon Feb 9 16:34:15 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 ARC-Seal: i=1; a=rsa-sha256; t=1596519212; cv=none; d=zohomail.com; s=zohoarc; b=JWQEJTWHnYC7EKfbw7RekL09laTOPE9wcVWf8p+g6v4cpf5lOdEH9RwB5q1ZxEK+B2A+KLQrURhoMDYh8RMZWsC/AtJ8msGFfdeCTZkv7cK3BgEI6S3UJcBDiqRM7ionFfKNkbYHP7UM1gWjrxCHpsWEfGtHdTbzBG3Q/LSYaVg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1596519212; 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=qFKhdiku8sGCyHV+5oEu1Ba9zo9tsc85ZfOtQNKJumQ=; b=kxLMMOUlUFbC0UeU+EM0Hd7yw89I8Tj63v/Ajb3wLwSbapo0SDOmlL8LWscXAfRlJwpGgivYNQQg1dsUmwq2zevPQmIm9oVXn6AQR9ZMZ2qD6WodLgHI8EtR0LjHKzABTfHN7m48B/xbnTuUjaIuCUgglZ9pldxqF6uZMoaj6+o= ARC-Authentication-Results: i=1; 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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1596519212276376.59257903503067; Mon, 3 Aug 2020 22:33:32 -0700 (PDT) Received: from localhost ([::1]:37776 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k2pZr-0000W3-4W for importer@patchew.org; Tue, 04 Aug 2020 01:33:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45716) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k2pVt-0006dy-3j for qemu-devel@nongnu.org; Tue, 04 Aug 2020 01:29:25 -0400 Received: from us-smtp-1.mimecast.com ([207.211.31.81]:36874 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1k2pVr-0004mO-Gq for qemu-devel@nongnu.org; Tue, 04 Aug 2020 01:29:24 -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-11-zZFkjMyvN5GD-FDZoZTzwA-1; Tue, 04 Aug 2020 01:28:17 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 040261005510; Tue, 4 Aug 2020 05:28:16 +0000 (UTC) Received: from localhost (ovpn-112-116.ams2.redhat.com [10.36.112.116]) by smtp.corp.redhat.com (Postfix) with ESMTP id 756258A181; Tue, 4 Aug 2020 05:28:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1596518962; 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=qFKhdiku8sGCyHV+5oEu1Ba9zo9tsc85ZfOtQNKJumQ=; b=W4Uj8AjDw1Sjjy3UJYnioSWUiNp4TKZDOVAwq+9W3EtKmGaFoGzTwmD0vzO8NTts3RO/YY 53zR8VLKc5XHbkiVDeCSLM61ZIs3DnN0KS94nqS3+Xkln9dexsjJRKik0FO5mzp2y6dfPP 0uPfqlx4dvaSulB9gp8M534ib3dimrU= X-MC-Unique: zZFkjMyvN5GD-FDZoZTzwA-1 From: Stefan Hajnoczi To: qemu-devel@nongnu.org Subject: [PATCH 2/3] async: always set ctx->notified in aio_notify() Date: Tue, 4 Aug 2020 06:28:03 +0100 Message-Id: <20200804052804.1165291-3-stefanha@redhat.com> In-Reply-To: <20200804052804.1165291-1-stefanha@redhat.com> References: <20200804052804.1165291-1-stefanha@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=stefanha@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=207.211.31.81; envelope-from=stefanha@redhat.com; helo=us-smtp-delivery-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/08/04 01:01:15 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -13 X-Spam_score: -1.4 X-Spam_bar: - X-Spam_report: (-1.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MIME_BASE64_TEXT=1.741, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, 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: Fam Zheng , Paolo Bonzini , Stefan Hajnoczi , qemu-block@nongnu.org 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" aio_notify() does not set ctx->notified when called with ctx->aio_notify_me disabled. In order to poll ctx->notified it is therefore necessary to enable ctx->aio_notify_me. This is suboptimal since expensive event_notifier_set(&ctx->notifier) and event_notifier_test_and_clear(&ctx->notifier) calls required when ctx->aio_notify_me is enabled. Change aio_notify() me so that aio->notified is always set, regardless of ctx->aio_notify_me. This will allow polling to work cheaply with ctx->aio_notify_me disabled. Move the event_notifier_test_and_clear() to the fd handler function (which is now no longer an empty function so "dummy" has been dropped from its name). The next patch takes advantage of this by optimizing polling in util/aio-posix.c. Signed-off-by: Stefan Hajnoczi --- util/async.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/util/async.c b/util/async.c index d9f987e133..3e68b5b757 100644 --- a/util/async.c +++ b/util/async.c @@ -425,19 +425,14 @@ void aio_notify(AioContext *ctx) smp_mb(); if (atomic_read(&ctx->notify_me)) { event_notifier_set(&ctx->notifier); - atomic_mb_set(&ctx->notified, true); } + + atomic_mb_set(&ctx->notified, true); } =20 void aio_notify_accept(AioContext *ctx) { - if (atomic_xchg(&ctx->notified, false) -#ifdef WIN32 - || true -#endif - ) { - event_notifier_test_and_clear(&ctx->notifier); - } + atomic_mb_set(&ctx->notified, false); } =20 static void aio_timerlist_notify(void *opaque, QEMUClockType type) @@ -445,8 +440,11 @@ static void aio_timerlist_notify(void *opaque, QEMUClo= ckType type) aio_notify(opaque); } =20 -static void aio_context_notifier_dummy_cb(EventNotifier *e) +static void aio_context_notifier_cb(EventNotifier *e) { + AioContext *ctx =3D container_of(e, AioContext, notifier); + + event_notifier_test_and_clear(&ctx->notifier); } =20 /* Returns true if aio_notify() was called (e.g. a BH was scheduled) */ @@ -508,7 +506,7 @@ AioContext *aio_context_new(Error **errp) =20 aio_set_event_notifier(ctx, &ctx->notifier, false, - aio_context_notifier_dummy_cb, + aio_context_notifier_cb, aio_context_notifier_poll); #ifdef CONFIG_LINUX_AIO ctx->linux_aio =3D NULL; --=20 2.26.2