diff --git a/NEWS b/NEWS
index 794516533770559d2255e1d326063fa419eac7fe..b3e60a89310271e52eebadec0c35721666c5f662 100644
--- a/NEWS
+++ b/NEWS
@@ -2,10 +2,10 @@ News
 ====
 
 
-Version 2.5.0 rc5
+Version 2.5.0 rc6
 -----------------
 
-*(Released Mon, 9 Jan 2012)*
+*(Released Fri, 23 Mar 2012)*
 
 Incompatible/important changes and bugfixes
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -41,6 +41,7 @@ Incompatible/important changes and bugfixes
 - Offline nodes are ignored when failing over an instance.
 - Support for KVM version 1.0, which changed the version reporting format
   from 3 to 2 digits.
+- ``Makefile`` is now compatible with Automake 1.11.2
 - Includes all bugfixes made in the 2.4 series
 
 New features
@@ -133,6 +134,15 @@ Misc
 - A short delay when waiting for job changes reduces the number of LUXI
   requests significantly.
 - DRBD metadata volumes are overwritten with zeros during disk creation.
+- ``devel/upload`` now uses correct permissions for directories.
+
+
+Version 2.5.0 rc5
+-----------------
+
+*(Released Mon, 9 Jan 2012)*
+
+This was the fifth release candidate of the 2.5 series.
 
 
 Version 2.5.0 rc4
diff --git a/configure.ac b/configure.ac
index c5a3b8413ad51e1340159821bc97126dfa49a84d..3b49bbfa30a54f2f2fe32235e0a640c58c44ad2d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2,7 +2,7 @@
 m4_define([gnt_version_major], [2])
 m4_define([gnt_version_minor], [5])
 m4_define([gnt_version_revision], [0])
