Also acquire instance and resource locks in shared mode (see comment). --- lib/cmdlib.py | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/lib/cmdlib.py b/lib/cmdlib.py index 50ddcb5..6330ae1 100644 --- a/lib/cmdlib.py +++ b/lib/cmdlib.py @@ -5309,6 +5309,16 @@ class LUNodeSetParams(LogicalUnit): else: self.needed_locks = {locking.LEVEL_NODE: self.op.node_name} + # Since modifying a node can have severe effects on currently running + # operations the resource lock is at least acquired in shared mode + self.needed_locks[locking.LEVEL_NODE_RES] = \ + self.needed_locks[locking.LEVEL_NODE] + + # Get node and instance locks in shared mode; they are not used for + # anything but read-only access + self.share_locks[locking.LEVEL_NODE_RES] = 1 + self.share_locks[locking.LEVEL_INSTANCE] = 1 + if self.lock_instances: self.needed_locks[locking.LEVEL_INSTANCE] = \ frozenset(self.cfg.GetInstancesInfoByFilter(self._InstanceFilter)) -- 1.7.6