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