diff --git a/lib/cmdlib.py b/lib/cmdlib.py
index c6850ff2f38d8639902b545ecd7c591c69341add..1fbbec5c6f9aac787a83a36dd776088edb6a4bb1 100644
--- a/lib/cmdlib.py
+++ b/lib/cmdlib.py
@@ -2045,6 +2045,19 @@ class LUSetNodeParams(LogicalUnit):
     """
     force = self.force = self.op.force
 
+    if self.op.master_candidate == False:
+      cp_size = self.cfg.GetClusterInfo().candidate_pool_size
+      node_info = self.cfg.GetAllNodesInfo().values()
+      num_candidates = len([node for node in node_info
+                            if node.master_candidate])
+      if num_candidates <= cp_size:
+        msg = ("Not enough master candidates (desired"
+               " %d, new value will be %d)" % (cp_size, num_candidates-1))
+        if force:
+          self.LogWarning(msg)
+        else:
+          raise errors.OpPrereqError(msg)
+
     return
 
   def Exec(self, feedback_fn):