diff --git a/daemons/ganeti-noded b/daemons/ganeti-noded
index 83177fefc80828cb21af8155e638f9886c24c523..f069195d8a4168a352bad74486948ed1c5790c34 100755
--- a/daemons/ganeti-noded
+++ b/daemons/ganeti-noded
@@ -183,6 +183,15 @@ class NodeHttpServer(http.server.HttpServer):
raise ValueError("can't unserialize data!")
return backend.BlockdevCreate(bdev, size, owner, on_primary, info)
+ @staticmethod
+ def perspective_blockdev_wipe(params):
+ """Wipe a block device.
+
+ """
+ bdev_s, offset, size = params
+ bdev = objects.Disk.FromDict(bdev_s)
+ return backend.BlockdevWipe(bdev, offset, size)
+
@staticmethod
def perspective_blockdev_remove(params):
"""Remove a block device.
diff --git a/lib/rpc.py b/lib/rpc.py
index ffe64c3ebab2e1819c8888ded778126e69026f4a..0126642869d2ad894541214575f5d8f626f48079 100644
--- a/lib/rpc.py
+++ b/lib/rpc.py
@@ -953,6 +953,16 @@ class RpcRunner(object):
return self._SingleNodeCall(node, "blockdev_create",
[bdev.ToDict(), size, owner, on_primary, info])
+ @_RpcTimeout(_TMO_SLOW)
+ def call_blockdev_wipe(self, node, bdev, offset, size):
+ """Request wipe at given offset with given size of a block device.
+
+ This is a single-node call.
+
+ """
+ return self._SingleNodeCall(node, "blockdev_wipe",
+ [bdev.ToDict(), offset, size])
+
@_RpcTimeout(_TMO_NORMAL)
def call_blockdev_remove(self, node, bdev):
"""Request removal of a given block device.