diff --git a/configure.ac b/configure.ac
index b6b3d56a2995d11bd95af1b5cc105894b08f2d3c..9836008bf68d75ec2af5c81545155695be86dc5d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2,7 +2,7 @@
 m4_define([gnt_version_major], [2])
 m4_define([gnt_version_minor], [1])
 m4_define([gnt_version_revision], [0])
-m4_define([gnt_version_suffix], [~rc4])
+m4_define([gnt_version_suffix], [~rc5])
 m4_define([gnt_version_full],
           m4_format([%d.%d.%d%s],
                     gnt_version_major, gnt_version_minor,
diff --git a/daemons/ganeti-watcher b/daemons/ganeti-watcher
index 6346f07c25782dd94e9c23d9880be85aadf72de1..4f8eb935af065215960ccc9f76cb857a6482eb09 100755
--- a/daemons/ganeti-watcher
+++ b/daemons/ganeti-watcher
@@ -486,6 +486,8 @@ def main():
   try:
     # on master or not, try to start the node dameon
     EnsureDaemon(constants.NODED)
+    # start confd as well. On non candidates it will be in disabled mode.
+    EnsureDaemon(constants.CONFD)
 
     notepad = WatcherState()
     try:
diff --git a/lib/cmdlib.py b/lib/cmdlib.py
index cd84de8053115f59035caa6efb55446e92246e42..7dffa465b88af4f31f43ee12e0d855d72a8c7147 100644
--- a/lib/cmdlib.py
+++ b/lib/cmdlib.py
@@ -3206,7 +3206,7 @@ class LUSetNodeParams(LogicalUnit):
 
     # If we're being deofflined/drained, we'll MC ourself if needed
     if (deoffline_or_drain and not offline_or_drain and not
-        self.op.master_candidate == True):
+        self.op.master_candidate == True and not node.master_candidate):
       self.op.master_candidate = _DecideSelfPromotion(self)
       if self.op.master_candidate:
         self.LogInfo("Autopromoting node to master candidate")
diff --git a/lib/hypervisor/hv_xen.py b/lib/hypervisor/hv_xen.py
index 5b3c22bed51f2a102c4ff13be12b14d7858046f5..e16c030804aa232b26ac383d12d41fc2de2b879e 100644
--- a/lib/hypervisor/hv_xen.py
+++ b/lib/hypervisor/hv_xen.py
@@ -496,9 +496,9 @@ class XenPvmHypervisor(XenHypervisor):
       ip = getattr(nic, "ip", None)
       if ip is not None:
         nic_str += ", ip=%s" % ip
-      vif_data.append("'%s'" % nic_str)
       if nic.nicparams[constants.NIC_MODE] == constants.NIC_MODE_BRIDGED:
         nic_str += ", bridge=%s" % nic.nicparams[constants.NIC_LINK]
+      vif_data.append("'%s'" % nic_str)
 
     disk_data = cls._GetConfigFileDiskData(block_devices)
 
@@ -624,9 +624,9 @@ class XenHvmHypervisor(XenHypervisor):
       ip = getattr(nic, "ip", None)
       if ip is not None:
         nic_str += ", ip=%s" % ip
-      vif_data.append("'%s'" % nic_str)
       if nic.nicparams[constants.NIC_MODE] == constants.NIC_MODE_BRIDGED:
         nic_str += ", bridge=%s" % nic.nicparams[constants.NIC_LINK]
+      vif_data.append("'%s'" % nic_str)
 
     config.write("vif = [%s]\n" % ",".join(vif_data))
     disk_data = cls._GetConfigFileDiskData(block_devices)