Hi Richard There was a followup patch to this and you took the old one. Thats ok. I have refreshed the pull tree again and the follow up patch is there. Please pull
-Khem On Mar 29, 2013, at 1:12 AM, Koen Kooi <k...@dominion.thruhere.net> wrote: > > Op 29 mrt. 2013, om 06:28 heeft Khem Raj <raj.k...@gmail.com> het volgende > geschreven: > >> >> On Mar 28, 2013, at 5:21 AM, Martin Jansa <martin.ja...@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. > > There's a new releases, 200, mostly bugfixes and some hwdp and keymap > updates. Your 199 patch has the most important fixes, so I'm not sure if it's > worth to respin to 200 or get this in and update to 200 (or 201) later. > >> >> >>> >>> 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.k...@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....@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....@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.dols...@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@lists.openembedded.org >>>> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core >>> >>> -- >>> Martin 'JaMa' Jansa jabber: martin.ja...@gmail.com >> >> >> _______________________________________________ >> Openembedded-core mailing list >> Openembedded-core@lists.openembedded.org >> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core > _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core