From nobody Fri Apr 19 16:47:52 2024 Delivered-To: importer2@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+importer2=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1674504297; cv=none; d=zohomail.com; s=zohoarc; b=O4b3BINgMNpr4hppJgwMLVX1M6ia8QKjxLQs5OX3gLbtvtjjq2sY/HScgu0dQFVbvG1OgKKeGdC+QTxWOxg9grQPGVtYuGqK1JCkJv+fzSQINYT/5As0PQwzcE11+ysayW+PbhYEZltUD5kEY0SVEFa+qxk5cRKdiVumZ3c+Cmw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1674504297; h=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=c/hbz20BsRpzLhiXGvPfvpG5+LIRXyoeC0W83t9mgzw=; b=HhtTW2xmZRbNxWeAatO1p85mc0IMzN7p4PeE8QzlqQnGrl3ahlwYqTI3mL3HJaJCfeD96N/wcWs9eQLP8N4qwtz1jDDOQxbadOrHMD0lAHQahee1fr7GAszHFUauT7Dp9wTyZ7oqWLDGL3cj4xsVzSM2NH/2IuriZB3tjtbtg2U= 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+importer2=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1674504297552454.2593340456416; Mon, 23 Jan 2023 12:04:57 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pK33X-0003rc-1M; Mon, 23 Jan 2023 15:04:39 -0500 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 1pK33O-0003nm-Gv for qemu-devel@nongnu.org; Mon, 23 Jan 2023 15:04:32 -0500 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 1pK33M-0005iz-1P for qemu-devel@nongnu.org; Mon, 23 Jan 2023 15:04:29 -0500 Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-116-MmIsa_-nMm29l94RyBc_0g-1; Mon, 23 Jan 2023 15:04:22 -0500 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id E36B2101A5B4; Mon, 23 Jan 2023 20:04:21 +0000 (UTC) Received: from localhost (unknown [10.39.193.206]) by smtp.corp.redhat.com (Postfix) with ESMTP id 49C11492C3C; Mon, 23 Jan 2023 20:04:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1674504267; 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=c/hbz20BsRpzLhiXGvPfvpG5+LIRXyoeC0W83t9mgzw=; b=hixj4nK6etnfEHNkBD0vR6OBIpfYY92Nf+1iJUX15jhekl24AGlwge9B9VPAMUAEQdxTfF KOmb1/vBom6YUR/R8K7mD7Uld0D26JO7Lj896pfI4JUNXXmLGpRQI1PiT+U9VTKR3vKeRn KQxIwIWECg9jFklCUWv0cJMuTrizsPs= X-MC-Unique: MmIsa_-nMm29l94RyBc_0g-1 From: Stefan Hajnoczi To: qemu-devel@nongnu.org Cc: Hanna Reitz , "Michael S. Tsirkin" , Kevin Wolf , Stefan Hajnoczi , Fam Zheng , qemu-block@nongnu.org, Paolo Bonzini , Chao Gao Subject: [PULL 1/3] util/aio: Defer disabling poll mode as long as possible Date: Mon, 23 Jan 2023 15:04:15 -0500 Message-Id: <20230123200417.169053-2-stefanha@redhat.com> In-Reply-To: <20230123200417.169053-1-stefanha@redhat.com> References: <20230123200417.169053-1-stefanha@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.1 on 10.11.54.9 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+importer2=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_H2=-0.001, 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.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1674504299257100003 Content-Type: text/plain; charset="utf-8" From: Chao Gao When we measure FIO read performance (cache=3Dwritethrough, bs=3D4k, iodepth=3D64) in VMs, ~80K/s notifications (e.g., EPT_MISCONFIG) are observ= ed from guest to qemu. It turns out those frequent notificatons are caused by interference from worker threads. Worker threads queue bottom halves after completing IO requests. Pending bottom halves may lead to either aio_compute_timeout() zeros timeout and pass it to try_poll_mode() or run_poll_handlers() returns no progress after noticing pending aio_notify() events. Both cause run_poll_handlers() to call poll_set_started(false) to disable poll mode. However, for both cases, as timeout is already zeroed, the event loop (i.e., aio_poll()) just processes bottom halves and then starts the next event loop iteration. So, disabling poll mode has no value but leads to unnecessary notifications from guest. To minimize unnecessary notifications from guest, defer disabling poll mode to when the event loop is about to be blocked. With this patch applied, FIO seq-read performance (bs=3D4k, iodepth=3D64, cache=3Dwritethrough) in VMs increases from 330K/s to 413K/s IOPS. Suggested-by: Stefan Hajnoczi Signed-off-by: Chao Gao Message-id: 20220710120849.63086-1-chao.gao@intel.com Signed-off-by: Stefan Hajnoczi --- util/aio-posix.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/util/aio-posix.c b/util/aio-posix.c index 731f3826c0..6cc6256d53 100644 --- a/util/aio-posix.c +++ b/util/aio-posix.c @@ -585,18 +585,16 @@ static bool try_poll_mode(AioContext *ctx, AioHandler= List *ready_list, =20 max_ns =3D qemu_soonest_timeout(*timeout, ctx->poll_ns); if (max_ns && !ctx->fdmon_ops->need_wait(ctx)) { + /* + * Enable poll mode. It pairs with the poll_set_started() in + * aio_poll() which disables poll mode. + */ poll_set_started(ctx, ready_list, true); =20 if (run_poll_handlers(ctx, ready_list, max_ns, timeout)) { return true; } } - - if (poll_set_started(ctx, ready_list, false)) { - *timeout =3D 0; - return true; - } - return false; } =20 @@ -657,6 +655,17 @@ bool aio_poll(AioContext *ctx, bool blocking) * system call---a single round of run_poll_handlers_once suffices. */ if (timeout || ctx->fdmon_ops->need_wait(ctx)) { + /* + * Disable poll mode. poll mode should be disabled before the call + * of ctx->fdmon_ops->wait() so that guest's notification can wake + * 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)) { + timeout =3D 0; + progress =3D true; + } + ctx->fdmon_ops->wait(ctx, &ready_list, timeout); } =20 --=20 2.39.0 From nobody Fri Apr 19 16:47:52 2024 Delivered-To: importer2@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+importer2=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1674504326; cv=none; d=zohomail.com; s=zohoarc; b=eDLAkVSq0EmzFPkLjEaqHBD5WVvMn0yOynxdiCOeglieUJx03b+t+zVsJE2XF8q2sGf26++td972WpvnXHbsX5cMz6664nOY/lH01E9TLnqOvV24x/cb1JDNO0l8m73LyTh8pV9Z8RaGULTjLquJtvYb5sTdvJHw55/BSNB/CUk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1674504326; h=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=a38ePrpO98d+EwnW67WNcaJdZ+64WIiOIuLVudDG1eI=; b=YiTgKVPvTvcHXwFACslr0LvZQhpotIwx9z5FUh7Q7Tk8KzJySEWsTnjTw/Nv1SgtKaaVAf0ajVVWlsq/cOoYh3XShueancKFJblsYPraX17+6psi994k7FGT6+YrEGjUpbPWQlGA1Oq8VA4X0r7A0CJxP4/a2ySH7lQrrnGhxjY= 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+importer2=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1674504326225983.1315453104191; Mon, 23 Jan 2023 12:05:26 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pK33a-0003sD-9X; Mon, 23 Jan 2023 15:04:42 -0500 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 1pK33P-0003ns-5K for qemu-devel@nongnu.org; Mon, 23 Jan 2023 15:04:32 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pK33M-0005ip-1c for qemu-devel@nongnu.org; Mon, 23 Jan 2023 15:04:30 -0500 Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-453-GHs0CYxROK6GCHDy11MXMg-1; Mon, 23 Jan 2023 15:04:24 -0500 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 4707885C064; Mon, 23 Jan 2023 20:04:24 +0000 (UTC) Received: from localhost (unknown [10.39.193.206]) by smtp.corp.redhat.com (Postfix) with ESMTP id A04D9401530E; Mon, 23 Jan 2023 20:04:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1674504265; 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=a38ePrpO98d+EwnW67WNcaJdZ+64WIiOIuLVudDG1eI=; b=ELbrxuN4vGDwEGLSLz/Ar1DwRwPhWAUCscH+fdu779oHMau9NDXcks2MKWKge7DqW3V1jS 8Cu3vUaK6Rtg7ltvbxnvpstpNeTNQQYSmYHnC3DrLt7pVxiOtt8DIOinz7pRDKWW9dYWYd hOaS26yYop1iGubugeMvZ3i27hWri6M= X-MC-Unique: GHs0CYxROK6GCHDy11MXMg-1 From: Stefan Hajnoczi To: qemu-devel@nongnu.org Cc: Hanna Reitz , "Michael S. Tsirkin" , Kevin Wolf , Stefan Hajnoczi , Fam Zheng , qemu-block@nongnu.org, Paolo Bonzini , Sergio Lopez , Emanuele Giuseppe Esposito Subject: [PULL 2/3] virtio-blk: simplify virtio_blk_dma_restart_cb() Date: Mon, 23 Jan 2023 15:04:16 -0500 Message-Id: <20230123200417.169053-3-stefanha@redhat.com> In-Reply-To: <20230123200417.169053-1-stefanha@redhat.com> References: <20230123200417.169053-1-stefanha@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.1 on 10.11.54.2 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.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_H2=-0.001, SPF_HELO_NONE=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.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1674504327655100001 Content-Type: text/plain; charset="utf-8" virtio_blk_dma_restart_cb() is tricky because the BH must deal with virtio_blk_data_plane_start()/virtio_blk_data_plane_stop() being called. There are two issues with the code: 1. virtio_blk_realize() should use qdev_add_vm_change_state_handler() instead of qemu_add_vm_change_state_handler(). This ensures the ordering with virtio_init()'s vm change state handler that calls virtio_blk_data_plane_start()/virtio_blk_data_plane_stop() is well-defined. Then blk's AioContext is guaranteed to be up-to-date in virtio_blk_dma_restart_cb() and it's no longer necessary to have a special case for virtio_blk_data_plane_start(). 2. Only blk_drain() waits for virtio_blk_dma_restart_cb()'s blk_inc_in_flight() to be decremented. The bdrv_drain() family of functions do not wait for BlockBackend's in_flight counter to reach zero. virtio_blk_data_plane_stop() relies on blk_set_aio_context()'s implicit drain, but that's a bdrv_drain() and not a blk_drain(). Note that virtio_blk_reset() already correctly relies on blk_drain(). If virtio_blk_data_plane_stop() switches to blk_drain() then we can properly wait for pending virtio_blk_dma_restart_bh() calls. Once these issues are taken care of the code becomes simpler. This change is in preparation for multiple IOThreads in virtio-blk where we need to clean up the multi-threading behavior. I ran the reproducer from commit 49b44549ace7 ("virtio-blk: On restart, process queued requests in the proper context") to check that there is no regression. Cc: Sergio Lopez Cc: Kevin Wolf Cc: Emanuele Giuseppe Esposito Signed-off-by: Stefan Hajnoczi Acked-by: Michael S. Tsirkin Reviewed-by: Emanuele Giuseppe Esposito Message-id: 20221102182337.252202-1-stefanha@redhat.com Signed-off-by: Stefan Hajnoczi --- include/hw/virtio/virtio-blk.h | 2 -- hw/block/dataplane/virtio-blk.c | 17 +++++------- hw/block/virtio-blk.c | 46 ++++++++++++++------------------- 3 files changed, 26 insertions(+), 39 deletions(-) diff --git a/include/hw/virtio/virtio-blk.h b/include/hw/virtio/virtio-blk.h index 7f589b4146..dafec432ce 100644 --- a/include/hw/virtio/virtio-blk.h +++ b/include/hw/virtio/virtio-blk.h @@ -55,7 +55,6 @@ struct VirtIOBlock { VirtIODevice parent_obj; BlockBackend *blk; void *rq; - QEMUBH *bh; VirtIOBlkConf conf; unsigned short sector_mask; bool original_wce; @@ -93,6 +92,5 @@ typedef struct MultiReqBuffer { } MultiReqBuffer; =20 void virtio_blk_handle_vq(VirtIOBlock *s, VirtQueue *vq); -void virtio_blk_process_queued_requests(VirtIOBlock *s, bool is_bh); =20 #endif diff --git a/hw/block/dataplane/virtio-blk.c b/hw/block/dataplane/virtio-bl= k.c index 26f965cabc..b28d81737e 100644 --- a/hw/block/dataplane/virtio-blk.c +++ b/hw/block/dataplane/virtio-blk.c @@ -237,9 +237,6 @@ int virtio_blk_data_plane_start(VirtIODevice *vdev) goto fail_aio_context; } =20 - /* Process queued requests before the ones in vring */ - virtio_blk_process_queued_requests(vblk, false); - /* Kick right away to begin processing requests already in vring */ for (i =3D 0; i < nvqs; i++) { VirtQueue *vq =3D virtio_get_queue(s->vdev, i); @@ -272,11 +269,6 @@ int virtio_blk_data_plane_start(VirtIODevice *vdev) fail_host_notifiers: k->set_guest_notifiers(qbus->parent, nvqs, false); fail_guest_notifiers: - /* - * If we failed to set up the guest notifiers queued requests will be - * processed on the main context. - */ - virtio_blk_process_queued_requests(vblk, false); vblk->dataplane_disabled =3D true; s->starting =3D false; vblk->dataplane_started =3D true; @@ -325,8 +317,13 @@ void virtio_blk_data_plane_stop(VirtIODevice *vdev) aio_context_acquire(s->ctx); aio_wait_bh_oneshot(s->ctx, virtio_blk_data_plane_stop_bh, s); =20 - /* Drain and try to switch bs back to the QEMU main loop. If other use= rs - * keep the BlockBackend in the iothread, that's ok */ + /* Wait for virtio_blk_dma_restart_bh() and in flight I/O to complete = */ + blk_drain(s->conf->conf.blk); + + /* + * Try to switch bs back to the QEMU main loop. If other users keep the + * BlockBackend in the iothread, that's ok + */ blk_set_aio_context(s->conf->conf.blk, qemu_get_aio_context(), NULL); =20 aio_context_release(s->ctx); diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c index f717550fdc..1762517878 100644 --- a/hw/block/virtio-blk.c +++ b/hw/block/virtio-blk.c @@ -806,8 +806,10 @@ static void virtio_blk_handle_output(VirtIODevice *vde= v, VirtQueue *vq) virtio_blk_handle_vq(s, vq); } =20 -void virtio_blk_process_queued_requests(VirtIOBlock *s, bool is_bh) +static void virtio_blk_dma_restart_bh(void *opaque) { + VirtIOBlock *s =3D opaque; + VirtIOBlockReq *req =3D s->rq; MultiReqBuffer mrb =3D {}; =20 @@ -834,43 +836,27 @@ void virtio_blk_process_queued_requests(VirtIOBlock *= s, bool is_bh) if (mrb.num_reqs) { virtio_blk_submit_multireq(s, &mrb); } - if (is_bh) { - blk_dec_in_flight(s->conf.conf.blk); - } + + /* Paired with inc in virtio_blk_dma_restart_cb() */ + blk_dec_in_flight(s->conf.conf.blk); + aio_context_release(blk_get_aio_context(s->conf.conf.blk)); } =20 -static void virtio_blk_dma_restart_bh(void *opaque) -{ - VirtIOBlock *s =3D opaque; - - qemu_bh_delete(s->bh); - s->bh =3D NULL; - - virtio_blk_process_queued_requests(s, true); -} - static void virtio_blk_dma_restart_cb(void *opaque, bool running, RunState state) { VirtIOBlock *s =3D opaque; - BusState *qbus =3D BUS(qdev_get_parent_bus(DEVICE(s))); - VirtioBusState *bus =3D VIRTIO_BUS(qbus); =20 if (!running) { return; } =20 - /* - * If ioeventfd is enabled, don't schedule the BH here as queued - * requests will be processed while starting the data plane. - */ - if (!s->bh && !virtio_bus_ioeventfd_enabled(bus)) { - s->bh =3D aio_bh_new(blk_get_aio_context(s->conf.conf.blk), - virtio_blk_dma_restart_bh, s); - blk_inc_in_flight(s->conf.conf.blk); - qemu_bh_schedule(s->bh); - } + /* Paired with dec in virtio_blk_dma_restart_bh() */ + blk_inc_in_flight(s->conf.conf.blk); + + aio_bh_schedule_oneshot(blk_get_aio_context(s->conf.conf.blk), + virtio_blk_dma_restart_bh, s); } =20 static void virtio_blk_reset(VirtIODevice *vdev) @@ -1213,7 +1199,13 @@ static void virtio_blk_device_realize(DeviceState *d= ev, Error **errp) return; } =20 - s->change =3D qemu_add_vm_change_state_handler(virtio_blk_dma_restart_= cb, s); + /* + * This must be after virtio_init() so virtio_blk_dma_restart_cb() gets + * called after ->start_ioeventfd() has already set blk's AioContext. + */ + s->change =3D + qdev_add_vm_change_state_handler(dev, virtio_blk_dma_restart_cb, s= ); + blk_ram_registrar_init(&s->blk_ram_registrar, s->blk); blk_set_dev_ops(s->blk, &virtio_block_ops, s); =20 --=20 2.39.0 From nobody Fri Apr 19 16:47:52 2024 Delivered-To: importer2@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+importer2=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1674504299; cv=none; d=zohomail.com; s=zohoarc; b=PMy7VzxMkPyF1GxTbwjsZlA3+8yZCORRs70BgKBMXw+lmeRSaWjSgD5tMgamo6ZP9N4jh2etDXxE9WYL/P+r3+b1No8QcEYXn5vD1Sh0oFJpsZK6qhnGXyc+cuXAG9vchM7xWX4U2SaVppxS///+37cpwSzuxXG+ZvezFLf8nIk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1674504299; 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=GBjPg5PzJ5sOh9yR6sFRUSXxSz+BW0v18YTeNVXw93Y=; b=aMDzoZCJGtwkpaakA7pAQ1nyC9o9I6mV0GB0TkK1Xg8atWngYzXcs6XDFfuJffhnFQbc3d7t+OAI420kuklc4iofg4bnwM7ZfOGcGJD+VgQvy+aAQHuGUfToU1QGC9w6eYXoM1EARiFyK/EyNVGOEky12TXp/p9pI6bPEo6PkDg= 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+importer2=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1674504298920384.99875955259097; Mon, 23 Jan 2023 12:04:58 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pK33e-0003w0-UO; Mon, 23 Jan 2023 15:04:46 -0500 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 1pK33X-0003rq-6G for qemu-devel@nongnu.org; Mon, 23 Jan 2023 15:04:40 -0500 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 1pK33U-0005jw-01 for qemu-devel@nongnu.org; Mon, 23 Jan 2023 15:04:38 -0500 Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-396-1Wq8hbefOZqx5KbINNDb9w-1; Mon, 23 Jan 2023 15:04:27 -0500 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id ACC141C189A1; Mon, 23 Jan 2023 20:04:26 +0000 (UTC) Received: from localhost (unknown [10.39.193.206]) by smtp.corp.redhat.com (Postfix) with ESMTP id 1C612C15BA0; Mon, 23 Jan 2023 20:04:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1674504271; 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=GBjPg5PzJ5sOh9yR6sFRUSXxSz+BW0v18YTeNVXw93Y=; b=GtFwWNcf59n53BDKq1ehp778WGHcMoGkWes2aNaEDKtqkKeSTQCjmMN0CNWbd9etm/rD7M opPuoPfwyskACww8IuIwwn1NIa9YHEvGaCGoxTcPq3XZ6L1rd8ZGssiuQOfMB5uvBvYu2C iNcGaJqH8UvAl67ZxVz9tr8pLN3OaHY= X-MC-Unique: 1Wq8hbefOZqx5KbINNDb9w-1 From: Stefan Hajnoczi To: qemu-devel@nongnu.org Cc: Hanna Reitz , "Michael S. Tsirkin" , Kevin Wolf , Stefan Hajnoczi , Fam Zheng , qemu-block@nongnu.org, Paolo Bonzini , Peter Krempa , Markus Armbruster Subject: [PULL 3/3] block/blkio: Fix inclusion of required headers Date: Mon, 23 Jan 2023 15:04:17 -0500 Message-Id: <20230123200417.169053-4-stefanha@redhat.com> In-Reply-To: <20230123200417.169053-1-stefanha@redhat.com> References: <20230123200417.169053-1-stefanha@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.1 on 10.11.54.8 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+importer2=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_H2=-0.001, 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.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1674504301281100011 From: Peter Krempa After recent header file inclusion rework the build fails when the blkio module is enabled: ../block/blkio.c: In function =E2=80=98blkio_detach_aio_context=E2=80=99: ../block/blkio.c:321:24: error: implicit declaration of function =E2=80=98b= drv_get_aio_context=E2=80=99; did you mean =E2=80=98qemu_get_aio_context=E2= =80=99? [-Werror=3Dimplicit-function-declaration] 321 | aio_set_fd_handler(bdrv_get_aio_context(bs), | ^~~~~~~~~~~~~~~~~~~~ | qemu_get_aio_context ../block/blkio.c:321:24: error: nested extern declaration of =E2=80=98bdrv_= get_aio_context=E2=80=99 [-Werror=3Dnested-externs] ../block/blkio.c:321:24: error: passing argument 1 of =E2=80=98aio_set_fd_h= andler=E2=80=99 makes pointer from integer without a cast [-Werror=3Dint-co= nversion] 321 | aio_set_fd_handler(bdrv_get_aio_context(bs), | ^~~~~~~~~~~~~~~~~~~~~~~~ | | | int In file included from /home/pipo/git/qemu.git/include/qemu/job.h:33, from /home/pipo/git/qemu.git/include/block/blockjob.h:30, from /home/pipo/git/qemu.git/include/block/block_int-globa= l-state.h:28, from /home/pipo/git/qemu.git/include/block/block_int.h:27, from ../block/blkio.c:13: /home/pipo/git/qemu.git/include/block/aio.h:476:37: note: expected =E2=80= =98AioContext *=E2=80=99 but argument is of type =E2=80=98int=E2=80=99 476 | void aio_set_fd_handler(AioContext *ctx, | ~~~~~~~~~~~~^~~ ../block/blkio.c: In function =E2=80=98blkio_file_open=E2=80=99: ../block/blkio.c:821:34: error: passing argument 2 of =E2=80=98blkio_attach= _aio_context=E2=80=99 makes pointer from integer without a cast [-Werror=3D= int-conversion] 821 | blkio_attach_aio_context(bs, bdrv_get_aio_context(bs)); | ^~~~~~~~~~~~~~~~~~~~~~~~ | | | int Fix it by including 'block/block-io.h' which contains the required declarations. Fixes: e2c1c34f139f49ef909bb4322607fb8b39002312 Signed-off-by: Peter Krempa Reviewed-by: Markus Armbruster Message-id: 2bc956011404a1ab03342aefde0087b5b4762562.1674477350.git.pkrempa= @redhat.com Signed-off-by: Stefan Hajnoczi --- block/blkio.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/block/blkio.c b/block/blkio.c index 5eae3adfaf..6ad86b23d1 100644 --- a/block/blkio.c +++ b/block/blkio.c @@ -19,6 +19,8 @@ #include "qemu/module.h" #include "exec/memory.h" /* for ram_block_discard_disable() */ =20 +#include "block/block-io.h" + /* * Keep the QEMU BlockDriver names identical to the libblkio driver names. * Using macros instead of typing out the string literals avoids typos. --=20 2.39.0