-m4_define([gnt_version_suffix], [~rc5])
+m4_define([gnt_version_suffix], [~rc6])
 m4_define([gnt_version_full],
           m4_format([%d.%d.%d%s],
                     gnt_version_major, gnt_version_minor,
diff --git a/lib/bdev.py b/lib/bdev.py
index d8603df8d13f31e57922423b538e945b12f5be5d..6e37479e30ca08cd275c550c948b59d793c609bc 100644
--- a/lib/bdev.py
+++ b/lib/bdev.py
@@ -1,7 +1,7 @@
 #
 #
 
-# Copyright (C) 2006, 2007, 2010, 2011 Google Inc.
+# Copyright (C) 2006, 2007, 2010, 2011, 2012 Google Inc.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -606,8 +606,8 @@ class LogicalVolume(BlockDev):
       return False
 
     status, major, minor, pe_size, stripes = out
-    if len(status) != 6:
-      logging.error("lvs lv_attr is not 6 characters (%s)", status)
+    if len(status) < 6:
+      logging.error("lvs lv_attr is not at least 6 characters (%s)", status)
       return False
 
     try:
diff --git a/lib/cmdlib.py b/lib/cmdlib.py
index eb2e49a6f75b8c12b213782783844c1f4e91a7d7..95e4abb923bee298cfd260c13a4ebe0cab2686e2 100644
--- a/lib/cmdlib.py
+++ b/lib/cmdlib.py
@@ -1581,7 +1581,7 @@ class LUClusterVerifyConfig(NoHooksLU, _VerifyErrors):
   """Verifies the cluster config.
 
   """
-  REQ_BGL = True
+  REQ_BGL = False
 
   def _VerifyHVP(self, hvp_data):
     """Verifies locally the syntax of the hypervisor parameters.
@@ -1598,13 +1598,17 @@ class LUClusterVerifyConfig(NoHooksLU, _VerifyErrors):
         self._ErrorIf(True, self.ECLUSTERCFG, None, msg % str(err))
 
   def ExpandNames(self):
-    # Information can be safely retrieved as the BGL is acquired in exclusive
-    # mode
-    assert locking.BGL in self.owned_locks(locking.LEVEL_CLUSTER)
+    self.needed_locks = dict.fromkeys(locking.LEVELS, locking.ALL_SET)
+    self.share_locks = _ShareAll()
+
+  def CheckPrereq(self):
+    """Check prerequisites.
+
+    """
+    # Retrieve all information
     self.all_group_info = self.cfg.GetAllNodeGroupsInfo()
     self.all_node_info = self.cfg.GetAllNodesInfo()
     self.all_inst_info = self.cfg.GetAllInstancesInfo()
-    self.needed_locks = {}
 
   def Exec(self, feedback_fn):
     """Verify integrity of cluster, performing various test on nodes.
@@ -11498,7 +11502,7 @@ class LUInstanceChangeGroup(LogicalUnit):
 
     if self.req_target_uuids:
       # User requested specific target groups
-      self.target_uuids = self.req_target_uuids
+      self.target_uuids = frozenset(self.req_target_uuids)
     else:
       # All groups except those used by the instance are potential targets
       self.target_uuids = owned_groups - inst_groups
diff --git a/lib/hypervisor/hv_kvm.py b/lib/hypervisor/hv_kvm.py
index 9b341b7e4b4014ed86e17213a1cde84d8f18285a..c2ae771ead629f1887237908d73897922da510cf 100644
--- a/lib/hypervisor/hv_kvm.py
+++ b/lib/hypervisor/hv_kvm.py
@@ -927,8 +927,20 @@ class KVMHypervisor(hv_base.BaseHypervisor):
     if mem_path:
       kvm_cmd.extend(["-mem-path", mem_path, "-mem-prealloc"])
 
+    monitor_dev = ("unix:%s,server,nowait" %
+                   self._InstanceMonitor(instance.name))
+    kvm_cmd.extend(["-monitor", monitor_dev])
+    if hvp[constants.HV_SERIAL_CONSOLE]:
+      serial_dev = ("unix:%s,server,nowait" %
+                    self._InstanceSerial(instance.name))
+      kvm_cmd.extend(["-serial", serial_dev])
+    else:
+      kvm_cmd.extend(["-serial", "none"])
+
     mouse_type = hvp[constants.HV_USB_MOUSE]
     vnc_bind_address = hvp[constants.HV_VNC_BIND_ADDRESS]
+    spice_bind = hvp[constants.HV_KVM_SPICE_BIND]
+    spice_ip_version = None
 
     if mouse_type:
       kvm_cmd.extend(["-usb"])
@@ -980,22 +992,7 @@ class KVMHypervisor(hv_base.BaseHypervisor):
         vnc_arg = "unix:%s/%s.vnc" % (vnc_bind_address, instance.name)
 
       kvm_cmd.extend(["-vnc", vnc_arg])
-    else:
-      kvm_cmd.extend(["-nographic"])
-
-    monitor_dev = ("unix:%s,server,nowait" %
-                   self._InstanceMonitor(instance.name))
-    kvm_cmd.extend(["-monitor", monitor_dev])
-    if hvp[constants.HV_SERIAL_CONSOLE]:
-      serial_dev = ("unix:%s,server,nowait" %
-                    self._InstanceSerial(instance.name))
-      kvm_cmd.extend(["-serial", serial_dev])
-    else:
-      kvm_cmd.extend(["-serial", "none"])
-
-    spice_bind = hvp[constants.HV_KVM_SPICE_BIND]
-    spice_ip_version = None
-    if spice_bind:
+    elif spice_bind:
       if netutils.IsValidInterface(spice_bind):
         # The user specified a network interface, we have to figure out the IP
         # address.
@@ -1066,6 +1063,9 @@ class KVMHypervisor(hv_base.BaseHypervisor):
       # Tell kvm to use the paravirtualized graphic card, optimized for SPICE
       kvm_cmd.extend(["-vga", "qxl"])
 
+    else:
+      kvm_cmd.extend(["-nographic"])
+
     if hvp[constants.HV_USE_LOCALTIME]:
       kvm_cmd.extend(["-localtime"])