diff --git a/lib/backend.py b/lib/backend.py
index d4a991dc1cd77801069f950f5be8fa23c9bd0404..ab074da261e8685288d59b79621597be35fb676b 100644
--- a/lib/backend.py
+++ b/lib/backend.py
@@ -1374,9 +1374,9 @@ def BlockdevGetmirrorstatus(disks):
   for dsk in disks:
     rbd = _RecursiveFindBD(dsk)
     if rbd is None:
-      raise errors.BlockDeviceError("Can't find device %s" % str(dsk))
+      _Fail("Can't find device %s", dsk)
     stats.append(rbd.CombinedSyncStatus())
-  return stats
+  return True, stats
 
 
 def _RecursiveFindBD(disk):
diff --git a/lib/cmdlib.py b/lib/cmdlib.py
index 5dd52b04637c991feff2c90f01b0b7be01d43f8f..d23df1b09e8f8c31788413bf04d4610388ab0e12 100644
--- a/lib/cmdlib.py
+++ b/lib/cmdlib.py
@@ -1688,15 +1688,16 @@ def _WaitForSync(lu, instance, oneshot=False, unlock=False):
     done = True
     cumul_degraded = False
     rstats = lu.rpc.call_blockdev_getmirrorstatus(node, instance.disks)
-    if rstats.failed or not rstats.data:
-      lu.LogWarning("Can't get any data from node %s", node)
+    msg = rstats.RemoteFailMsg()
+    if msg:
+      lu.LogWarning("Can't get any data from node %s: %s", node, msg)
       retries += 1
       if retries >= 10:
         raise errors.RemoteError("Can't contact node %s for mirror data,"
                                  " aborting." % node)
       time.sleep(6)
       continue
-    rstats = rstats.data
+    rstats = rstats.payload
     retries = 0
     for i, mstat in enumerate(rstats):
       if mstat is None: