diff --git a/lib/cmdlib.py b/lib/cmdlib.py
index 1544016e24b36d3113d6d792fb7132191e2be9a0..5b065e813f81fc65451d0bac71bdd334738154f1 100644
--- a/lib/cmdlib.py
+++ b/lib/cmdlib.py
@@ -13939,12 +13939,16 @@ class LUGroupSetParams(LogicalUnit):
 
     if self.op.diskparams:
       diskparams = self.group.diskparams
+      uavdp = self._UpdateAndVerifyDiskParams
+      # For each disktemplate subdict update and verify the values
       new_diskparams = dict((dt,
-                             self._UpdateAndVerifyDiskParams(diskparams[dt],
-                                                        self.op.diskparams[dt]))
+                             uavdp(diskparams.get(dt, {}),
+                                   self.op.diskparams[dt]))
                             for dt in constants.DISK_TEMPLATES
                             if dt in self.op.diskparams)
-      self.new_diskparams = objects.FillDiskParams(diskparams, new_diskparams)
+      # As we've all subdicts of diskparams ready, lets merge the actual
+      # dict with all updated subdicts
+      self.new_diskparams = objects.FillDict(diskparams, new_diskparams)
 
     if self.op.hv_state:
       self.new_hv_state = _MergeAndVerifyHvState(self.op.hv_state,