diff --git a/daemons/ganeti-noded b/daemons/ganeti-noded
index 08984e957e35271aa05e6bda28b9e4822dab979b..93ca0de628b1c0b3aa496d389e2f822f71039399 100755
--- a/daemons/ganeti-noded
+++ b/daemons/ganeti-noded
@@ -364,7 +364,7 @@ class NodeHttpServer(http.server.HttpServer):
     """
     inst_s = params[0]
     inst = objects.Instance.FromDict(inst_s)
-    return backend.AddOSToInstance(inst)
+    return backend.InstanceOsAdd(inst)
 
   @staticmethod
   def perspective_instance_run_rename(params):
diff --git a/lib/backend.py b/lib/backend.py
index e7558a5cfed2215565015ced4b72fa95ea5fae88..6b64b4261a8e81f49244ac285a35efb8f86d2869 100644
--- a/lib/backend.py
+++ b/lib/backend.py
@@ -669,7 +669,7 @@ def GetAllInstancesInfo(hypervisor_list):
   return output
 
 
-def AddOSToInstance(instance):
+def InstanceOsAdd(instance):
   """Add an OS to an instance.
 
   @type instance: L{objects.Instance}
@@ -678,7 +678,15 @@ def AddOSToInstance(instance):
   @return: the success of the operation
 
   """
-  inst_os = OSFromDisk(instance.os)
+  try:
+    inst_os = OSFromDisk(instance.os)
+  except errors.InvalidOS, err:
+    os_name, os_dir, os_err = err.args
+    if os_dir is None:
+      return (False, "Can't find OS '%s': %s" % (os_name, os_err))
+    else:
+      return (False, "Error parsing OS '%s' in directory %s: %s" %
+              (os_name, os_dir, os_err))
 
   create_env = OSEnvironment(instance)