05.11.2020 18:14, Alberto Garcia wrote:
On Sat 31 Oct 2020 01:35:01 PM CET, Vladimir Sementsov-Ogievskiy wrote:
-    QLIST_FOREACH_SAFE(c, &top->parents, next_parent, next) {
   /* ... */
+    QLIST_FOREACH_SAFE(c, &base->parents, next_parent, next) {

I also wonder, is top->parents and base->parents guaranteed to be the
same list in this case?

If not you could store the list of top->parents before calling
bdrv_replace_node() and use it afterwards.

     QLIST_FOREACH(c, &top->parents, next_parent) {
         parents = g_slist_prepend(parents, c);
     }

Berto


Hmm... We should not touch other parents of base, which it had prior to 
bdrv_replace_node().

On the other hand, it should be safe to call update_filename for not-updated 
parents..

And we should keep in mind that bdrv_replace_node may replace not all children. 
Still, in this
case we must replace all of them. Seems, we need additional argument for 
bdrv_replace_node()
to fail, if it want's to skip some children replacement.

So, I'm going to resend to add this parameter to bdrv_replace_node() and will 
use your
suggestion to be stricter on what we update, thanks!


--
Best regards,
Vladimir

Reply via email to