diff options
author | Ed Tanous <edtanous@google.com> | 2022-02-02 03:19:18 +0300 |
---|---|---|
committer | Ed Tanous <ed@tanous.net> | 2022-02-03 19:56:47 +0300 |
commit | c19c1f44d2f1aa1ff74b208bb18496f3cba16397 (patch) | |
tree | 09c20a595543866962a3770481ef9f72dce8003b /meta-phosphor/recipes-core/systemd | |
parent | 4f5f5ded36414d74553da1caf8224f377f28b70c (diff) | |
download | openbmc-c19c1f44d2f1aa1ff74b208bb18496f3cba16397.tar.xz |
Drop systemd patch
This patch is now in systemd upstream, so we no longer need to hold it
here.
Signed-off-by: Ed Tanous <edtanous@google.com>
Change-Id: I8b33e0a04fc990e7f155a4e475a40ea1696818e5
Diffstat (limited to 'meta-phosphor/recipes-core/systemd')
-rw-r--r-- | meta-phosphor/recipes-core/systemd/systemd/0001-conf-parse-make-config_parse_many-optionally-save-st.patch | 379 | ||||
-rw-r--r-- | meta-phosphor/recipes-core/systemd/systemd_249.5.bbappend | 2 |
2 files changed, 0 insertions, 381 deletions
diff --git a/meta-phosphor/recipes-core/systemd/systemd/0001-conf-parse-make-config_parse_many-optionally-save-st.patch b/meta-phosphor/recipes-core/systemd/systemd/0001-conf-parse-make-config_parse_many-optionally-save-st.patch deleted file mode 100644 index fedb42d9b6..0000000000 --- a/meta-phosphor/recipes-core/systemd/systemd/0001-conf-parse-make-config_parse_many-optionally-save-st.patch +++ /dev/null @@ -1,379 +0,0 @@ -From 819333d81964fd110565d35a33993b831ba60725 Mon Sep 17 00:00:00 2001 -From: Yu Watanabe <watanabe.yu+github@gmail.com> -Date: Mon, 25 Oct 2021 11:13:27 +0900 -Subject: [PATCH] conf-parse: make config_parse_many() optionally save 'struct - stat' for each file - -Fixes #21113. ---- - src/core/load-dropin.c | 18 +++--- - src/network/networkd-network.c | 38 +++++++++--- - src/network/networkd-network.h | 2 +- - src/shared/conf-parser.c | 103 +++++++++++++++++++++++++-------- - src/shared/conf-parser.h | 8 ++- - 5 files changed, 127 insertions(+), 42 deletions(-) - -diff --git a/src/core/load-dropin.c b/src/core/load-dropin.c -index 3bb48564cc..080a63bc7e 100644 ---- a/src/core/load-dropin.c -+++ b/src/core/load-dropin.c -@@ -113,14 +113,16 @@ int unit_load_dropin(Unit *u) { - } - - u->dropin_mtime = 0; -- STRV_FOREACH(f, u->dropin_paths) -- (void) config_parse( -- u->id, *f, NULL, -- UNIT_VTABLE(u)->sections, -- config_item_perf_lookup, load_fragment_gperf_lookup, -- 0, -- u, -- &u->dropin_mtime); -+ STRV_FOREACH(f, u->dropin_paths) { -+ struct stat st; -+ -+ r = config_parse(u->id, *f, NULL, -+ UNIT_VTABLE(u)->sections, -+ config_item_perf_lookup, load_fragment_gperf_lookup, -+ 0, u, &st); -+ if (r > 0) -+ u->dropin_mtime = MAX(u->dropin_mtime, timespec_load(&st.st_mtim)); -+ } - - return 0; - } -diff --git a/src/network/networkd-network.c b/src/network/networkd-network.c -index 850b4f449e..32d76e29e4 100644 ---- a/src/network/networkd-network.c -+++ b/src/network/networkd-network.c -@@ -480,7 +480,7 @@ int network_load_one(Manager *manager, OrderedHashmap **networks, const char *fi - config_item_perf_lookup, network_network_gperf_lookup, - CONFIG_PARSE_WARN, - network, -- &network->timestamp); -+ &network->stats_by_path); - if (r < 0) - return r; - -@@ -527,6 +527,28 @@ int network_load(Manager *manager, OrderedHashmap **networks) { - return 0; - } - -+static bool stats_by_path_equal(Hashmap *a, Hashmap *b) { -+ struct stat *st_a, *st_b; -+ const char *path; -+ -+ assert(a); -+ assert(b); -+ -+ if (hashmap_size(a) != hashmap_size(b)) -+ return false; -+ -+ HASHMAP_FOREACH_KEY(st_a, path, a) { -+ st_b = hashmap_get(b, path); -+ if (!st_b) -+ return false; -+ -+ if (!stat_inode_unmodified(st_a, st_b)) -+ return false; -+ } -+ -+ return true; -+} -+ - int network_reload(Manager *manager) { - OrderedHashmap *new_networks = NULL; - Network *n, *old; -@@ -540,14 +562,15 @@ int network_reload(Manager *manager) { - - ORDERED_HASHMAP_FOREACH(n, new_networks) { - r = network_get_by_name(manager, n->name, &old); -- if (r < 0) -- continue; /* The .network file is new. */ -- -- if (n->timestamp != old->timestamp) -- continue; /* The .network file is modified. */ -+ if (r < 0) { -+ log_debug("Found new .network file: %s", n->filename); -+ continue; -+ } - -- if (!streq(n->filename, old->filename)) -+ if (!stats_by_path_equal(n->stats_by_path, old->stats_by_path)) { -+ log_debug("Found updated .network file: %s", n->filename); - continue; -+ } - - r = ordered_hashmap_replace(new_networks, old->name, old); - if (r < 0) -@@ -573,6 +596,7 @@ static Network *network_free(Network *network) { - return NULL; - - free(network->filename); -+ hashmap_free(network->stats_by_path); - - net_match_clear(&network->match); - condition_free_list(network->conditions); -diff --git a/src/network/networkd-network.h b/src/network/networkd-network.h -index b39063fe8a..c8d24a415f 100644 ---- a/src/network/networkd-network.h -+++ b/src/network/networkd-network.h -@@ -72,7 +72,7 @@ struct Network { - - char *name; - char *filename; -- usec_t timestamp; -+ Hashmap *stats_by_path; - char *description; - - /* [Match] section */ -diff --git a/src/shared/conf-parser.c b/src/shared/conf-parser.c -index d0ac1b2660..9a367d757f 100644 ---- a/src/shared/conf-parser.c -+++ b/src/shared/conf-parser.c -@@ -264,21 +264,18 @@ int config_parse( - const void *table, - ConfigParseFlags flags, - void *userdata, -- usec_t *latest_mtime) { -+ struct stat *ret_stat) { - - _cleanup_free_ char *section = NULL, *continuation = NULL; - _cleanup_fclose_ FILE *ours = NULL; - unsigned line = 0, section_line = 0; - bool section_ignored = false, bom_seen = false; -+ struct stat st; - int r, fd; -- usec_t mtime; - - assert(filename); - assert(lookup); - -- /* latest_mtime is an input-output parameter: it will be updated if the mtime of the file we're -- * looking at is later than the current *latest_mtime value. */ -- - if (!f) { - f = ours = fopen(filename, "re"); - if (!f) { -@@ -287,22 +284,28 @@ int config_parse( - if ((flags & CONFIG_PARSE_WARN) || errno == ENOENT) - log_full_errno(errno == ENOENT ? LOG_DEBUG : LOG_ERR, errno, - "Failed to open configuration file '%s': %m", filename); -- return errno == ENOENT ? 0 : -errno; -+ -+ if (errno == ENOENT) { -+ if (ret_stat) -+ *ret_stat = (struct stat) {}; -+ -+ return 0; -+ } -+ -+ return -errno; - } - } - - fd = fileno(f); - if (fd >= 0) { /* stream might not have an fd, let's be careful hence */ -- struct stat st; - - if (fstat(fd, &st) < 0) - return log_full_errno(FLAGS_SET(flags, CONFIG_PARSE_WARN) ? LOG_ERR : LOG_DEBUG, errno, - "Failed to fstat(%s): %m", filename); - - (void) stat_warn_permissions(filename, &st); -- mtime = timespec_load(&st.st_mtim); - } else -- mtime = 0; -+ st = (struct stat) {}; - - for (;;) { - _cleanup_free_ char *buf = NULL; -@@ -422,12 +425,43 @@ int config_parse( - } - } - -- if (latest_mtime) -- *latest_mtime = MAX(*latest_mtime, mtime); -+ if (ret_stat) -+ *ret_stat = st; - - return 1; - } - -+static int hashmap_put_stats_by_path(Hashmap **stats_by_path, const char *path, const struct stat *st) { -+ _cleanup_free_ struct stat *st_copy = NULL; -+ _cleanup_free_ char *path_copy = NULL; -+ int r; -+ -+ assert(stats_by_path); -+ assert(path); -+ assert(st); -+ -+ r = hashmap_ensure_allocated(stats_by_path, &path_hash_ops_free_free); -+ if (r < 0) -+ return r; -+ -+ st_copy = newdup(struct stat, st, 1); -+ if (!st_copy) -+ return -ENOMEM; -+ -+ path_copy = strdup(path); -+ if (!path) -+ return -ENOMEM; -+ -+ r = hashmap_put(*stats_by_path, path_copy, st_copy); -+ if (r < 0) -+ return r; -+ -+ assert(r > 0); -+ TAKE_PTR(path_copy); -+ TAKE_PTR(st_copy); -+ return 0; -+} -+ - static int config_parse_many_files( - const char* const* conf_files, - char **files, -@@ -436,30 +470,53 @@ static int config_parse_many_files( - const void *table, - ConfigParseFlags flags, - void *userdata, -- usec_t *ret_mtime) { -+ Hashmap **ret_stats_by_path) { - -- usec_t mtime = 0; -+ _cleanup_hashmap_free_ Hashmap *stats_by_path = NULL; -+ struct stat st; - char **fn; - int r; - -+ if (ret_stats_by_path) { -+ stats_by_path = hashmap_new(&path_hash_ops_free_free); -+ if (!stats_by_path) -+ return -ENOMEM; -+ } -+ - /* First read the first found main config file. */ - STRV_FOREACH(fn, (char**) conf_files) { -- r = config_parse(NULL, *fn, NULL, sections, lookup, table, flags, userdata, &mtime); -+ r = config_parse(NULL, *fn, NULL, sections, lookup, table, flags, userdata, &st); - if (r < 0) - return r; -- if (r > 0) -- break; -+ if (r == 0) -+ continue; -+ -+ if (ret_stats_by_path) { -+ r = hashmap_put_stats_by_path(&stats_by_path, *fn, &st); -+ if (r < 0) -+ return r; -+ } -+ -+ break; - } - - /* Then read all the drop-ins. */ - STRV_FOREACH(fn, files) { -- r = config_parse(NULL, *fn, NULL, sections, lookup, table, flags, userdata, &mtime); -+ r = config_parse(NULL, *fn, NULL, sections, lookup, table, flags, userdata, &st); - if (r < 0) - return r; -+ if (r == 0) -+ continue; -+ -+ if (ret_stats_by_path) { -+ r = hashmap_put_stats_by_path(&stats_by_path, *fn, &st); -+ if (r < 0) -+ return r; -+ } - } - -- if (ret_mtime) -- *ret_mtime = mtime; -+ if (ret_stats_by_path) -+ *ret_stats_by_path = TAKE_PTR(stats_by_path); - - return 0; - } -@@ -473,7 +530,7 @@ int config_parse_many_nulstr( - const void *table, - ConfigParseFlags flags, - void *userdata, -- usec_t *ret_mtime) { -+ Hashmap **ret_stats_by_path) { - - _cleanup_strv_free_ char **files = NULL; - int r; -@@ -484,7 +541,7 @@ int config_parse_many_nulstr( - - return config_parse_many_files(STRV_MAKE_CONST(conf_file), - files, sections, lookup, table, flags, userdata, -- ret_mtime); -+ ret_stats_by_path); - } - - /* Parse each config file in the directories specified as strv. */ -@@ -497,7 +554,7 @@ int config_parse_many( - const void *table, - ConfigParseFlags flags, - void *userdata, -- usec_t *ret_mtime) { -+ Hashmap **ret_stats_by_path) { - - _cleanup_strv_free_ char **dropin_dirs = NULL; - _cleanup_strv_free_ char **files = NULL; -@@ -513,7 +570,7 @@ int config_parse_many( - if (r < 0) - return r; - -- return config_parse_many_files(conf_files, files, sections, lookup, table, flags, userdata, ret_mtime); -+ return config_parse_many_files(conf_files, files, sections, lookup, table, flags, userdata, ret_stats_by_path); - } - - #define DEFINE_PARSER(type, vartype, conv_func) \ -diff --git a/src/shared/conf-parser.h b/src/shared/conf-parser.h -index c3a138274d..f893a53aa0 100644 ---- a/src/shared/conf-parser.h -+++ b/src/shared/conf-parser.h -@@ -6,8 +6,10 @@ - #include <stddef.h> - #include <stdio.h> - #include <syslog.h> -+#include <sys/stat.h> - - #include "alloc-util.h" -+#include "hashmap.h" - #include "log.h" - #include "macro.h" - #include "time-util.h" -@@ -89,7 +91,7 @@ int config_parse( - const void *table, - ConfigParseFlags flags, - void *userdata, -- usec_t *latest_mtime); /* input/output, possibly NULL */ -+ struct stat *ret_stat); /* possibly NULL */ - - int config_parse_many_nulstr( - const char *conf_file, /* possibly NULL */ -@@ -99,7 +101,7 @@ int config_parse_many_nulstr( - const void *table, - ConfigParseFlags flags, - void *userdata, -- usec_t *ret_mtime); /* possibly NULL */ -+ Hashmap **ret_stats_by_path); /* possibly NULL */ - - int config_parse_many( - const char* const* conf_files, /* possibly empty */ -@@ -110,7 +112,7 @@ int config_parse_many( - const void *table, - ConfigParseFlags flags, - void *userdata, -- usec_t *ret_mtime); /* possibly NULL */ -+ Hashmap **ret_stats_by_path); /* possibly NULL */ - - CONFIG_PARSER_PROTOTYPE(config_parse_int); - CONFIG_PARSER_PROTOTYPE(config_parse_unsigned); --- -2.33.0.1079.g6e70778dc9-goog - diff --git a/meta-phosphor/recipes-core/systemd/systemd_249.5.bbappend b/meta-phosphor/recipes-core/systemd/systemd_249.5.bbappend deleted file mode 100644 index 848d8241ee..0000000000 --- a/meta-phosphor/recipes-core/systemd/systemd_249.5.bbappend +++ /dev/null @@ -1,2 +0,0 @@ -# Fix https://github.com/systemd/systemd/issues/21113 -SRC_URI += "file://0001-conf-parse-make-config_parse_many-optionally-save-st.patch" |