From b3dbc7c5e3549c188f13e2565afac003ac9168de Mon Sep 17 00:00:00 2001 From: "Ruben S. Montero" Date: Tue, 30 Mar 2021 17:05:39 +0200 Subject: [PATCH] M #-: Fix race condition cloning VM disks --- src/lcm/LifeCycleStates.cc | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/src/lcm/LifeCycleStates.cc b/src/lcm/LifeCycleStates.cc index 01bd77a87d..063a9c6430 100644 --- a/src/lcm/LifeCycleStates.cc +++ b/src/lcm/LifeCycleStates.cc @@ -2075,21 +2075,21 @@ void LifeCycleManager::trigger_disk_lock_success(int vid) trigger([this, vid] { set ids; - if ( auto vm = vmpool->get_ro(vid) ) - { - if ( vm->get_state() != VirtualMachine::CLONING && - vm->get_state() != VirtualMachine::CLONING_FAILURE ) - { - return; - } + auto vm = vmpool->get(vid); - vm->get_cloning_image_ids(ids); - } - else + if (!vm) { return; } + if ( vm->get_state() != VirtualMachine::CLONING && + vm->get_state() != VirtualMachine::CLONING_FAILURE ) + { + return; + } + + vm->get_cloning_image_ids(ids); + vector> ready; set error; @@ -2120,12 +2120,6 @@ void LifeCycleManager::trigger_disk_lock_success(int vid) } } - auto vm = vmpool->get(vid); - - if (!vm) - { - return; - } for (const auto& rit : ready) {