From: Andrey Shinkevich <andrey.shinkevich@virtuozzo.com>
To: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>,
qemu-block@nongnu.org
Cc: kwolf@redhat.com, armbru@redhat.com, qemu-devel@nongnu.org,
den@openvz.org, mreitz@redhat.com, jsnow@redhat.com
Subject: Re: [PATCH v6 3/4] qapi: add filter-node-name to block-stream
Date: Sun, 23 Aug 2020 22:33:48 +0300 [thread overview]
Message-ID: <7c191d0c-aee9-4143-871e-7f744517c7b5@virtuozzo.com> (raw)
In-Reply-To: <d49840c1-cdf2-37ba-4ca3-e81dfb039958@virtuozzo.com>
On 19.08.2020 13:29, Vladimir Sementsov-Ogievskiy wrote:
> 19.08.2020 00:24, Andrey Shinkevich wrote:
>> Provide the possibility to pass the 'filter-node-name' parameter to the
>> block-stream job as it is done for the commit block job. That will be
>> needed for further iotests implementations.
>
> and for users as well. I think, the last sentence may be dropped.
>
>>
>> Signed-off-by: Andrey Shinkevich <andrey.shinkevich@virtuozzo.com>
>> ---
>> block/monitor/block-hmp-cmds.c | 4 ++--
>> block/stream.c | 4 +++-
>> blockdev.c | 8 +++++++-
>> include/block/block_int.h | 7 ++++++-
>> qapi/block-core.json | 6 ++++++
>> 5 files changed, 24 insertions(+), 5 deletions(-)
>>
>> diff --git a/block/monitor/block-hmp-cmds.c
>> b/block/monitor/block-hmp-cmds.c
>> index 4d3db5e..4e66775 100644
>> --- a/block/monitor/block-hmp-cmds.c
>> +++ b/block/monitor/block-hmp-cmds.c
>> @@ -507,8 +507,8 @@ void hmp_block_stream(Monitor *mon, const QDict
>> *qdict)
>> qmp_block_stream(true, device, device, base != NULL, base,
>> false, NULL,
>> false, NULL, qdict_haskey(qdict, "speed"),
>> speed, true,
>> - BLOCKDEV_ON_ERROR_REPORT, false, false, false,
>> false,
>> - &error);
>> + BLOCKDEV_ON_ERROR_REPORT, false, NULL, false,
>> false, false,
>> + false, &error);
>> hmp_handle_error(mon, error);
>> }
>> diff --git a/block/stream.c b/block/stream.c
>> index b9c1141..8bf6b6d 100644
>> --- a/block/stream.c
>> +++ b/block/stream.c
>> @@ -221,7 +221,9 @@ static const BlockJobDriver stream_job_driver = {
>> void stream_start(const char *job_id, BlockDriverState *bs,
>> BlockDriverState *base, const char
>> *backing_file_str,
>> int creation_flags, int64_t speed,
>> - BlockdevOnError on_error, Error **errp)
>> + BlockdevOnError on_error,
>> + const char *filter_node_name,
>> + Error **errp)
>> {
>> StreamBlockJob *s;
>> BlockDriverState *iter;
>> diff --git a/blockdev.c b/blockdev.c
>> index 237fffb..800ecb3 100644
>> --- a/blockdev.c
>> +++ b/blockdev.c
>> @@ -2476,6 +2476,7 @@ void qmp_block_stream(bool has_job_id, const
>> char *job_id, const char *device,
>> bool has_backing_file, const char *backing_file,
>> bool has_speed, int64_t speed,
>> bool has_on_error, BlockdevOnError on_error,
>> + bool has_filter_node_name, const char
>> *filter_node_name,
>> bool has_auto_finalize, bool auto_finalize,
>> bool has_auto_dismiss, bool auto_dismiss,
>> Error **errp)
>> @@ -2491,6 +2492,10 @@ void qmp_block_stream(bool has_job_id, const
>> char *job_id, const char *device,
>> on_error = BLOCKDEV_ON_ERROR_REPORT;
>> }
>> + if (!has_filter_node_name) {
>> + filter_node_name = NULL;
>> + }
>
> this works automatically, you don't need to initialize it by hand
In the current impementation of QEMU, it may look like an excess. I will
remove it. But the qmp_block_commit() has that check.
Andrey
>
>> +
>> bs = bdrv_lookup_bs(device, device, errp);
>> if (!bs) {
>> return;
>> @@ -2558,7 +2563,8 @@ void qmp_block_stream(bool has_job_id, const
>> char *job_id, const char *device,
>> }
>> stream_start(has_job_id ? job_id : NULL, bs, base_bs, base_name,
>> - job_flags, has_speed ? speed : 0, on_error,
>> &local_err);
>> + job_flags, has_speed ? speed : 0, on_error,
>> + filter_node_name, &local_err);
>> if (local_err) {
>> error_propagate(errp, local_err);
>> goto out;
>> diff --git a/include/block/block_int.h b/include/block/block_int.h
>> index 465a601..3efde33 100644
>> --- a/include/block/block_int.h
>> +++ b/include/block/block_int.h
>> @@ -1122,6 +1122,9 @@ int is_windows_drive(const char *filename);
>> * See @BlockJobCreateFlags
>> * @speed: The maximum speed, in bytes per second, or 0 for unlimited.
>> * @on_error: The action to take upon error.
>> + * @filter_node_name: The node name that should be assigned to the
>> filter
>> + * driver that the commit job inserts into the graph above @bs. NULL
>> means
>> + * that a node name should be autogenerated.
>> * @errp: Error object.
>> *
>> * Start a streaming operation on @bs. Clusters that are unallocated
>> @@ -1134,7 +1137,9 @@ int is_windows_drive(const char *filename);
>> void stream_start(const char *job_id, BlockDriverState *bs,
>> BlockDriverState *base, const char
>> *backing_file_str,
>> int creation_flags, int64_t speed,
>> - BlockdevOnError on_error, Error **errp);
>> + BlockdevOnError on_error,
>> + const char *filter_node_name,
>> + Error **errp);
>> /**
>> * commit_start:
>> diff --git a/qapi/block-core.json b/qapi/block-core.json
>> index 0b8ccd3..1db6ce1 100644
>> --- a/qapi/block-core.json
>> +++ b/qapi/block-core.json
>> @@ -2524,6 +2524,11 @@
>> # 'stop' and 'enospc' can only be used if the block device
>> # supports io-status (see BlockInfo). Since 1.3.
>> #
>> +# @filter-node-name: the node name that should be assigned to the
>> +# filter driver that the stream job inserts into
>> the graph
>> +# above @device. If this option is not given, a
>> node name is
>> +# autogenerated. (Since: 5.1)
>> +#
>> # @auto-finalize: When false, this job will wait in a PENDING state
>> after it has
>> # finished its work, waiting for
>> @block-job-finalize before
>> # making any block graph changes.
>> @@ -2554,6 +2559,7 @@
>> 'data': { '*job-id': 'str', 'device': 'str', '*base': 'str',
>> '*base-node': 'str', '*backing-file': 'str', '*speed':
>> 'int',
>> '*on-error': 'BlockdevOnError',
>> + '*filter-node-name': 'str',
>> '*auto-finalize': 'bool', '*auto-dismiss': 'bool' } }
>> ##
>>
>
>
> With extra "filter_node_name = NULL" dropped:
> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
>
next prev parent reply other threads:[~2020-08-23 19:34 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-18 21:24 [PATCH v6 0/4] Apply COR-filter to the block-stream permanently Andrey Shinkevich
2020-08-18 21:24 ` [PATCH v6 1/4] copy-on-read: Support preadv/pwritev_part functions Andrey Shinkevich
2020-08-19 9:53 ` Vladimir Sementsov-Ogievskiy
2020-08-18 21:24 ` [PATCH v6 2/4] copy-on-read: add filter append/drop functions Andrey Shinkevich
2020-08-19 10:21 ` Vladimir Sementsov-Ogievskiy
2020-08-23 19:35 ` Andrey Shinkevich
2020-08-24 4:59 ` Andrey Shinkevich
2020-08-18 21:24 ` [PATCH v6 3/4] qapi: add filter-node-name to block-stream Andrey Shinkevich
2020-08-19 10:29 ` Vladimir Sementsov-Ogievskiy
2020-08-23 19:33 ` Andrey Shinkevich [this message]
2020-08-24 13:21 ` Markus Armbruster
2020-08-18 21:24 ` [PATCH v6 4/4] block: apply COR-filter to block-stream jobs Andrey Shinkevich
2020-08-19 10:46 ` Vladimir Sementsov-Ogievskiy
2020-08-23 19:28 ` Andrey Shinkevich
2020-08-24 8:20 ` Vladimir Sementsov-Ogievskiy
2020-08-24 8:49 ` Andrey Shinkevich
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=7c191d0c-aee9-4143-871e-7f744517c7b5@virtuozzo.com \
--to=andrey.shinkevich@virtuozzo.com \
--cc=armbru@redhat.com \
--cc=den@openvz.org \
--cc=jsnow@redhat.com \
--cc=kwolf@redhat.com \
--cc=mreitz@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=vsementsov@virtuozzo.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).