diff --git a/daemons/ganeti-noded b/daemons/ganeti-noded
index db3c7aa88648bf23528553089d51ee9b57c99b27..d34c05a551541e58e2f942466980c4c71c327eed 100755
--- a/daemons/ganeti-noded
+++ b/daemons/ganeti-noded
@@ -365,6 +365,14 @@ class NodeHttpServer(http.server.HttpServer):
     (su_name, su_args, name, fields) = params
     return storage.GetStorage(su_name, *su_args).List(name, fields)
 
+  @staticmethod
+  def perspective_storage_modify(params):
+    """Modify a storage unit.
+
+    """
+    (su_name, su_args, name, changes) = params
+    return storage.GetStorage(su_name, *su_args).Modify(name, changes)
+
   # bridge  --------------------------
 
   @staticmethod
diff --git a/lib/rpc.py b/lib/rpc.py
index a46444bade5156f83903a9104e8eef8760a421f5..56230139544709dff57d25fd40285f631e50b203 100644
--- a/lib/rpc.py
+++ b/lib/rpc.py
@@ -433,7 +433,7 @@ class RpcRunner(object):
     return self._MultiNodeCall(node_list, "vg_list", [])
 
   def call_storage_list(self, node_list, su_name, su_args, name, fields):
-    """Get list of storage units..
+    """Get list of storage units.
 
     This is a multi-node call.
 
@@ -441,6 +441,15 @@ class RpcRunner(object):
     return self._MultiNodeCall(node_list, "storage_list",
                                [su_name, su_args, name, fields])
 
+  def call_storage_modify(self, node, su_name, su_args, name, changes):
+    """Modify a storage unit.
+
+    This is a single-node call.
+
+    """
+    return self._SingleNodeCall(node, "storage_modify",
+                                [su_name, su_args, name, changes])
+
   def call_bridges_exist(self, node, bridges_list):
     """Checks if a node has all the bridges given.