qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
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>
>


  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).