diff --git a/lib/client/gnt_instance.py b/lib/client/gnt_instance.py
index c59817b5d049cfbd97dbf831d02c8d36a738cf0f..a3e54b397c3d4848bb23462db442bcae527ba079 100644
--- a/lib/client/gnt_instance.py
+++ b/lib/client/gnt_instance.py
@@ -486,8 +486,12 @@ def ReinstallInstance(opts, args):
                                      osparams=opts.osparams)
     jex.QueueJob(instance_name, op)
 
-  jex.WaitOrShow(not opts.submit_only)
-  return 0
+  results = jex.WaitOrShow(not opts.submit_only)
+
+  if compat.all(map(compat.fst, results)):
+    return constants.EXIT_SUCCESS
+  else:
+    return constants.EXIT_FAILURE
 
 
 def RemoveInstance(opts, args):
diff --git a/qa/qa_instance.py b/qa/qa_instance.py
index 637ce9b65b332217e60854b0a4ae80729f58d90f..02acb6bd14c1c88356fa6a9b5a50684ed6d15ad3 100644
--- a/qa/qa_instance.py
+++ b/qa/qa_instance.py
@@ -140,6 +140,12 @@ def TestInstanceReinstall(instance):
   """gnt-instance reinstall"""
   AssertCommand(["gnt-instance", "reinstall", "-f", instance["name"]])
 
+  # Test with non-existant OS definition
+  AssertCommand(["gnt-instance", "reinstall", "-f",
+                 "--os-type=NonExistantOsForQa",
+                 instance["name"]],
+                fail=True)
+
 
 def _ReadSsconfInstanceList():
   """Reads ssconf_instance_list from the master node.