Blame SOURCES/0003-fix-device-run-state-unknown-rh1440171.patch

fc9aca
From f2d099c8c534ee426dbc31a3a61fcf27c18b92d8 Mon Sep 17 00:00:00 2001
fc9aca
From: Thomas Haller <thaller@redhat.com>
fc9aca
Date: Thu, 11 May 2017 19:26:28 +0200
fc9aca
Subject: [PATCH 1/2] core: cleanup logging reading device-state
fc9aca
fc9aca
- print string value instead of numerical "managed"
fc9aca
- for missing state, print the same format. After all,
fc9aca
  some defaults apply and it is interesting to know what
fc9aca
  they are.
fc9aca
fc9aca
(cherry picked from commit 81008c90ac9832ade1c9783078823fdd45221225)
fc9aca
(cherry picked from commit 8da225283b9977554a6b78e73dc03d22b8703027)
fc9aca
---
fc9aca
 src/nm-config.c | 30 +++++++++++++-----------------
fc9aca
 1 file changed, 13 insertions(+), 17 deletions(-)
fc9aca
fc9aca
diff --git a/src/nm-config.c b/src/nm-config.c
fc9aca
index 2cdf855..954cad7 100644
fc9aca
--- a/src/nm-config.c
fc9aca
+++ b/src/nm-config.c
fc9aca
@@ -1873,6 +1873,13 @@ _nm_config_state_set (NMConfig *self,
fc9aca
 #define DEVICE_RUN_STATE_KEYFILE_KEY_DEVICE_PERM_HW_ADDR_FAKE   "perm-hw-addr-fake"
fc9aca
 #define DEVICE_RUN_STATE_KEYFILE_KEY_DEVICE_CONNECTION_UUID     "connection-uuid"
fc9aca
 
fc9aca
+NM_UTILS_LOOKUP_STR_DEFINE_STATIC (_device_state_managed_type_to_str, NMConfigDeviceStateManagedType,
fc9aca
+	NM_UTILS_LOOKUP_DEFAULT_NM_ASSERT ("unknown"),
fc9aca
+	NM_UTILS_LOOKUP_STR_ITEM (NM_CONFIG_DEVICE_STATE_MANAGED_TYPE_UNKNOWN,   "unknown"),
fc9aca
+	NM_UTILS_LOOKUP_STR_ITEM (NM_CONFIG_DEVICE_STATE_MANAGED_TYPE_UNMANAGED, "unmanaged"),
fc9aca
+	NM_UTILS_LOOKUP_STR_ITEM (NM_CONFIG_DEVICE_STATE_MANAGED_TYPE_MANAGED,   "managed"),
fc9aca
+);
fc9aca
+
fc9aca
 static NMConfigDeviceStateData *
fc9aca
 _config_device_state_data_new (int ifindex, GKeyFile *kf)
fc9aca
 {
fc9aca
@@ -1968,27 +1975,16 @@ nm_config_device_state_load (int ifindex)
fc9aca
 
fc9aca
 	device_state = _config_device_state_data_new (ifindex, kf);
fc9aca
 
fc9aca
-	if (kf) {
fc9aca
-		_LOGT ("device-state: read #%d (%s); managed=%d%s%s%s%s%s%s",
fc9aca
-		       ifindex, path,
fc9aca
-		       device_state->managed,
fc9aca
-		       NM_PRINT_FMT_QUOTED (device_state->connection_uuid, ", connection-uuid=", device_state->connection_uuid, "", ""),
fc9aca
-		       NM_PRINT_FMT_QUOTED (device_state->perm_hw_addr_fake, ", perm-hw-addr-fake=", device_state->perm_hw_addr_fake, "", ""));
fc9aca
-	} else {
fc9aca
-		_LOGT ("device-state: read #%d (%s); no persistent state",
fc9aca
-		       ifindex, path);
fc9aca
-	}
fc9aca
+	_LOGT ("device-state: %s #%d (%s); managed=%s%s%s%s%s%s%s",
fc9aca
+	       kf ? "read" : "miss",
fc9aca
+	       ifindex, path,
fc9aca
+	       _device_state_managed_type_to_str (device_state->managed),
fc9aca
+	       NM_PRINT_FMT_QUOTED (device_state->connection_uuid, ", connection-uuid=", device_state->connection_uuid, "", ""),
fc9aca
+	       NM_PRINT_FMT_QUOTED (device_state->perm_hw_addr_fake, ", perm-hw-addr-fake=", device_state->perm_hw_addr_fake, "", ""));
fc9aca
 
fc9aca
 	return device_state;
fc9aca
 }
fc9aca
 
fc9aca
-NM_UTILS_LOOKUP_STR_DEFINE_STATIC (_device_state_managed_type_to_str, NMConfigDeviceStateManagedType,
fc9aca
-	NM_UTILS_LOOKUP_DEFAULT_NM_ASSERT ("unknown"),
fc9aca
-	NM_UTILS_LOOKUP_STR_ITEM (NM_CONFIG_DEVICE_STATE_MANAGED_TYPE_UNKNOWN,   "unknown"),
fc9aca
-	NM_UTILS_LOOKUP_STR_ITEM (NM_CONFIG_DEVICE_STATE_MANAGED_TYPE_UNMANAGED, "unmanaged"),
fc9aca
-	NM_UTILS_LOOKUP_STR_ITEM (NM_CONFIG_DEVICE_STATE_MANAGED_TYPE_MANAGED,   "managed"),
fc9aca
-);
fc9aca
-
fc9aca
 gboolean
fc9aca
 nm_config_device_state_write (int ifindex,
fc9aca
                               NMConfigDeviceStateManagedType managed,
fc9aca
-- 
fc9aca
2.9.3
fc9aca
fc9aca
fc9aca
From 41ff1247a2dcfd6c781cbce2fac12ab6ae657727 Mon Sep 17 00:00:00 2001
fc9aca
From: Thomas Haller <thaller@redhat.com>
fc9aca
Date: Thu, 11 May 2017 19:40:55 +0200
fc9aca
Subject: [PATCH 2/2] core: fix reading device state file
fc9aca
fc9aca
For manged=unknown, we don't write the value to the
fc9aca
device state keyfile. The results in an empty file,
fc9aca
or at least, a keyfile that doesn't have device.managed
fc9aca
set.
fc9aca
fc9aca
On read, we must treat a missing device.managed flag as
fc9aca
unknown, and not as unmanaged. Otherwise, on restart
fc9aca
a device becomes marked as explicitly unmanaged.
fc9aca
fc9aca
This was broken by commit 142ebb1 "core: only persist explicit managed
fc9aca
state in device's state file", where we started conditionally
fc9aca
to no longer write the managed state.
fc9aca
fc9aca
Reported-by: Michael Biebl <mbiebl@debian.org>
fc9aca
Fixes: 142ebb10376ec592593f15b0359f38be89c97620
fc9aca
(cherry picked from commit 348ffdec183ee198499dad1365906e8d16ff4122)
fc9aca
(cherry picked from commit 33d3ec3b3e5d2e737afc8db6c64850e67db5c12d)
fc9aca
---
fc9aca
 src/nm-config.c | 24 +++++++++++++-----------
fc9aca
 1 file changed, 13 insertions(+), 11 deletions(-)
fc9aca
fc9aca
diff --git a/src/nm-config.c b/src/nm-config.c
fc9aca
index 954cad7..54ccf9a 100644
fc9aca
--- a/src/nm-config.c
fc9aca
+++ b/src/nm-config.c
fc9aca
@@ -1894,21 +1894,23 @@ _config_device_state_data_new (int ifindex, GKeyFile *kf)
fc9aca
 	nm_assert (ifindex > 0);
fc9aca
 
fc9aca
 	if (kf) {
fc9aca
-		gboolean managed;
fc9aca
-
fc9aca
-		managed = nm_config_keyfile_get_boolean (kf,
fc9aca
-		                                         DEVICE_RUN_STATE_KEYFILE_GROUP_DEVICE,
fc9aca
-		                                         DEVICE_RUN_STATE_KEYFILE_KEY_DEVICE_MANAGED,
fc9aca
-		                                         FALSE);
fc9aca
-		managed_type = managed
fc9aca
-		               ? NM_CONFIG_DEVICE_STATE_MANAGED_TYPE_MANAGED
fc9aca
-		               : NM_CONFIG_DEVICE_STATE_MANAGED_TYPE_UNMANAGED;
fc9aca
-
fc9aca
-		if (managed) {
fc9aca
+		switch (nm_config_keyfile_get_boolean (kf,
fc9aca
+		                                       DEVICE_RUN_STATE_KEYFILE_GROUP_DEVICE,
fc9aca
+		                                       DEVICE_RUN_STATE_KEYFILE_KEY_DEVICE_MANAGED,
fc9aca
+		                                       -1)) {
fc9aca
+		case TRUE:
fc9aca
+			managed_type = NM_CONFIG_DEVICE_STATE_MANAGED_TYPE_MANAGED;
fc9aca
 			connection_uuid = nm_config_keyfile_get_value (kf,
fc9aca
 			                                               DEVICE_RUN_STATE_KEYFILE_GROUP_DEVICE,
fc9aca
 			                                               DEVICE_RUN_STATE_KEYFILE_KEY_DEVICE_CONNECTION_UUID,
fc9aca
 			                                               NM_CONFIG_GET_VALUE_STRIP | NM_CONFIG_GET_VALUE_NO_EMPTY);
fc9aca
+			break;
fc9aca
+		case FALSE:
fc9aca
+			managed_type = NM_CONFIG_DEVICE_STATE_MANAGED_TYPE_UNMANAGED;
fc9aca
+			break;
fc9aca
+		case -1:
fc9aca
+			/* missing property in keyfile. */
fc9aca
+			break;
fc9aca
 		}
fc9aca
 
fc9aca
 		perm_hw_addr_fake = nm_config_keyfile_get_value (kf,
fc9aca
-- 
fc9aca
2.9.3
fc9aca