On Mon 11 Feb 2019 05:58:05 PM CET, Vladimir Sementsov-Ogievskiy wrote:
>>> The problem is in the concept of "base" node. The code written in
>>> manner that base is not changed during block job. However, job don't
>>> own base and there is no guarantee that it will not change during
>>> the job.
>> 
>> But if that's the case then we have a problem already, because 'base'
>> is a member of StreamBlockJob and is used in the existing
>> stream_run() code.
>
> I think it should be possible to reproduce, using block-commit (which
> already has filter) with block-stream in parallel, we'll try.

It's not possible to run block-stream and block-commit in parallel on
the same nodes. See iotest 030 for a few examples.

So unless there's a bug it should be safe.

>> So if there's a way to make 'base' disappear during the job (how?)
>> then we could protect it with block_job_add_bdrv().
>
> I'm not sure this is correct. What is the reason for stream to own
> base? It's not really interested in it.

stream does not need to write or modify base, but it does need to keep a
reference to it in order to now where to stop copying data.

As I said earlier base is a member of StreamBlockJob, so it should not
disappear during the job.

Berto

Reply via email to