]> git.proxmox.com Git - mirror_qemu.git/commit
transactions: Invoke clean() after everything else
authorHanna Reitz <hreitz@redhat.com>
Mon, 15 Nov 2021 14:54:03 +0000 (15:54 +0100)
committerHanna Reitz <hreitz@redhat.com>
Tue, 16 Nov 2021 08:43:44 +0000 (09:43 +0100)
commit079bff693bc47bf69fb131f87a03c1689e48ed55
tree91e2725472e54fb78a2b6f2c5831ccca1b885a54
parent562bda8bb41879eeda0bd484dd3d55134579b28e
transactions: Invoke clean() after everything else

Invoke the transaction drivers' .clean() methods only after all
.commit() or .abort() handlers are done.

This makes it easier to have nested transactions where the top-level
transactions pass objects to lower transactions that the latter can
still use throughout their commit/abort phases, while the top-level
transaction keeps a reference that is released in its .clean() method.

(Before this commit, that is also possible, but the top-level
transaction would need to take care to invoke tran_add() before the
lower-level transaction does.  This commit makes the ordering
irrelevant, which is just a bit nicer.)

Signed-off-by: Hanna Reitz <hreitz@redhat.com>
Message-Id: <20211111120829.81329-8-hreitz@redhat.com>
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Message-Id: <20211115145409.176785-8-kwolf@redhat.com>
Signed-off-by: Hanna Reitz <hreitz@redhat.com>
include/qemu/transactions.h
util/transactions.c