qemu-block
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 1/2] block: make bdrv_drop_intermediate() less wrong


From: Vladimir Sementsov-Ogievskiy
Subject: Re: [PATCH 1/2] block: make bdrv_drop_intermediate() less wrong
Date: Tue, 24 Nov 2020 12:39:52 +0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.5.0

23.11.2020 23:12, Vladimir Sementsov-Ogievskiy wrote:
First, permission update loop tries to do iterations transactionally,
but the whole update is not transactional: nobody roll-back successful
loop iterations when some iteration fails.

Second, in the iteration we have nested permission update:
c->klass->update_filename may point to bdrv_child_cb_update_filename()
which calls bdrv_backing_update_filename(), which may do node reopen to
RW.

Permission update system is not prepared to nested updates, at least it
has intermediate permission-update state stored in BdrvChild
structures: has_backup_perm, backup_perm and backup_shared_perm.

So, let's first do bdrv_replace_node() (which is more transactional
than open-coded update in bdrv_drop_intermediate()) and then call
update_filename() in separate. We still do not rollback changes in case
of update_filename() failure but it's not much worse than pre-patch
behavior.

Signed-off-by: Vladimir Sementsov-Ogievskiy<vsementsov@virtuozzo.com>

this is accidental patch, ignore it

--
Best regards,
Vladimir



reply via email to

[Prev in Thread] Current Thread [Next in Thread]