[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 23/25] block: add close notifiers
From: |
Markus Armbruster |
Subject: |
Re: [Qemu-devel] [PATCH 23/25] block: add close notifiers |
Date: |
Fri, 19 Oct 2012 10:21:17 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.1 (gnu/linux) |
Paolo Bonzini <address@hidden> writes:
> The first user of close notifiers will be the embedded NBD server.
> It is possible to use them to do some of the ad hoc processing
> (e.g. for block jobs and I/O limits) that is currently done by
> bdrv_close.
>
> Acked-by: Kevin Wolf <address@hidden>
> Signed-off-by: Paolo Bonzini <address@hidden>
> ---
> Makefile.objs | 4 ++--
> block.c | 19 ++++++++++++++-----
> block.h | 1 +
> block_int.h | 2 ++
> 4 file modificati, 19 inserzioni(+), 7 rimozioni(-)
>
> diff --git a/Makefile.objs b/Makefile.objs
> index 3f16d67..ca67885 100644
> --- a/Makefile.objs
> +++ b/Makefile.objs
> @@ -43,7 +43,7 @@ coroutine-obj-$(CONFIG_WIN32) += coroutine-win32.o
>
> block-obj-y = cutils.o iov.o cache-utils.o qemu-option.o module.o async.o
> block-obj-y += nbd.o block.o blockjob.o aio.o aes.o qemu-config.o
> -block-obj-y += qemu-progress.o qemu-sockets.o uri.o
> +block-obj-y += qemu-progress.o qemu-sockets.o uri.o notify.o
> block-obj-y += $(coroutine-obj-y) $(qobject-obj-y) $(version-obj-y)
> block-obj-$(CONFIG_POSIX) += posix-aio-compat.o
> block-obj-$(CONFIG_LINUX_AIO) += linux-aio.o
> @@ -94,7 +94,7 @@ common-obj-y += bt-host.o bt-vhci.o
> common-obj-y += dma-helpers.o
> common-obj-y += iov.o acl.o
> common-obj-$(CONFIG_POSIX) += compatfd.o
> -common-obj-y += notify.o event_notifier.o
> +common-obj-y += event_notifier.o
> common-obj-y += qemu-timer.o qemu-timer-common.o
> common-obj-y += qtest.o
> common-obj-y += vl.o
> diff --git a/block.c b/block.c
> index e95f613..56426a9 100644
> --- a/block.c
> +++ b/block.c
> @@ -30,6 +30,7 @@
> #include "module.h"
> #include "qjson.h"
> #include "sysemu.h"
> +#include "notify.h"
> #include "qemu-coroutine.h"
> #include "qmp-commands.h"
> #include "qemu-timer.h"
> @@ -312,9 +313,16 @@ BlockDriverState *bdrv_new(const char *device_name)
> QTAILQ_INSERT_TAIL(&bdrv_states, bs, list);
> }
> bdrv_iostatus_disable(bs);
> + notifier_list_init(&bs->close_notifiers);
> +
> return bs;
> }
>
> +void bdrv_add_close_notifier(BlockDriverState *bs, Notifier *notify)
> +{
> + notifier_list_add(&bs->close_notifiers, notify);
> +}
> +
> BlockDriver *bdrv_find_format(const char *format_name)
> {
> BlockDriver *drv1;
> @@ -1098,12 +1106,13 @@ void bdrv_reopen_abort(BDRVReopenState *reopen_state)
> void bdrv_close(BlockDriverState *bs)
> {
> bdrv_flush(bs);
> - if (bs->drv) {
> - if (bs->job) {
> - block_job_cancel_sync(bs->job);
> - }
> - bdrv_drain_all();
> + if (bs->job) {
> + block_job_cancel_sync(bs->job);
> + }
> + bdrv_drain_all();
Dropping the bs->drv condition in a separate commit gives you a nice
place to explain why it's fine: the commit message. I figure it is, but
it's not 100% obvious.
> + notifier_list_notify(&bs->close_notifiers, bs);
>
> + if (bs->drv) {
> if (bs == bs_snapshots) {
> bs_snapshots = NULL;
> }
[...]
- Re: [Qemu-devel] [PATCH 13/25] vnc: add error propagation to vnc_display_open, (continued)
- [Qemu-devel] [PATCH 10/25] qemu-char: ask and print error information from qemu-sockets, Paolo Bonzini, 2012/10/10
- [Qemu-devel] [PATCH 11/25] nbd: ask and print error information from qemu-sockets, Paolo Bonzini, 2012/10/10
- [Qemu-devel] [PATCH 16/25] qemu-sockets: add error propagation to inet_dgram_opts, Paolo Bonzini, 2012/10/10
- [Qemu-devel] [PATCH 22/25] qemu-sockets: add socket_listen, socket_connect, socket_parse, Paolo Bonzini, 2012/10/10
- [Qemu-devel] [PATCH 23/25] block: add close notifiers, Paolo Bonzini, 2012/10/10
- [Qemu-devel] [PATCH 24/25] qmp: add NBD server commands, Paolo Bonzini, 2012/10/10
- Re: [Qemu-devel] [PATCH 24/25] qmp: add NBD server commands, Markus Armbruster, 2012/10/19
[Qemu-devel] [PATCH 17/25] qemu-sockets: add error propagation to inet_parse, Paolo Bonzini, 2012/10/10
[Qemu-devel] [PATCH 14/25] qemu-sockets: include strerror or gai_strerror output in error messages, Paolo Bonzini, 2012/10/10