Hi, By passing the @iothread option to block-export-add, the new export can be moved to the given iothread. This may conflict with an existing parent of the node in question. How this conflict is resolved, depends on @fixed-iothread: If that option is true, the error is fatal and block-export-add fails. If it is false, the error is ignored and the node stays in its original iothread.
However, in the implementation, the ignored error is still in *errp, and so if a second error occurs afterwards and tries to put something into *errp, that will fail an assertion. To really ignore the error, we have to free it and clear *errp (with an ERRP_GUARD()). Patch 1 is the fix, patch 2 a regression test. Max Reitz (2): block/export: Free ignored Error iotests/307: Test iothread conflict for exports block/export/export.c | 4 ++++ tests/qemu-iotests/307 | 15 +++++++++++++++ tests/qemu-iotests/307.out | 8 ++++++++ 3 files changed, 27 insertions(+) -- 2.30.2