mbox series

[v7,0/3] block/stream: get rid of the base

Message ID 1559152576-281803-1-git-send-email-andrey.shinkevich@virtuozzo.com (mailing list archive)
Headers show
Series block/stream: get rid of the base | expand

Message

Andrey Shinkevich May 29, 2019, 5:56 p.m. UTC
This series introduces a bottom intermediate node that eliminates the
dependency on the base that may change while stream job is running.
It happens when stream/commit parallel jobs are running on the same
backing chain. The base node of the stream job may be a top node of
the parallel commit job and can change before the stream job is
completed. We avoid that dependency by introducing the bottom node.

v7: [resend by Andrey]
  01: assert(intermediate) was inserted before the call to
      bdrv_is_allocated() in the intermediate node loop of the
      bdrv_is_allocated_above() as suggested by Max.
  02: The change of the intermediate node loop in the stream_start() was
      rolled back to its original design and the reassignment of the base
      node pointer was added as Vladimir and Max suggested. The relevant
      comment was amended.

v6: [resend by Vladimir]
  01: improve comment in block/io.c, suggested by Alberto

v5: [resend by Vladimir]
  01: use comment wording in block/io.c suggested by Alberto

v4:
trace_stream_start reverted to the base.
bdrv_is_allocated_above_inclusive() deleted and the new parameter
'bool include_base' was added to the bdrv_is_allocated_above().

Andrey Shinkevich (3):
  block: include base when checking image chain for block allocation
  block/stream: refactor stream_run: drop goto
  block/stream: introduce a bottom node

 block/commit.c         |  2 +-
 block/io.c             | 21 +++++++++++++------
 block/mirror.c         |  2 +-
 block/replication.c    |  2 +-
 block/stream.c         | 56 ++++++++++++++++++++++++--------------------------
 include/block/block.h  |  3 ++-
 tests/qemu-iotests/245 |  4 ++--
 7 files changed, 49 insertions(+), 41 deletions(-)

Comments

Max Reitz June 19, 2019, 7:29 p.m. UTC | #1
On 29.05.19 19:56, Andrey Shinkevich wrote:
> This series introduces a bottom intermediate node that eliminates the
> dependency on the base that may change while stream job is running.
> It happens when stream/commit parallel jobs are running on the same
> backing chain. The base node of the stream job may be a top node of
> the parallel commit job and can change before the stream job is
> completed. We avoid that dependency by introducing the bottom node.
> 
> v7: [resend by Andrey]
>   01: assert(intermediate) was inserted before the call to
>       bdrv_is_allocated() in the intermediate node loop of the
>       bdrv_is_allocated_above() as suggested by Max.
>   02: The change of the intermediate node loop in the stream_start() was
>       rolled back to its original design and the reassignment of the base
>       node pointer was added as Vladimir and Max suggested. The relevant
>       comment was amended.
> 
> v6: [resend by Vladimir]
>   01: improve comment in block/io.c, suggested by Alberto
> 
> v5: [resend by Vladimir]
>   01: use comment wording in block/io.c suggested by Alberto
> 
> v4:
> trace_stream_start reverted to the base.
> bdrv_is_allocated_above_inclusive() deleted and the new parameter
> 'bool include_base' was added to the bdrv_is_allocated_above().
> 
> Andrey Shinkevich (3):
>   block: include base when checking image chain for block allocation
>   block/stream: refactor stream_run: drop goto
>   block/stream: introduce a bottom node
> 
>  block/commit.c         |  2 +-
>  block/io.c             | 21 +++++++++++++------
>  block/mirror.c         |  2 +-
>  block/replication.c    |  2 +-
>  block/stream.c         | 56 ++++++++++++++++++++++++--------------------------
>  include/block/block.h  |  3 ++-
>  tests/qemu-iotests/245 |  4 ++--
>  7 files changed, 49 insertions(+), 41 deletions(-)

Reviewed-by: Max Reitz <mreitz@redhat.com>

Just needs some simple changes to patch 1 to rebase it on 863cc78f1b3
and c8bb23cbdbe.

