diff options
author | Kevin Wolf <kwolf@redhat.com> | 2017-02-20 18:10:05 +0100 |
---|---|---|
committer | Kevin Wolf <kwolf@redhat.com> | 2017-02-28 20:47:50 +0100 |
commit | 0db832f42e445398b2815cd740e9cd915e7dd644 (patch) | |
tree | 1467fce4fb54cca14c499e128c69c71122026eb3 /block | |
parent | 6cdbceb12cf955398df48eda94a45ca41e956c78 (diff) |
commit: Add filter-node-name to block-commit
Management tools need to be able to know about every node in the graph
and need a way to address them. Changing the graph structure was okay
because libvirt doesn't really manage the node level yet, but future
libvirt versions need to deal with both new and old version of qemu.
This new option to blockdev-commit allows the client to set a node-name
for the automatically inserted filter driver, and at the same time
serves as a witness for a future libvirt that this version of qemu does
automatically insert a filter driver.
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Acked-by: Fam Zheng <famz@redhat.com>
Reviewed-by: Max Reitz <mreitz@redhat.com>
Diffstat (limited to 'block')
-rw-r--r-- | block/commit.c | 5 | ||||
-rw-r--r-- | block/mirror.c | 3 | ||||
-rw-r--r-- | block/replication.c | 2 |
3 files changed, 6 insertions, 4 deletions
diff --git a/block/commit.c b/block/commit.c index f18026b61f..1e0f5318a4 100644 --- a/block/commit.c +++ b/block/commit.c @@ -257,7 +257,7 @@ static BlockDriver bdrv_commit_top = { void commit_start(const char *job_id, BlockDriverState *bs, BlockDriverState *base, BlockDriverState *top, int64_t speed, BlockdevOnError on_error, const char *backing_file_str, - Error **errp) + const char *filter_node_name, Error **errp) { CommitBlockJob *s; BlockReopenQueue *reopen_queue = NULL; @@ -310,7 +310,8 @@ void commit_start(const char *job_id, BlockDriverState *bs, /* Insert commit_top block node above top, so we can block consistent read * on the backing chain below it */ - commit_top_bs = bdrv_new_open_driver(&bdrv_commit_top, NULL, 0, errp); + commit_top_bs = bdrv_new_open_driver(&bdrv_commit_top, filter_node_name, 0, + errp); if (commit_top_bs == NULL) { goto fail; } diff --git a/block/mirror.c b/block/mirror.c index f6d988df3d..869212daac 100644 --- a/block/mirror.c +++ b/block/mirror.c @@ -1246,6 +1246,7 @@ void mirror_start(const char *job_id, BlockDriverState *bs, void commit_active_start(const char *job_id, BlockDriverState *bs, BlockDriverState *base, int creation_flags, int64_t speed, BlockdevOnError on_error, + const char *filter_node_name, BlockCompletionFunc *cb, void *opaque, Error **errp, bool auto_complete) { @@ -1262,7 +1263,7 @@ void commit_active_start(const char *job_id, BlockDriverState *bs, MIRROR_LEAVE_BACKING_CHAIN, on_error, on_error, true, cb, opaque, &local_err, &commit_active_job_driver, false, base, auto_complete, - NULL); + filter_node_name); if (local_err) { error_propagate(errp, local_err); goto error_restore_flags; diff --git a/block/replication.c b/block/replication.c index 91465cbae9..22f170fd33 100644 --- a/block/replication.c +++ b/block/replication.c @@ -644,7 +644,7 @@ static void replication_stop(ReplicationState *rs, bool failover, Error **errp) s->replication_state = BLOCK_REPLICATION_FAILOVER; commit_active_start(NULL, s->active_disk->bs, s->secondary_disk->bs, BLOCK_JOB_INTERNAL, 0, BLOCKDEV_ON_ERROR_REPORT, - replication_done, bs, errp, true); + NULL, replication_done, bs, errp, true); break; default: aio_context_release(aio_context); |