diff --git a/lib/cmdlib.py b/lib/cmdlib.py
index 846ef0e2f5c45ae408a31830fc83038268718754..e57f00adab4b776e0e22f10266fe717ff035be5a 100644
--- a/lib/cmdlib.py
+++ b/lib/cmdlib.py
@@ -2592,12 +2592,16 @@ class LUActivateInstanceDisks(NoHooksLU):
     assert self.instance is not None, \
       "Cannot retrieve locked instance %s" % self.op.instance_name
     _CheckNodeOnline(self, self.instance.primary_node)
+    if not hasattr(self.op, "ignore_size"):
+      self.op.ignore_size = False
 
   def Exec(self, feedback_fn):
     """Activate the disks.
 
     """
-    disks_ok, disks_info = _AssembleInstanceDisks(self, self.instance)
+    disks_ok, disks_info = \
+              _AssembleInstanceDisks(self, self.instance,
+                                     ignore_size=self.op.ignore_size)
     if not disks_ok:
       raise errors.OpExecError("Cannot activate block devices")
 
diff --git a/lib/opcodes.py b/lib/opcodes.py
index 535db910d0b38fba6c055dc24c0ed0ea1f943117..e19ad6edd2fc9d218f974b31e6e24faab5d49f0f 100644
--- a/lib/opcodes.py
+++ b/lib/opcodes.py
@@ -438,7 +438,7 @@ class OpActivateInstanceDisks(OpCode):
   """Activate an instance's disks."""
   OP_ID = "OP_INSTANCE_ACTIVATE_DISKS"
   OP_DSC_FIELD = "instance_name"
-  __slots__ = ["instance_name"]
+  __slots__ = ["instance_name", "ignore_size"]
 
 
 class OpDeactivateInstanceDisks(OpCode):
diff --git a/man/gnt-instance.sgml b/man/gnt-instance.sgml
index ff8b52e62aa1ec01fff4fb160229104031e9d203..d17a4a6b29e7ef91939ce6bd2a51d9f49f088510 100644
--- a/man/gnt-instance.sgml
+++ b/man/gnt-instance.sgml
@@ -1657,6 +1657,7 @@ instance5: 11225
         <cmdsynopsis>
           <command>activate-disks</command>
           <arg>--submit</arg>
+          <arg>--ignore-size</arg>
           <arg choice="req"><replaceable>instance</replaceable></arg>
         </cmdsynopsis>
         <para>
@@ -1685,6 +1686,16 @@ node1.example.com:disk/1:/dev/drbd1
           <command>gnt-job info</command>.
         </para>
 
+        <para>
+          The <option>--ignore-size</option> option can be used to
+          activate disks ignoring the currently configured size in
+          Ganeti. This can be used in cases where the configuration
+          has gotten out of sync with the real-world (e.g. after a
+          partially-failed grow-disk operation or due to rounding in
+          LVM devices). This should not be used in normal cases, but
+          only when activate-disks fails without it.
+        </para>
+
         <para>
           Note that it is safe to run this command while the instance
           is already running.
diff --git a/scripts/gnt-instance b/scripts/gnt-instance
index e7990baf6179eef39e645292976913efeb3410db..e16fed7b6804626ed5a646a01109402f8cb795c3 100755
--- a/scripts/gnt-instance
+++ b/scripts/gnt-instance
@@ -609,7 +609,8 @@ def ActivateDisks(opts, args):
 
   """
   instance_name = args[0]
-  op = opcodes.OpActivateInstanceDisks(instance_name=instance_name)
+  op = opcodes.OpActivateInstanceDisks(instance_name=instance_name,
+                                       ignore_size=opts.ignore_size)
   disks_info = SubmitOrSend(op, opts)
   for host, iname, nname in disks_info:
     ToStdout("%s:%s:%s", host, iname, nname)
@@ -1482,7 +1483,14 @@ commands = {
                SUBMIT_OPT,
                ],
             "<instance>", "Reboots an instance"),
-  'activate-disks': (ActivateDisks, ARGS_ONE, [DEBUG_OPT, SUBMIT_OPT],
+  'activate-disks': (ActivateDisks, ARGS_ONE,
+                     [DEBUG_OPT, SUBMIT_OPT,
+                      make_option("--ignore-size", dest="ignore_size",
+                                  default=False, action="store_true",
+                                  help="Ignore current recorded size"
+                                  " (useful for forcing activation when"
+                                  " the recorded size is wrong)"),
+                      ],
                      "<instance>",
                      "Activate an instance's disks"),
   'deactivate-disks': (DeactivateDisks, ARGS_ONE, [DEBUG_OPT, SUBMIT_OPT],