Am 18.01.2021 um 11:22 hat Vladimir Sementsov-Ogievskiy geschrieben: > 15.01.2021 16:02, Alberto Garcia wrote: > > Hi, > > > > during the past months we talked about making x-blockdev-reopen stable > > API, and one of the missing things was having support for changing > > bs->file. See here for the discusssion (I can't find the message from > > Kashyap that started the thread in the web archives): > > > > https://lists.gnu.org/archive/html/qemu-block/2020-10/msg00922.html > > > > I was testing this and one of the problems that I found was that > > removing a filter node using this command is tricky because of the > > permission system, see here for details: > > > > https://lists.gnu.org/archive/html/qemu-block/2020-12/msg00092.html > > > > The good news is that Vladimir posted a set of patches that changes > > the way that permissions are updated on reopen: > > > > https://lists.gnu.org/archive/html/qemu-block/2020-11/msg00745.html > > > > I was testing if this would be useful to solve the problem that I > > mentioned earlier and it seems to be the case so I wrote a patch to > > add support for changing bs->file, along with a couple of test cases. > > > > This is still an RFC but you can see the idea. > > Good idea and I glad to see that my patches help:) > > Hmm, still, removing a filter which want to unshare WRITE even when > doesn't have any parents will be a problem anyway, so we'll need a new > command to drop filter with a logic like in bdrv_drop_filter in my > series. > > Or, we can introduce multiple reopen.. So that x-blockdev-reopen will > take a list of BlockdevOptions, and do all modifications in one > transaction. Than we'll be able to drop filter by transactional update > of top node child and removing filter child link.
Internally, we already have reopen queues anyway, so it would make sense to me to expose them externally and take a list of BlockdevOptions. This way we should be able to do even complex changes of the graph where adding some edges requires the removal of other edges in a single atomic operation. Kevin