diff --git a/lib/cmdlib.py b/lib/cmdlib.py
index d742fc6ebeed8d034f3cb176064889606c526b73..d3f583c8ff74a38e44254a4642c7246e3cb93413 100644
--- a/lib/cmdlib.py
+++ b/lib/cmdlib.py
@@ -2694,7 +2694,7 @@ class LUCreateInstance(LogicalUnit):
   HTYPE = constants.HTYPE_INSTANCE
   _OP_REQP = ["instance_name", "mem_size", "disk_size", "pnode",
               "disk_template", "swap_size", "mode", "start", "vcpus",
-              "wait_for_sync"]
+              "wait_for_sync", "ip_check"]
 
   def BuildHooksEnv(self):
     """Build hooks env.
@@ -2862,11 +2862,16 @@ class LUCreateInstance(LogicalUnit):
       inst_ip = ip
     self.inst_ip = inst_ip
 
-    command = ["fping", "-q", hostname1.ip]
-    result = utils.RunCmd(command)
-    if not result.failed:
-      raise errors.OpPrereqError("IP %s of instance %s already in use" %
-                                 (hostname1.ip, instance_name))
+    if self.op.start and not self.op.ip_check:
+      raise errors.OpPrereqError("Cannot ignore IP address conflicts when"
+                                 " adding an instance in start mode")
+
+    if self.op.ip_check:
+      command = ["fping", "-q", hostname1.ip]
+      result = utils.RunCmd(command)
+      if not result.failed:
+        raise errors.OpPrereqError("IP address %s of instance %s already"
+                                   " in use" % (hostname1.ip, instance_name))
 
     # bridge verification
     bridge = getattr(self.op, "bridge", None)
diff --git a/lib/opcodes.py b/lib/opcodes.py
index d5b06ada7d93029de77fac0e987239c792f88631..94a68fa245c85baa88e5fbff1fbde1d98d2d0d04 100644
--- a/lib/opcodes.py
+++ b/lib/opcodes.py
@@ -138,7 +138,7 @@ class OpCreateInstance(OpCode):
   __slots__ = ["instance_name", "mem_size", "disk_size", "os_type", "pnode",
                "disk_template", "snode", "swap_size", "mode",
                "vcpus", "ip", "bridge", "src_node", "src_path", "start",
-               "wait_for_sync"]
+               "wait_for_sync", "ip_check"]
 
 
 class OpReinstallInstance(OpCode):
diff --git a/scripts/gnt-backup b/scripts/gnt-backup
index 6a86770df0a88b849a1cf9b2afd939655a8c80a1..c6512e51752736c7566736421280ac5ff6e1bf74 100755
--- a/scripts/gnt-backup
+++ b/scripts/gnt-backup
@@ -131,6 +131,9 @@ import_opts = [
               metavar="<node>"),
   make_option("--src-dir", dest="src_dir", help="Source directory",
               metavar="<dir>"),
+  make_option("--no-ip-check", dest="ip_check", default=True,
+              action="store_false", help="Don't check that the instance's IP"
+              " is alive"),
   ]
 
 commands = {
diff --git a/scripts/gnt-instance b/scripts/gnt-instance
index 1b05aa9864ac86ffc14d7159360623e2356b492d..243a4b39828577974c2316c40a68790e76e71c8f 100755
--- a/scripts/gnt-instance
+++ b/scripts/gnt-instance
@@ -187,7 +187,8 @@ def AddInstance(opts, args):
                                 mode=constants.INSTANCE_CREATE,
                                 os_type=opts.os, pnode=opts.node,
                                 snode=opts.snode, vcpus=opts.vcpus,
-                                ip=opts.ip, bridge=opts.bridge, start=True,
+                                ip=opts.ip, bridge=opts.bridge,
+                                start=opts.start, ip_check=opts.ip_check,
                                 wait_for_sync=opts.wait_for_sync)
   SubmitOpCode(op)
   return 0
@@ -602,7 +603,13 @@ add_opts = [
               metavar="<node>"),
   make_option("-b", "--bridge", dest="bridge",
               help="Bridge to connect this instance to",
-              default=None, metavar="<bridge>")
+              default=None, metavar="<bridge>"),
+  make_option("--no-start", dest="start", default=True,
+              action="store_false", help="Don't start the instance after"
+              " creation"),
+  make_option("--no-ip-check", dest="ip_check", default=True,
+              action="store_false", help="Don't check that the instance's IP"
+              " is alive (only valid with --no-start)"),
   ]
 
 commands = {