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