[pve-devel] applied: [PATCH storage] remove lock from is_base_and_used check
t.lamprecht at proxmox.com
Sat Feb 6 14:48:38 CET 2021
On 15.01.21 11:58, Fabian Ebner wrote:
> and squash the __no_lock-variant into it.
> This lock is not broad enough, because for a caller that plans to do or not do
> some storage operation based on the result of the check, the following could
> 1. volume_is_base_and_used is called and the result is used to enter a branch
> 2. situation on the storage changes in the meantime
> 3. the branch chosen in 1. might not be the one that should be taken anymore
> This means that callers are responsible for locking, and luckily the existing
> callers do use their own locks already:
> 1. vdisk_free used the __no_lock-variant with a broader lock also covering
> the free operation.
> 2. vdisk_clone is not a caller, but is relevant and it does lock the storage
> 2. the calls during VM migration and VM destruction happen in the context of a
> locked VM config. Because the clone operation also locks the VM config, it
> cannot happen that a linked clone is created while the template VM is
> migrated away or destroyed or vice versa. And even if that were the case,
> the base disk would not be freed, because of what vdisk_free/vdisk_clone do.
> Signed-off-by: Fabian Ebner <f.ebner at proxmox.com>
> PVE/Storage.pm | 28 ++++++++++------------------
> 1 file changed, 10 insertions(+), 18 deletions(-)
More information about the pve-devel