Max
Andrey Shinkevich June 25, 2019, 2:40 p.m. UTC | #2
On 19/06/2019 22:29, Max Reitz wrote:
> On 29.05.19 19:56, Andrey Shinkevich wrote:
>> This series introduces a bottom intermediate node that eliminates the
>> dependency on the base that may change while stream job is running.
>> It happens when stream/commit parallel jobs are running on the same
>> backing chain. The base node of the stream job may be a top node of
>> the parallel commit job and can change before the stream job is
>> completed. We avoid that dependency by introducing the bottom node.
>>
>> v7: [resend by Andrey]
>>    01: assert(intermediate) was inserted before the call to
>>        bdrv_is_allocated() in the intermediate node loop of the
>>        bdrv_is_allocated_above() as suggested by Max.
>>    02: The change of the intermediate node loop in the stream_start() was
>>        rolled back to its original design and the reassignment of the base
>>        node pointer was added as Vladimir and Max suggested. The relevant
>>        comment was amended.
>>
>> v6: [resend by Vladimir]
>>    01: improve comment in block/io.c, suggested by Alberto
>>
>> v5: [resend by Vladimir]
>>    01: use comment wording in block/io.c suggested by Alberto
>>
>> v4:
>> trace_stream_start reverted to the base.
>> bdrv_is_allocated_above_inclusive() deleted and the new parameter
>> 'bool include_base' was added to the bdrv_is_allocated_above().
>>
>> Andrey Shinkevich (3):
>>    block: include base when checking image chain for block allocation
>>    block/stream: refactor stream_run: drop goto
>>    block/stream: introduce a bottom node
>>
>>   block/commit.c         |  2 +-
>>   block/io.c             | 21 +++++++++++++------
>>   block/mirror.c         |  2 +-
>>   block/replication.c    |  2 +-
>>   block/stream.c         | 56 ++++++++++++++++++++++++--------------------------
>>   include/block/block.h  |  3 ++-
>>   tests/qemu-iotests/245 |  4 ++--
>>   7 files changed, 49 insertions(+), 41 deletions(-)
> 
> Reviewed-by: Max Reitz <mreitz@redhat.com>
> 
> Just needs some simple changes to patch 1 to rebase it on 863cc78f1b3
> and c8bb23cbdbe.
> 
> Max
> 

Please let us know who would take this series for pull request?

Andrey
Max Reitz June 25, 2019, 3:03 p.m. UTC | #3
On 25.06.19 16:40, Andrey Shinkevich wrote:
> 
> 
> On 19/06/2019 22:29, Max Reitz wrote:
>> On 29.05.19 19:56, Andrey Shinkevich wrote:
>>> This series introduces a bottom intermediate node that eliminates the
>>> dependency on the base that may change while stream job is running.
>>> It happens when stream/commit parallel jobs are running on the same
>>> backing chain. The base node of the stream job may be a top node of
>>> the parallel commit job and can change before the stream job is
>>> completed. We avoid that dependency by introducing the bottom node.
>>>
>>> v7: [resend by Andrey]
>>>    01: assert(intermediate) was inserted before the call to
>>>        bdrv_is_allocated() in the intermediate node loop of the
>>>        bdrv_is_allocated_above() as suggested by Max.
>>>    02: The change of the intermediate node loop in the stream_start() was
>>>        rolled back to its original design and the reassignment of the base
>>>        node pointer was added as Vladimir and Max suggested. The relevant
>>>        comment was amended.
>>>
>>> v6: [resend by Vladimir]
>>>    01: improve comment in block/io.c, suggested by Alberto
>>>
>>> v5: [resend by Vladimir]
>>>    01: use comment wording in block/io.c suggested by Alberto
>>>
>>> v4:
>>> trace_stream_start reverted to the base.
>>> bdrv_is_allocated_above_inclusive() deleted and the new parameter
>>> 'bool include_base' was added to the bdrv_is_allocated_above().
>>>
>>> Andrey Shinkevich (3):
>>>    block: include base when checking image chain for block allocation
>>>    block/stream: refactor stream_run: drop goto
>>>    block/stream: introduce a bottom node
>>>
>>>   block/commit.c         |  2 +-
>>>   block/io.c             | 21 +++++++++++++------
>>>   block/mirror.c         |  2 +-
>>>   block/replication.c    |  2 +-
>>>   block/stream.c         | 56 ++++++++++++++++++++++++--------------------------
>>>   include/block/block.h  |  3 ++-
>>>   tests/qemu-iotests/245 |  4 ++--
>>>   7 files changed, 49 insertions(+), 41 deletions(-)
>>
>> Reviewed-by: Max Reitz <mreitz@redhat.com>
>>
>> Just needs some simple changes to patch 1 to rebase it on 863cc78f1b3
>> and c8bb23cbdbe.
>>
>> Max
>>
> 
> Please let us know who would take this series for pull request?

