aboutsummaryrefslogtreecommitdiff
path: root/block/trace-events
diff options
context:
space:
mode:
authorStefan Hajnoczi <stefanha@redhat.com>2018-03-06 20:48:18 +0000
committerEric Blake <eblake@redhat.com>2018-03-13 15:38:55 -0500
commitd03654eacdf35f436fbe78ca46cea215d5165ab5 (patch)
tree0641a1398fb1b43f9a2e54fbbef07d6080d56568 /block/trace-events
parent65529782f8fec531fd114cc0f58399e88202153c (diff)
downloadqemu-d03654eacdf35f436fbe78ca46cea215d5165ab5.zip
qemu-d03654eacdf35f436fbe78ca46cea215d5165ab5.tar.gz
qemu-d03654eacdf35f436fbe78ca46cea215d5165ab5.tar.bz2
block: let blk_add/remove_aio_context_notifier() tolerate BDS changes
Commit 2019ba0a0197 ("block: Add AioContextNotifier functions to BB") added blk_add/remove_aio_context_notifier() and implemented them by passing through the bdrv_*() equivalent. This doesn't work across bdrv_append(), which detaches child->bs and re-attaches it to a new BlockDriverState. When blk_remove_aio_context_notifier() is called we will access the new BDS instead of the one where the notifier was added! >From the point of view of the blk_*() API user, changes to the root BDS should be transparent. This patch maintains a list of AioContext notifiers in BlockBackend and adds/removes them from the BlockDriverState as needed. Reported-by: Stefano Panella <spanella@gmail.com> Cc: Max Reitz <mreitz@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Message-Id: <20180306204819.11266-2-stefanha@redhat.com> Reviewed-by: Max Reitz <mreitz@redhat.com> Signed-off-by: Eric Blake <eblake@redhat.com>
Diffstat (limited to 'block/trace-events')
-rw-r--r--block/trace-events2
1 files changed, 2 insertions, 0 deletions
diff --git a/block/trace-events b/block/trace-events
index 02dd80f..7493d52 100644
--- a/block/trace-events
+++ b/block/trace-events
@@ -7,6 +7,8 @@ bdrv_lock_medium(void *bs, bool locked) "bs %p locked %d"
# block/block-backend.c
blk_co_preadv(void *blk, void *bs, int64_t offset, unsigned int bytes, int flags) "blk %p bs %p offset %"PRId64" bytes %u flags 0x%x"
blk_co_pwritev(void *blk, void *bs, int64_t offset, unsigned int bytes, int flags) "blk %p bs %p offset %"PRId64" bytes %u flags 0x%x"
+blk_root_attach(void *child, void *blk, void *bs) "child %p blk %p bs %p"
+blk_root_detach(void *child, void *blk, void *bs) "child %p blk %p bs %p"
# block/io.c
bdrv_co_preadv(void *bs, int64_t offset, int64_t nbytes, unsigned int flags) "bs %p offset %"PRId64" nbytes %"PRId64" flags 0x%x"