diff --git a/qa/ganeti-qa.py b/qa/ganeti-qa.py
index 3a014f86bc1919da409701a918034a6650ce61d4..f5bb04310afcf53880ae563c62f3b148f733da48 100755
--- a/qa/ganeti-qa.py
+++ b/qa/ganeti-qa.py
@@ -475,6 +475,8 @@ def RunQa():
   RunGroupListTests()
   RunGroupRwTests()
 
+  # The master shouldn't be readded or put offline; "delay" needs a non-master
+  # node to test
   pnode = qa_config.AcquireNode(exclude=qa_config.GetMasterNode())
   try:
     RunTestIf("node-readd", qa_node.TestNodeReadd, pnode)
@@ -540,18 +542,29 @@ def RunQa():
         finally:
           qa_config.ReleaseNode(snode)
 
-    # Test removing instance with offline drbd secondary
-    if qa_config.TestEnabled("instance-remove-drbd-offline"):
-      snode = qa_config.AcquireNode(exclude=pnode)
-      instance = \
-        qa_instance.TestInstanceAddWithDrbdDisk(pnode, snode)
+  finally:
+    qa_config.ReleaseNode(pnode)
+
+  # Test removing instance with offline drbd secondary
+  if qa_config.TestEnabled("instance-remove-drbd-offline"):
+    # Make sure the master is not put offline
+    snode = qa_config.AcquireNode(exclude=qa_config.GetMasterNode())
+    try:
+      pnode = qa_config.AcquireNode(exclude=snode)
       try:
+        instance = qa_instance.TestInstanceAddWithDrbdDisk(pnode, snode)
         qa_node.MakeNodeOffline(snode, "yes")
-        RunTest(qa_instance.TestInstanceRemove, instance)
+        try:
+          RunTest(qa_instance.TestInstanceRemove, instance)
+        finally:
+          qa_node.MakeNodeOffline(snode, "no")
       finally:
-        qa_node.MakeNodeOffline(snode, "no")
-        qa_config.ReleaseNode(snode)
+        qa_config.ReleaseNode(pnode)
+    finally:
+      qa_config.ReleaseNode(snode)
 
+  pnode = qa_config.AcquireNode()
+  try:
     if qa_config.TestEnabled(["instance-add-plain-disk", "instance-export"]):
       for shutdown in [False, True]:
         instance = RunTest(qa_instance.TestInstanceAddWithPlainDisk, pnode)