diff --git a/lib/cmdlib.py b/lib/cmdlib.py
index e5f474edc2448da0d1931e15f821891e64a98bf8..205405106ad76feeee762d4f30c774a1336f41dd 100644
--- a/lib/cmdlib.py
+++ b/lib/cmdlib.py
@@ -3444,7 +3444,7 @@ class LUCreateInstance(LogicalUnit):
     if self.op.mode == constants.INSTANCE_IMPORT:
       env["INSTANCE_SRC_NODE"] = self.op.src_node
       env["INSTANCE_SRC_PATH"] = self.op.src_path
-      env["INSTANCE_SRC_IMAGE"] = self.src_image
+      env["INSTANCE_SRC_IMAGES"] = self.src_images
 
     env.update(_BuildInstanceHookEnv(name=self.op.instance_name,
       primary_node=self.op.pnode,
@@ -3488,15 +3488,28 @@ class LUCreateInstance(LogicalUnit):
         raise errors.OpPrereqError("Wrong export version %s (wanted %d)" %
                                    (ei_version, constants.EXPORT_VERSION))
 
-      if int(export_info.get(constants.INISECT_INS, 'disk_count')) > 1:
-        raise errors.OpPrereqError("Can't import instance with more than"
-                                   " one data disk")
+      # Check that the new instance doesn't have less disks than the export
+      # TODO: substitute "2" with the actual number of disks requested
+      instance_disks = 2
+      export_disks = export_info.getint(constants.INISECT_INS, 'disk_count')
+      if instance_disks < export_disks:
+        raise errors.OpPrereqError("Not enough disks to import."
+                                   " (instance: %d, export: %d)" %
+                                   (2, export_disks))
 
-      # FIXME: are the old os-es, disk sizes, etc. useful?
       self.op.os_type = export_info.get(constants.INISECT_EXP, 'os')
-      diskimage = os.path.join(src_path, export_info.get(constants.INISECT_INS,
-                                                         'disk0_dump'))
-      self.src_image = diskimage
+      disk_images = []
+      for idx in range(export_disks):
+        option = 'disk%d_dump' % idx
+        if export_info.has_option(constants.INISECT_INS, option):
+          # FIXME: are the old os-es, disk sizes, etc. useful?
+          export_name = export_info.get(constants.INISECT_INS, option)
+          image = os.path.join(src_path, export_name)
+          disk_images.append(image)
+        else:
+          disk_images.append(False)
+
+      self.src_images = disk_images
 
       if self.op.mac == constants.VALUE_AUTO:
         old_name = export_info.get(constants.INISECT_INS, 'name')
@@ -3699,15 +3712,16 @@ class LUCreateInstance(LogicalUnit):
       elif self.op.mode == constants.INSTANCE_IMPORT:
         feedback_fn("* running the instance OS import scripts...")
         src_node = self.op.src_node
-        src_image = self.src_image
+        src_images = self.src_images
         cluster_name = self.cfg.GetClusterName()
         import_result = self.rpc.call_instance_os_import(pnode_name, iobj,
-                                                         src_node, [src_image],
+                                                         src_node, src_images,
                                                          cluster_name)
-        if import_result[0]:
-          raise errors.OpExecError("Could not import disks for instance"
-                                   " %s on node %s" %
-                                   (instance, pnode_name))
+        for idx, result in enumerate(import_result):
+          if not result:
+            self.LogWarning("Could not image %s for on instance %s, disk %d,"
+                            " on node %s" % (src_images[idx], instance, idx,
+                                             pnode_name))
       else:
         # also checked in the prereq part
         raise errors.ProgrammerError("Unknown OS initialization mode '%s'"