[OE-core] [PATCH 1/1] systemd: Upgrade to 199
Khem Raj
raj.khem at gmail.com
Fri Mar 29 05:28:39 UTC 2013
On Mar 28, 2013, at 5:21 AM, Martin Jansa <martin.jansa at gmail.com> wrote:
> On Thu, Mar 28, 2013 at 12:48:29AM -0700, Khem Raj wrote:
>> udevadm is now moved from /usr/bin to /bin so account for that
>> bash completions for udevadm should be packages with udev-utils
>> since thats where udevadm itself is, they were in systemd package
>> which is not correct location for it
>>
>> Backport patches for readahead fixes on spinning disks
>> and to tackle error reported on missing /etc/sysctl.conf
>
> Looks like it creates few new (empty) directories:
>
> WARNING: QA Issue: systemd: Files/directories were installed but not
> shipped
> /etc/kernel
> /etc/kernel/install.d
> /usr/lib/kernel
> /usr/lib/kernel/install.d
OK I have created a new package called systems-kernel-install and these dirs along with
kernel-install binary are moved into the new package and updated the pull request.
>
> Doesn't look very useful for our use-case, maybe whole kernel-install
> should be in separate package.
> http://www.freedesktop.org/software/systemd/man/kernel-install.html
>
>>
>> Signed-off-by: Khem Raj <raj.khem at gmail.com>
>> ---
>> .../0002-readahead-chunk-on-spinning-media.patch | 142 ++++++++++++++++++++
>> .../systemd/systemd/0003-readahead-cleanups.patch | 86 ++++++++++++
>> ...ctl-Handle-missing-etc-sysctl.conf-proper.patch | 33 +++++
>> .../systemd/{systemd_198.bb => systemd_199.bb} | 11 +-
>> 4 files changed, 268 insertions(+), 4 deletions(-)
>> create mode 100644 meta/recipes-core/systemd/systemd/0002-readahead-chunk-on-spinning-media.patch
>> create mode 100644 meta/recipes-core/systemd/systemd/0003-readahead-cleanups.patch
>> create mode 100644 meta/recipes-core/systemd/systemd/0013-systemd-sysctl-Handle-missing-etc-sysctl.conf-proper.patch
>> rename meta/recipes-core/systemd/{systemd_198.bb => systemd_199.bb} (95%)
>>
>> diff --git a/meta/recipes-core/systemd/systemd/0002-readahead-chunk-on-spinning-media.patch b/meta/recipes-core/systemd/systemd/0002-readahead-chunk-on-spinning-media.patch
>> new file mode 100644
>> index 0000000..d57a01c
>> --- /dev/null
>> +++ b/meta/recipes-core/systemd/systemd/0002-readahead-chunk-on-spinning-media.patch
>> @@ -0,0 +1,142 @@
>> +Upstream-Status: Backport
>> +
>> +-Khem 2013/03/28
>> +
>> +From 94243ef299425d6c7089a7a05c48c9bb8f6cf3da Mon Sep 17 00:00:00 2001
>> +From: Auke Kok <auke-jan.h.kok at intel.com>
>> +Date: Fri, 22 Mar 2013 15:09:45 -0700
>> +Subject: [PATCH 02/17] readahead: chunk on spinning media
>> +
>> +Readahead has all sorts of bad side effects depending on your
>> +storage media. On rotating disks, it may be degrading startup
>> +performance if enough requests are queued spanning linearly
>> +over all blocks early at boot, and mount, blkid and friends
>> +want to insert reads to the start of these block devices after.
>> +
>> +The end result is that on spinning disks with ext3/4 that udev
>> +and mounts take a very long time, and nothing really happens until
>> +readahead is completely finished.
>> +
>> +This has the net effect that the CPU is almost entirely idle
>> +for the entire period that readahead is working. We could have
>> +finished starting up quite a lot of services in this time if
>> +we were smarter at how we do readahead.
>> +
>> +This patch sorts all requests into 2 second "chunks" and sub-sorts
>> +each chunk by block. This adds a single cross-drive seek per "chunk"
>> +but has the benefit that we will have a lot of the blocks we need
>> +early on in the boot sequence loaded into memory faster.
>> +
>> +For a comparison of how before/after bootcharts look (ext4 on a
>> +mobile 5400rpm 250GB drive) please look at:
>> +
>> + http://foo-projects.org/~sofar/blocked-tests/
>> +
>> +There are bootcharts in the "before" and "after" folders where you
>> +should be able to see that many low-level services finish 5-7
>> +seconds earlier with the patch applied (after).
>> +---
>> + Makefile.am | 2 +-
>> + src/readahead/readahead-collect.c | 28 +++++++++++++++++++++++++---
>> + 2 files changed, 26 insertions(+), 4 deletions(-)
>> +
>> +diff --git a/Makefile.am b/Makefile.am
>> +index 37c1cc2..5861976 100644
>> +--- a/Makefile.am
>> ++++ b/Makefile.am
>> +@@ -2956,7 +2956,7 @@ systemd_readahead_SOURCES = \
>> + systemd_readahead_LDADD = \
>> + libsystemd-shared.la \
>> + libsystemd-daemon.la \
>> +- libudev.la
>> ++ libudev.la -lm
>> +
>> + dist_doc_DATA += \
>> + src/readahead/sd-readahead.c \
>> +diff --git a/src/readahead/readahead-collect.c b/src/readahead/readahead-collect.c
>> +index 5d07f47..5d22949 100644
>> +--- a/src/readahead/readahead-collect.c
>> ++++ b/src/readahead/readahead-collect.c
>> +@@ -42,6 +42,7 @@
>> + #include <sys/vfs.h>
>> + #include <getopt.h>
>> + #include <sys/inotify.h>
>> ++#include <math.h>
>> +
>> + #ifdef HAVE_FANOTIFY_INIT
>> + #include <sys/fanotify.h>
>> +@@ -67,6 +68,7 @@
>> + */
>> +
>> + static ReadaheadShared *shared = NULL;
>> ++static struct timespec starttime;
>> +
>> + /* Avoid collisions with the NULL pointer */
>> + #define SECTOR_TO_PTR(s) ULONG_TO_PTR((s)+1)
>> +@@ -205,6 +207,7 @@ static unsigned long fd_first_block(int fd) {
>> + struct item {
>> + const char *path;
>> + unsigned long block;
>> ++ unsigned long bin;
>> + };
>> +
>> + static int qsort_compare(const void *a, const void *b) {
>> +@@ -213,6 +216,13 @@ static int qsort_compare(const void *a, const void *b) {
>> + i = a;
>> + j = b;
>> +
>> ++ /* sort by bin first */
>> ++ if (i->bin < j->bin)
>> ++ return -1;
>> ++ if (i->bin > j->bin)
>> ++ return 1;
>> ++
>> ++ /* then sort by sector */
>> + if (i->block < j->block)
>> + return -1;
>> + if (i->block > j->block)
>> +@@ -250,6 +260,8 @@ static int collect(const char *root) {
>> + goto finish;
>> + }
>> +
>> ++ clock_gettime(CLOCK_MONOTONIC, &starttime);
>> ++
>> + /* If there's no pack file yet we lower the kernel readahead
>> + * so that mincore() is accurate. If there is a pack file
>> + * already we assume it is accurate enough so that kernel
>> +@@ -447,10 +459,21 @@ static int collect(const char *root) {
>> + free(p);
>> + else {
>> + unsigned long ul;
>> ++ struct timespec ts;
>> ++ struct item *entry;
>> ++
>> ++ entry = new0(struct item, 1);
>> +
>> + ul = fd_first_block(m->fd);
>> +
>> +- if ((k = hashmap_put(files, p, SECTOR_TO_PTR(ul))) < 0) {
>> ++ clock_gettime(CLOCK_MONOTONIC, &ts);
>> ++
>> ++ entry->block = ul;
>> ++ entry->path = strdup(p);
>> ++ entry->bin = round((ts.tv_sec - starttime.tv_sec +
>> ++ ((ts.tv_nsec - starttime.tv_nsec) / 1000000000.0)) / 2.0);
>> ++
>> ++ if ((k = hashmap_put(files, p, entry)) < 0) {
>> + log_warning("set_put() failed: %s", strerror(-k));
>> + free(p);
>> + }
>> +@@ -518,8 +541,7 @@ done:
>> +
>> + j = ordered;
>> + HASHMAP_FOREACH_KEY(q, p, files, i) {
>> +- j->path = p;
>> +- j->block = PTR_TO_SECTOR(q);
>> ++ memcpy(j, q, sizeof(struct item));
>> + j++;
>> + }
>> +
>> +--
>> +1.7.9.5
>> +
>> diff --git a/meta/recipes-core/systemd/systemd/0003-readahead-cleanups.patch b/meta/recipes-core/systemd/systemd/0003-readahead-cleanups.patch
>> new file mode 100644
>> index 0000000..e0b68df
>> --- /dev/null
>> +++ b/meta/recipes-core/systemd/systemd/0003-readahead-cleanups.patch
>> @@ -0,0 +1,86 @@
>> +Upstream-Status: Backport
>> +
>> +-Khem 2013/03/28
>> +
>> +From b0640287f784a320661f7206c9ade07b99003fd5 Mon Sep 17 00:00:00 2001
>> +From: Auke Kok <auke-jan.h.kok at intel.com>
>> +Date: Tue, 26 Mar 2013 11:13:47 -0700
>> +Subject: [PATCH 03/17] readahead: cleanups
>> +
>> +- check for OOM
>> +- no need to use floats and round()
>> +---
>> + Makefile.am | 2 +-
>> + src/readahead/readahead-collect.c | 20 ++++++++++++++------
>> + 2 files changed, 15 insertions(+), 7 deletions(-)
>> +
>> +diff --git a/Makefile.am b/Makefile.am
>> +index 5861976..37c1cc2 100644
>> +--- a/Makefile.am
>> ++++ b/Makefile.am
>> +@@ -2956,7 +2956,7 @@ systemd_readahead_SOURCES = \
>> + systemd_readahead_LDADD = \
>> + libsystemd-shared.la \
>> + libsystemd-daemon.la \
>> +- libudev.la -lm
>> ++ libudev.la
>> +
>> + dist_doc_DATA += \
>> + src/readahead/sd-readahead.c \
>> +diff --git a/src/readahead/readahead-collect.c b/src/readahead/readahead-collect.c
>> +index 5d22949..e2fd8df 100644
>> +--- a/src/readahead/readahead-collect.c
>> ++++ b/src/readahead/readahead-collect.c
>> +@@ -68,7 +68,7 @@
>> + */
>> +
>> + static ReadaheadShared *shared = NULL;
>> +-static struct timespec starttime;
>> ++static usec_t starttime;
>> +
>> + /* Avoid collisions with the NULL pointer */
>> + #define SECTOR_TO_PTR(s) ULONG_TO_PTR((s)+1)
>> +@@ -260,7 +260,7 @@ static int collect(const char *root) {
>> + goto finish;
>> + }
>> +
>> +- clock_gettime(CLOCK_MONOTONIC, &starttime);
>> ++ starttime = now(CLOCK_MONOTONIC);
>> +
>> + /* If there's no pack file yet we lower the kernel readahead
>> + * so that mincore() is accurate. If there is a pack file
>> +@@ -459,19 +459,27 @@ static int collect(const char *root) {
>> + free(p);
>> + else {
>> + unsigned long ul;
>> +- struct timespec ts;
>> ++ usec_t entrytime;
>> + struct item *entry;
>> +
>> + entry = new0(struct item, 1);
>> ++ if (!entry) {
>> ++ r = log_oom();
>> ++ goto finish;
>> ++ }
>> +
>> + ul = fd_first_block(m->fd);
>> +
>> +- clock_gettime(CLOCK_MONOTONIC, &ts);
>> ++ entrytime = now(CLOCK_MONOTONIC);
>> +
>> + entry->block = ul;
>> + entry->path = strdup(p);
>> +- entry->bin = round((ts.tv_sec - starttime.tv_sec +
>> +- ((ts.tv_nsec - starttime.tv_nsec) / 1000000000.0)) / 2.0);
>> ++ if (!entry->path) {
>> ++ free(entry);
>> ++ r = log_oom();
>> ++ goto finish;
>> ++ }
>> ++ entry->bin = (entrytime - starttime) / 2000000;
>> +
>> + if ((k = hashmap_put(files, p, entry)) < 0) {
>> + log_warning("set_put() failed: %s", strerror(-k));
>> +--
>> +1.7.9.5
>> +
>> diff --git a/meta/recipes-core/systemd/systemd/0013-systemd-sysctl-Handle-missing-etc-sysctl.conf-proper.patch b/meta/recipes-core/systemd/systemd/0013-systemd-sysctl-Handle-missing-etc-sysctl.conf-proper.patch
>> new file mode 100644
>> index 0000000..f2c8e02
>> --- /dev/null
>> +++ b/meta/recipes-core/systemd/systemd/0013-systemd-sysctl-Handle-missing-etc-sysctl.conf-proper.patch
>> @@ -0,0 +1,33 @@
>> +Upstream-Status: Backport
>> +
>> +-Khem 2013/03/28
>> +
>> +From 6f6fad96addf6b00b55c98cc0d0d8026b0c1e7ca Mon Sep 17 00:00:00 2001
>> +From: Eelco Dolstra <eelco.dolstra at logicblox.com>
>> +Date: Wed, 27 Mar 2013 13:41:59 +0100
>> +Subject: [PATCH 13/17] systemd-sysctl: Handle missing /etc/sysctl.conf
>> + properly
>> +
>> +Since fabe5c0e5fce730aa66e10a9c4f9fdd443d7aeda, systemd-sysctl returns
>> +a non-zero exit code if /etc/sysctl.conf does not exist, due to a
>> +broken ENOENT check.
>> +---
>> + src/sysctl/sysctl.c | 2 +-
>> + 1 file changed, 1 insertion(+), 1 deletion(-)
>> +
>> +diff --git a/src/sysctl/sysctl.c b/src/sysctl/sysctl.c
>> +index 2d43660..79f3f77 100644
>> +--- a/src/sysctl/sysctl.c
>> ++++ b/src/sysctl/sysctl.c
>> +@@ -125,7 +125,7 @@ static int parse_file(Hashmap *sysctl_options, const char *path, bool ignore_eno
>> +
>> + r = search_and_fopen_nulstr(path, "re", conf_file_dirs, &f);
>> + if (r < 0) {
>> +- if (ignore_enoent && errno == -ENOENT)
>> ++ if (ignore_enoent && r == -ENOENT)
>> + return 0;
>> +
>> + log_error("Failed to open file '%s', ignoring: %s", path, strerror(-r));
>> +--
>> +1.7.9.5
>> +
>> diff --git a/meta/recipes-core/systemd/systemd_198.bb b/meta/recipes-core/systemd/systemd_199.bb
>> similarity index 95%
>> rename from meta/recipes-core/systemd/systemd_198.bb
>> rename to meta/recipes-core/systemd/systemd_199.bb
>> index 6a8db51..74b14af 100644
>> --- a/meta/recipes-core/systemd/systemd_198.bb
>> +++ b/meta/recipes-core/systemd/systemd_199.bb
>> @@ -23,10 +23,13 @@ SRC_URI = "http://www.freedesktop.org/software/systemd/systemd-${PV}.tar.xz \
>> file://var-run.conf \
>> ${UCLIBCPATCHES} \
>> file://00-create-volatile.conf \
>> + file://0002-readahead-chunk-on-spinning-media.patch \
>> + file://0003-readahead-cleanups.patch \
>> + file://0013-systemd-sysctl-Handle-missing-etc-sysctl.conf-proper.patch \
>> file://init \
>> "
>> -SRC_URI[md5sum] = "26a75e2a310f8c1c1ea9ec26ddb171c5"
>> -SRC_URI[sha256sum] = "444492355e5ff0ad99e0691ecaff1081ee8d45901580f47ba8b74e56107c71bf"
>> +SRC_URI[md5sum] = "4bb13f84ce211e93f0141774a90a2322"
>> +SRC_URI[sha256sum] = "8c4462a04f3ecf7f083782e5e0687913b1d33c6444bf20fa2f31df9222965fed"
>>
>> UCLIBCPATCHES = ""
>> UCLIBCPATCHES_libc-uclibc = "file://systemd-pam-configure-check-uclibc.patch \
>> @@ -114,7 +117,7 @@ PACKAGES_DYNAMIC += "^lib(udev|gudev|systemd).*"
>> PACKAGES =+ "${PN}-gui ${PN}-vconsole-setup ${PN}-initramfs ${PN}-analyze"
>>
>> USERADD_PACKAGES = "${PN}"
>> -GROUPADD_PARAM_${PN} = "-r lock"
>> +GROUPADD_PARAM_${PN} = "-r lock; -r systemd-journal"
>>
>> FILES_${PN}-analyze = "${base_bindir}/systemd-analyze"
>>
>> @@ -224,7 +227,7 @@ FILES_udev += "${base_sbindir}/udevd \
>> FILES_udev-consolekit += "/lib/ConsoleKit"
>> RDEPENDS_udev-consolekit += "${@base_contains('DISTRO_FEATURES', 'x11', 'consolekit', '', d)}"
>>
>> -FILES_udev-utils = "${bindir}/udevadm"
>> +FILES_udev-utils = "${base_bindir}/udevadm ${datadir}/bash-completion/completions/udevadm"
>>
>> FILES_udev-hwdb = "${base_libdir}/udev/hwdb.d"
>>
>> --
>> 1.7.9.5
>>
>>
>> _______________________________________________
>> Openembedded-core mailing list
>> Openembedded-core at lists.openembedded.org
>> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
>
> --
> Martin 'JaMa' Jansa jabber: Martin.Jansa at gmail.com
More information about the Openembedded-core
mailing list