On Wed 10 Apr 2019 07:03:50 PM CEST, Max Reitz wrote:
>> +        # hd0 has no backing file: we can omit the 'backing' option
>> +        self.reopen(opts)
>
> [...]
>
>> +        # Detach hd2 from hd0.
>> +        self.reopen(opts, {'backing': None})
>> +        self.reopen(opts, {}, "backing is missing for 'hd0'")
>
> I don’t understand the second test.  hd0 has no default backing file
> and it currently has no backing child attached to it.  Why would this
> call fail now?

I think there's a bug.

Calling x-blockdev-reopen without 'backing' should only fail if

 a) the image has a backing file attached to it.
    In this case it doesn't: we just detached it in the previous line.

 b) there's a default backing file written on the image header.
    In this case there isn't (hd0 is created without one in setUp()).

So it should not fail. I think the bug is that the test for condition
(b) in bdrv_reopen_prepare() that returns "backing is missing..." is
using backing_file but it should use (correct me if I'm wrong)
auto_backing_file.

Changing that and replacing the test line with self.reopen(opts) fixes
it for me.

Not directly related to this, but should bdrv_backing_detach() also
clear backing_file ?

Berto


Reply via email to