diff --git a/lib/bootstrap.py b/lib/bootstrap.py
index 726f7c4c7adfc0672e1cd4f0680be128e42877bf..440f568a312cc04051272405b32e4faf8ddc7729 100644
--- a/lib/bootstrap.py
+++ b/lib/bootstrap.py
@@ -463,6 +463,11 @@ def InitCluster(cluster_name, mac_prefix, # pylint: disable=R0913, R0914
                                  " %s" % (template,
                                           utils.CommaJoin(unknown_params)))
     utils.ForceDictType(dt_params, constants.DISK_DT_TYPES)
+  try:
+    utils.VerifyDictOptions(diskparams, constants.DISK_DT_DEFAULTS)
+  except errors.OpPrereqError, err:
+    raise errors.OpPrereqError("While verify diskparam options: %s" % err,
+                               errors.ECODE_INVAL)
 
   # set up ssh config and /etc/hosts
   sshline = utils.ReadFile(constants.SSH_HOST_RSA_PUB)
diff --git a/lib/cmdlib.py b/lib/cmdlib.py
index ba6661c3830310ff9929dc25831775a95d724f0e..9716616d4b1a9795c101bd0d4d18e6447d9dfe42 100644
--- a/lib/cmdlib.py
+++ b/lib/cmdlib.py
@@ -3856,6 +3856,11 @@ class LUClusterSetParams(LogicalUnit):
     if self.op.diskparams:
       for dt_params in self.op.diskparams.values():
         utils.ForceDictType(dt_params, constants.DISK_DT_TYPES)
+      try:
+        utils.VerifyDictOptions(self.op.diskparams, constants.DISK_DT_DEFAULTS)
+      except errors.OpPrereqError, err:
+        raise errors.OpPrereqError("While verify diskparams options: %s" % err,
+                                   errors.ECODE_INVAL)
 
   def ExpandNames(self):
     # FIXME: in the future maybe other cluster params won't require checking on
@@ -13607,6 +13612,11 @@ class LUGroupAdd(LogicalUnit):
           utils.ForceDictType(self.op.diskparams[templ],
                               constants.DISK_DT_TYPES)
       self.new_diskparams = self.op.diskparams
+      try:
+        utils.VerifyDictOptions(self.new_diskparams, constants.DISK_DT_DEFAULTS)
+      except errors.OpPrereqError, err:
+        raise errors.OpPrereqError("While verify diskparams options: %s" % err,
+                                   errors.ECODE_INVAL)
     else:
       self.new_diskparams = {}
 
@@ -13968,6 +13978,11 @@ class LUGroupSetParams(LogicalUnit):
       # 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)
+      try:
+        utils.VerifyDictOptions(self.new_diskparams, constants.DISK_DT_DEFAULTS)
+      except errors.OpPrereqError, err:
+        raise errors.OpPrereqError("While verify diskparams options: %s" % err,
+                                   errors.ECODE_INVAL)
 
     if self.op.hv_state:
       self.new_hv_state = _MergeAndVerifyHvState(self.op.hv_state,