diff --git a/lib/cmdlib.py b/lib/cmdlib.py
index 5abc16fc7e8e390ab836b7b2cacc9a9f0dd18f75..1df5ea512045350d007343be15ec943022493206 100644
--- a/lib/cmdlib.py
+++ b/lib/cmdlib.py
@@ -4861,22 +4861,24 @@ class IAllocator(object):
       if nname not in node_data or not isinstance(node_data[nname], dict):
         raise errors.OpExecError("Can't get data for node %s" % nname)
       remote_info = node_data[nname]
-      for attr in ['memory_total', 'memory_free',
+      for attr in ['memory_total', 'memory_free', 'memory_dom0',
                    'vg_size', 'vg_free']:
         if attr not in remote_info:
           raise errors.OpExecError("Node '%s' didn't return attribute '%s'" %
                                    (nname, attr))
         try:
-          int(remote_info[attr])
+          remote_info[attr] = int(remote_info[attr])
         except ValueError, err:
           raise errors.OpExecError("Node '%s' returned invalid value for '%s':"
                                    " %s" % (nname, attr, str(err)))
+      # compute memory used by instances
       pnr = {
         "tags": list(ninfo.GetTags()),
-        "total_memory": utils.TryConvert(int, remote_info['memory_total']),
-        "free_memory": utils.TryConvert(int, remote_info['memory_free']),
-        "total_disk": utils.TryConvert(int, remote_info['vg_size']),
-        "free_disk": utils.TryConvert(int, remote_info['vg_free']),
+        "total_memory": remote_info['memory_total'],
+        "reserved_memory": remote_info['memory_dom0'],
+        "free_memory": remote_info['memory_free'],
+        "total_disk": remote_info['vg_size'],
+        "free_disk": remote_info['vg_free'],
         "primary_ip": ninfo.primary_ip,
         "secondary_ip": ninfo.secondary_ip,
         }