On 16.11.18 14:58, Alberto Garcia wrote: > On Fri 16 Nov 2018 02:34:25 PM CET, Max Reitz wrote: >> To me that looks like a problem in the general reopen code. >> raw_reopen_prepare() is called and succeeds. Then >> bdrv_reopen_prepare() notices the option wasn't handled and therefore >> fails. bdrv_reopen_multiple() thus doesn't set bs_entry->prepared to >> true, which means raw_reopen_abort() won't be called. >> >> We should always call either BlockDriver.bdrv_reopen_commit() or >> BlockDriver.bdrv_reopen_abort() when BlockDriver.bdrv_reopen_prepare() >> succeeded. > > So you mean getting rid of BlockReopenQueueEntry.prepared altogether? I mean just calling .bdrv_reopen_abort() in bdrv_reopen_prepare() if there was an error after .bdrv_reopen_prepare() succeeded. I have a patch, I'm just trying to think of a useful test... Max