From: Stefan Hajnoczi <stefanha@redhat.com>
To: "Philippe Mathieu-Daudé" <philmd@linaro.org>
Cc: qemu-devel@nongnu.org, qemu-block@nongnu.org,
Fam Zheng <fam@euphon.net>,
xen-devel@lists.xenproject.org,
Anthony Perard <anthony.perard@citrix.com>,
Hanna Reitz <hreitz@redhat.com>, Kevin Wolf <kwolf@redhat.com>,
Julia Suvorova <jusual@redhat.com>,
Stefano Garzarella <sgarzare@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Aarushi Mehta <mehta.aaru20@gmail.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
Stefano Stabellini <sstabellini@kernel.org>,
Paul Durrant <paul@xen.org>, Ilya Maximets <i.maximets@ovn.org>
Subject: Re: [PATCH v2 2/4] util/defer-call: move defer_call() to util/
Date: Wed, 13 Sep 2023 15:39:52 -0400 [thread overview]
Message-ID: <20230913193952.GA917540@fedora> (raw)
In-Reply-To: <5ad95579-f8f3-2926-dd37-bd84151f10ac@linaro.org>
[-- Attachment #1: Type: text/plain, Size: 3705 bytes --]
On Fri, Aug 18, 2023 at 10:31:40AM +0200, Philippe Mathieu-Daudé wrote:
> Hi Stefan,
>
> On 17/8/23 17:58, Stefan Hajnoczi wrote:
> > The networking subsystem may wish to use defer_call(), so move the code
> > to util/ where it can be reused.
> >
> > As a reminder of what defer_call() does:
> >
> > This API defers a function call within a defer_call_begin()/defer_call_end()
> > section, allowing multiple calls to batch up. This is a performance
> > optimization that is used in the block layer to submit several I/O requests
> > at once instead of individually:
> >
> > defer_call_begin(); <-- start of section
> > ...
> > defer_call(my_func, my_obj); <-- deferred my_func(my_obj) call
> > defer_call(my_func, my_obj); <-- another
> > defer_call(my_func, my_obj); <-- another
> > ...
> > defer_call_end(); <-- end of section, my_func(my_obj) is called once
> >
> > Suggested-by: Ilya Maximets <i.maximets@ovn.org>
> > Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
> > ---
> > MAINTAINERS | 3 ++-
> > include/qemu/defer-call.h | 15 +++++++++++++++
> > include/sysemu/block-backend-io.h | 4 ----
> > block/blkio.c | 1 +
> > block/io_uring.c | 1 +
> > block/linux-aio.c | 1 +
> > block/nvme.c | 1 +
> > hw/block/dataplane/xen-block.c | 1 +
> > hw/block/virtio-blk.c | 1 +
> > hw/scsi/virtio-scsi.c | 1 +
> > block/plug.c => util/defer-call.c | 2 +-
> > block/meson.build | 1 -
> > util/meson.build | 1 +
> > 13 files changed, 26 insertions(+), 7 deletions(-)
> > create mode 100644 include/qemu/defer-call.h
> > rename block/plug.c => util/defer-call.c (99%)
> >
> > diff --git a/MAINTAINERS b/MAINTAINERS
> > index 6111b6b4d9..7cd7132ffc 100644
> > --- a/MAINTAINERS
> > +++ b/MAINTAINERS
> > @@ -2676,12 +2676,13 @@ S: Supported
> > F: util/async.c
> > F: util/aio-*.c
> > F: util/aio-*.h
> > +F: util/defer-call.c
>
> If used by network/other backends, maybe worth adding a
> brand new section instead, rather than "Block I/O path".
Changes to defer-call.c will go through my block tree. We don't split
out the event loop (async.c, aio-*.c, etc) either even though it's
shared by other subsystems. The important thing is that
scripts/get_maintainer.pl identifies the maintainers.
I'd rather not create lots of micro-subsystems in MAINTAINERS that
duplicate my email and block git repo URL.
>
> > F: util/fdmon-*.c
> > F: block/io.c
> > -F: block/plug.c
> > F: migration/block*
> > F: include/block/aio.h
> > F: include/block/aio-wait.h
> > +F: include/qemu/defer-call.h
> > F: scripts/qemugdb/aio.py
> > F: tests/unit/test-fdmon-epoll.c
> > T: git https://github.com/stefanha/qemu.git block
> > diff --git a/include/qemu/defer-call.h b/include/qemu/defer-call.h
> > new file mode 100644
> > index 0000000000..291f86c987
> > --- /dev/null
> > +++ b/include/qemu/defer-call.h
> > @@ -0,0 +1,15 @@
> > +/* SPDX-License-Identifier: GPL-2.0-or-later */
> > +/*
> > + * Deferred calls
> > + *
> > + * Copyright Red Hat.
> > + */
> > +
> > +#ifndef QEMU_DEFER_CALL_H
> > +#define QEMU_DEFER_CALL_H
> > +
>
> Please add smth like:
>
> /* See documentation in util/defer-call.c */
Sure, will fix.
>
> > +void defer_call_begin(void);
> > +void defer_call_end(void);
> > +void defer_call(void (*fn)(void *), void *opaque);
> > +
> > +#endif /* QEMU_DEFER_CALL_H */
>
> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
next prev parent reply other threads:[~2023-09-13 19:40 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-17 15:58 [PATCH v2 0/4] virtio-blk: use blk_io_plug_call() instead of notification BH Stefan Hajnoczi
2023-08-17 15:58 ` [PATCH v2 1/4] block: rename blk_io_plug_call() API to defer_call() Stefan Hajnoczi
2023-08-18 8:33 ` Philippe Mathieu-Daudé
2023-08-18 11:06 ` Paul Durrant
2023-08-17 15:58 ` [PATCH v2 2/4] util/defer-call: move defer_call() to util/ Stefan Hajnoczi
2023-08-18 8:31 ` Philippe Mathieu-Daudé
2023-09-13 19:39 ` Stefan Hajnoczi [this message]
2023-08-17 15:58 ` [PATCH v2 3/4] virtio: use defer_call() in virtio_irqfd_notify() Stefan Hajnoczi
2023-08-18 15:17 ` Eric Blake
2023-08-21 11:02 ` Ilya Maximets
2023-08-17 15:58 ` [PATCH v2 4/4] virtio-blk: remove batch notification BH Stefan Hajnoczi
2023-08-18 15:19 ` Eric Blake
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230913193952.GA917540@fedora \
--to=stefanha@redhat.com \
--cc=anthony.perard@citrix.com \
--cc=fam@euphon.net \
--cc=hreitz@redhat.com \
--cc=i.maximets@ovn.org \
--cc=jusual@redhat.com \
--cc=kwolf@redhat.com \
--cc=mehta.aaru20@gmail.com \
--cc=mst@redhat.com \
--cc=paul@xen.org \
--cc=pbonzini@redhat.com \
--cc=philmd@linaro.org \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=sgarzare@redhat.com \
--cc=sstabellini@kernel.org \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.