Nothing, I was just waiting for my current pull request (lingering from
last week due to a build failure because of one of the patches) to be
processed.

I suppose I won’t wait longer and just take this series now and deal
with the fallout later if there’s something else in my last week’s pull
request that needs fixing...

So: Thanks, applied to my block branch:

https://git.xanclic.moe/XanClic/qemu/commits/branch/block

Max
Andrey Shinkevich June 25, 2019, 3:07 p.m. UTC | #4
On 25/06/2019 18:03, Max Reitz wrote:
> On 25.06.19 16:40, Andrey Shinkevich wrote:
>>
>>
>> On 19/06/2019 22:29, Max Reitz wrote:
>>> On 29.05.19 19:56, Andrey Shinkevich wrote:
>>>> This series introduces a bottom intermediate node that eliminates the
>>>> dependency on the base that may change while stream job is running.
>>>> It happens when stream/commit parallel jobs are running on the same
>>>> backing chain. The base node of the stream job may be a top node of
>>>> the parallel commit job and can change before the stream job is
>>>> completed. We avoid that dependency by introducing the bottom node.
>>>>
>>>> v7: [resend by Andrey]
>>>>     01: assert(intermediate) was inserted before the call to
>>>>         bdrv_is_allocated() in the intermediate node loop of the
>>>>         bdrv_is_allocated_above() as suggested by Max.
>>>>     02: The change of the intermediate node loop in the stream_start() was
>>>>         rolled back to its original design and the reassignment of the base
>>>>         node pointer was added as Vladimir and Max suggested. The relevant
>>>>         comment was amended.
>>>>
>>>> v6: [resend by Vladimir]
>>>>     01: improve comment in block/io.c, suggested by Alberto
>>>>
>>>> v5: [resend by Vladimir]
>>>>     01: use comment wording in block/io.c suggested by Alberto
>>>>
>>>> v4:
>>>> trace_stream_start reverted to the base.
>>>> bdrv_is_allocated_above_inclusive() deleted and the new parameter
>>>> 'bool include_base' was added to the bdrv_is_allocated_above().
>>>>
>>>> Andrey Shinkevich (3):
>>>>     block: include base when checking image chain for block allocation
>>>>     block/stream: refactor stream_run: drop goto
>>>>     block/stream: introduce a bottom node
>>>>
>>>>    block/commit.c         |  2 +-
>>>>    block/io.c             | 21 +++++++++++++------
>>>>    block/mirror.c         |  2 +-
>>>>    block/replication.c    |  2 +-
>>>>    block/stream.c         | 56 ++++++++++++++++++++++++--------------------------
>>>>    include/block/block.h  |  3 ++-
>>>>    tests/qemu-iotests/245 |  4 ++--
>>>>    7 files changed, 49 insertions(+), 41 deletions(-)
>>>
>>> Reviewed-by: Max Reitz <mreitz@redhat.com>
>>>
>>> Just needs some simple changes to patch 1 to rebase it on 863cc78f1b3
>>> and c8bb23cbdbe.
>>>
>>> Max
>>>
>>
>> Please let us know who would take this series for pull request?
> 
> Nothing, I was just waiting for my current pull request (lingering from
> last week due to a build failure because of one of the patches) to be
> processed.
> 
> I suppose I won’t wait longer and just take this series now and deal
> with the fallout later if there’s something else in my last week’s pull
> request that needs fixing...
> 
> So: Thanks, applied to my block branch:
> 
> https://git.xanclic.moe/XanClic/qemu/commits/branch/block
> 
> Max
> 

Thanks a lot, Max.

Andrey