diff --git a/lib/cmdlib.py b/lib/cmdlib.py
index 6223ee331de780b83656eaf7baf054a442452ce2..ceb88710074a55d93093bbdd5ec26fdf87b64926 100644
--- a/lib/cmdlib.py
+++ b/lib/cmdlib.py
@@ -749,6 +749,23 @@ def _GetStorageTypeArgs(cfg, storage_type):
   return []
 
 
+def _FindFaultyInstanceDisks(cfg, rpc, instance, node_name, prereq):
+  faulty = []
+
+  for dev in instance.disks:
+    cfg.SetDiskID(dev, node_name)
+
+  result = rpc.call_blockdev_getmirrorstatus(node_name, instance.disks)
+  result.Raise("Failed to get disk status from node %s" % node_name,
+               prereq=prereq)
+
+  for idx, bdev_status in enumerate(result.payload):
+    if bdev_status and bdev_status.ldisk_status == constants.LDS_FAULTY:
+      faulty.append(idx)
+
+  return faulty
+
+
 class LUPostInitCluster(LogicalUnit):
   """Logical unit for running hooks after cluster initialization.
 
@@ -5912,21 +5929,8 @@ class TLReplaceDisks(Tasklet):
     return remote_node_name
 
   def _FindFaultyDisks(self, node_name):
-    faulty = []
-
-    for dev in self.instance.disks:
-      self.cfg.SetDiskID(dev, node_name)
-
-    result = self.rpc.call_blockdev_getmirrorstatus(node_name,
-                                                    self.instance.disks)
-    result.Raise("Failed to get disk status from node %s" % node_name,
-                 prereq=True)
-
-    for idx, bdev_status in enumerate(result.payload):
-      if bdev_status and bdev_status.ldisk_status == constants.LDS_FAULTY:
-        faulty.append(idx)
-
-    return faulty
+    return _FindFaultyInstanceDisks(self.cfg, self.rpc, self.instance,
+                                    node_name, True)
 
   def CheckPrereq(self):
     """Check prerequisites.