On Mon 08 Apr 2019 08:17:37 PM CEST, Andrey Shinkevich wrote:
>>> + for (iter = bs; iter != bottom; iter = backing_bs(iter)) {
>>> + block_job_add_bdrv(&s->common, "intermediate node",
>>> backing_bs(iter),
>>> + 0, basic_flags, &error_abort);
>>> }
>>
>> This stops when iter == bottom, so bottom is not actually blocked.
>
> The bottom is actually blocked because backing_bs(iter) == bottom is
> passed to the block_job_add_bdrv() with the last iteration of the
> loop.
Right, I hadn't noticed that you are passing backing_bs(iter) to
block_job_add_bdrv() now.
Berto