diff --git a/lib/cmdlib.py b/lib/cmdlib.py
index be8e70cf98c222b2d01ddaf00eebb804a72891d1..ea79b28df81b40120a5c8e463e0db15325e7fe6e 100644
--- a/lib/cmdlib.py
+++ b/lib/cmdlib.py
@@ -11262,11 +11262,12 @@ class IAllocator(object):
       raise errors.ProgrammerError("Unknown instance '%s' passed to"
                                    " IAllocator" % self.name)
 
-    if instance.disk_template not in constants.DTS_NET_MIRROR:
+    if instance.disk_template not in constants.DTS_MIRRORED:
       raise errors.OpPrereqError("Can't relocate non-mirrored instances",
                                  errors.ECODE_INVAL)
 
-    if len(instance.secondary_nodes) != 1:
+    if instance.disk_template in constants.DTS_NET_MIRROR and \
+        len(instance.secondary_nodes) != 1:
       raise errors.OpPrereqError("Instance has not exactly one secondary node",
                                  errors.ECODE_STATE)