diff --git a/lib/cmdlib.py b/lib/cmdlib.py
index 12419376b24a8f63122ae6ed8a9f5598769006d4..9f90a3b4dc068bbf2b1b75d6f72c7104257c3383 100644
--- a/lib/cmdlib.py
+++ b/lib/cmdlib.py
@@ -2059,6 +2059,19 @@ class LUFailoverInstance(LogicalUnit):
       raise errors.OpPrereqError, ("Instance '%s' not known" %
                                    self.op.instance_name)
 
+    # check memory requirements on the secondary node
+    target_node = instance.secondary_nodes[0]
+    nodeinfo = rpc.call_node_info([target_node], self.cfg.GetVGName())
+    info = nodeinfo.get(target_node, None)
+    if not info:
+      raise errors.OpPrereqError, ("Cannot get current information"
+                                   " from node '%s'" % nodeinfo)
+    if instance.memory > info['memory_free']:
+      raise errors.OpPrereqError, ("Not enough memory on target node %s."
+                                   " %d MB available, %d MB required" %
+                                   (target_node, info['memory_free'],
+                                    instance.memory))
+
     # check bridge existance
     brlist = [nic.bridge for nic in instance.nics]
     if not rpc.call_bridges_exist(instance.primary_node, brlist):