diff --git a/lib/cmdlib.py b/lib/cmdlib.py
index bcf948b4a8a8aba6221739dd22125c06c51a15f7..de8f40e5e7a419249e968a9d135415fae15147d5 100644
--- a/lib/cmdlib.py
+++ b/lib/cmdlib.py
@@ -7905,7 +7905,14 @@ class LUInstanceRecreateDisks(LogicalUnit):
     # All touched nodes must be locked
     mylocks = self.owned_locks(locking.LEVEL_NODE)
     assert mylocks.issuperset(frozenset(instance.all_nodes))
-    _CreateDisks(self, instance, to_skip=to_skip)
+    new_disks = _CreateDisks(self, instance, to_skip=to_skip)
+
+    # TODO: Release node locks before wiping, or explain why it's not possible
+    if self.cfg.GetClusterInfo().prealloc_wipe_disks:
+      wipedisks = [(idx, disk, 0)
+                   for (idx, disk) in enumerate(instance.disks)
+                   if idx not in to_skip]
+      _WipeOrCleanupDisks(self, instance, disks=wipedisks, cleanup=new_disks)
 
 
 class LUInstanceRename(LogicalUnit):