Hi all, we have already discussed this in the past: calling bdrv_reopen() has the side effect of putting the whole backing chain of the specified BDS in read-only mode.
This made block-commit fail in the past, and we worked around the problem by changing the order in which the images were reopened in commit_start(): 3db2bd5508c86a1605258 commit: reopen overlay_bs before base But I would like to fix bdrv_reopen() properly. From what I can see the situation is that bdrv_backing_options() forces all backing BDSs to be opened without the BDRV_O_RDWR flag, which makes sense when you open an image for the first time, but not so much when you reopen it. One way to deal with this would be by removing the BDRV_O_RDWR flag in bdrv_open_backing_file() or so instead of bdrv_backing_options(), but that doesn't seem to be the best option. The other possibility that I see is modifying bdrv_reopen() instead. I actually don't see why the whole set of children of a BDS needs to be reopened even when none of their options is changing, and why inherit_options() needs to be called for each children (instead of keeping its existing flags). So any advice will be appreciated :) Berto