diff --git a/lib/cmdlib.py b/lib/cmdlib.py
index ad4c487de3c678c1719c5f94c54045366ad37a81..ddbc48da571adba1c0c3606e5fe60b5c4a378732 100644
--- a/lib/cmdlib.py
+++ b/lib/cmdlib.py
@@ -1544,7 +1544,6 @@ class LURepairDiskSizes(NoHooksLU):
   REQ_BGL = False
 
   def ExpandNames(self):
-
     if not isinstance(self.op.instances, list):
       raise errors.OpPrereqError("Invalid argument type 'instances'")
 
@@ -1602,7 +1601,7 @@ class LURepairDiskSizes(NoHooksLU):
     changed = []
     for node, dskl in per_node_disks.items():
       result = self.rpc.call_blockdev_getsizes(node, [v[2] for v in dskl])
-      if result.failed:
+      if result.failed or result.fail_msg:
         self.LogWarning("Failure in blockdev_getsizes call to node"
                         " %s, ignoring", node)
         continue
diff --git a/lib/rpc.py b/lib/rpc.py
index 98f0f6ed6bc69becc913a3fe98ee218dd65f1ff0..abcec8115a7f8798e860b9bf231415f91dc94e5f 100644
--- a/lib/rpc.py
+++ b/lib/rpc.py
@@ -111,12 +111,15 @@ class RpcResult(object):
     else:
       self.data = data
       if not isinstance(self.data, (tuple, list)):
+        self.failed = True
         self.fail_msg = ("RPC layer error: invalid result type (%s)" %
                          type(self.data))
       elif len(data) != 2:
+        self.failed = True
         self.fail_msg = ("RPC layer error: invalid result length (%d), "
                          "expected 2" % len(self.data))
       elif not self.data[0]:
+        self.failed = True
         self.fail_msg = self._EnsureErr(self.data[1])
       else:
         # finally success
@@ -810,7 +813,7 @@ class RpcRunner(object):
     """
     result = self._SingleNodeCall(node, "blockdev_getmirrorstatus",
                                   [dsk.ToDict() for dsk in disks])
-    if not result.failed:
+    if not (result.failed or result.fail_msg):
       result.payload = [objects.BlockDevStatus.FromDict(i)
                         for i in result.payload]
     return result