New upstream release

This commit is contained in:
Michal Sekletar 2016-02-11 18:32:50 +01:00
parent 0a417f082a
commit 5a1e61f28b
7 changed files with 22 additions and 418 deletions

View File

@ -1,166 +0,0 @@
From 32a4ce451c3aa579d768005decd5342ba319a0e7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
Date: Tue, 1 Dec 2015 22:35:16 -0500
Subject: [PATCH 1/4] tests: turn check if manager cannot be intialized into
macro
We need to check the same thing in multiple tests. Use a shared
macro to make it easier to update the list of errnos.
Change the errno code for "unitialized cgroup fs" for ENOMEDIUM.
Exec format error looks like something more serious.
This fixes test-execute invocation in mock.
(cherry picked from commit 8b3aa503c171acdb9ec63484a8c50e2680d31e79)
Resolves: #1286249
---
src/basic/cgroup-util.c | 2 +-
src/libsystemd/sd-bus/test-bus-creds.c | 2 +-
src/test/test-engine.c | 3 ++-
src/test/test-execute.c | 3 ++-
src/test/test-helper.h | 12 ++++++++++++
src/test/test-path.c | 3 ++-
src/test/test-sched-prio.c | 3 ++-
7 files changed, 22 insertions(+), 6 deletions(-)
diff --git a/src/basic/cgroup-util.c b/src/basic/cgroup-util.c
index f7fc2c2..263c726 100644
--- a/src/basic/cgroup-util.c
+++ b/src/basic/cgroup-util.c
@@ -2130,7 +2130,7 @@ int cg_unified(void) {
else if (F_TYPE_EQUAL(fs.f_type, TMPFS_MAGIC))
unified_cache = false;
else
- return -ENOEXEC;
+ return -ENOMEDIUM;
return unified_cache;
}
diff --git a/src/libsystemd/sd-bus/test-bus-creds.c b/src/libsystemd/sd-bus/test-bus-creds.c
index bd0101a..de337bb 100644
--- a/src/libsystemd/sd-bus/test-bus-creds.c
+++ b/src/libsystemd/sd-bus/test-bus-creds.c
@@ -29,7 +29,7 @@ int main(int argc, char *argv[]) {
_cleanup_bus_creds_unref_ sd_bus_creds *creds = NULL;
int r;
- if (cg_unified() == -ENOEXEC) {
+ if (cg_unified() == -ENOMEDIUM) {
puts("Skipping test: /sys/fs/cgroup/ not available");
return EXIT_TEST_SKIP;
}
diff --git a/src/test/test-engine.c b/src/test/test-engine.c
index 4f14c58..f09df43 100644
--- a/src/test/test-engine.c
+++ b/src/test/test-engine.c
@@ -25,6 +25,7 @@
#include "bus-util.h"
#include "manager.h"
+#include "test-helper.h"
int main(int argc, char *argv[]) {
_cleanup_bus_error_free_ sd_bus_error err = SD_BUS_ERROR_NULL;
@@ -38,7 +39,7 @@ int main(int argc, char *argv[]) {
/* prepare the test */
assert_se(set_unit_path(TEST_DIR) >= 0);
r = manager_new(MANAGER_USER, true, &m);
- if (IN_SET(r, -EPERM, -EACCES, -EADDRINUSE, -EHOSTDOWN, -ENOENT, -ENOEXEC)) {
+ if (MANAGER_SKIP_TEST(r)) {
printf("Skipping test: manager_new: %s", strerror(-r));
return EXIT_TEST_SKIP;
}
diff --git a/src/test/test-execute.c b/src/test/test-execute.c
index 03ec0fc..1ab10fb 100644
--- a/src/test/test-execute.c
+++ b/src/test/test-execute.c
@@ -29,6 +29,7 @@
#include "mkdir.h"
#include "path-util.h"
#include "rm-rf.h"
+#include "test-helper.h"
#include "unit.h"
#include "util.h"
@@ -296,7 +297,7 @@ int main(int argc, char *argv[]) {
assert_se(unsetenv("VAR3") == 0);
r = manager_new(MANAGER_USER, true, &m);
- if (IN_SET(r, -EPERM, -EACCES, -EADDRINUSE, -EHOSTDOWN, -ENOENT)) {
+ if (MANAGER_SKIP_TEST(r)) {
printf("Skipping test: manager_new: %s", strerror(-r));
return EXIT_TEST_SKIP;
}
diff --git a/src/test/test-helper.h b/src/test/test-helper.h
index f75dd33..c0f6a91 100644
--- a/src/test/test-helper.h
+++ b/src/test/test-helper.h
@@ -23,9 +23,21 @@
#include "sd-daemon.h"
+#include "macro.h"
+
#define TEST_REQ_RUNNING_SYSTEMD(x) \
if (sd_booted() > 0) { \
x; \
} else { \
printf("systemd not booted skipping '%s'\n", #x); \
}
+
+#define MANAGER_SKIP_TEST(r) \
+ IN_SET(r, \
+ -EPERM, \
+ -EACCES, \
+ -EADDRINUSE, \
+ -EHOSTDOWN, \
+ -ENOENT, \
+ -ENOMEDIUM /* cannot determine cgroup */ \
+ )
diff --git a/src/test/test-path.c b/src/test/test-path.c
index 8302bdd..6e6a72d 100644
--- a/src/test/test-path.c
+++ b/src/test/test-path.c
@@ -29,6 +29,7 @@
#include "rm-rf.h"
#include "string-util.h"
#include "strv.h"
+#include "test-helper.h"
#include "unit.h"
#include "util.h"
@@ -44,7 +45,7 @@ static int setup_test(Manager **m) {
assert_se(m);
r = manager_new(MANAGER_USER, true, &tmp);
- if (IN_SET(r, -EPERM, -EACCES, -EADDRINUSE, -EHOSTDOWN, -ENOENT, -ENOEXEC)) {
+ if (MANAGER_SKIP_TEST(r)) {
printf("Skipping test: manager_new: %s", strerror(-r));
return -EXIT_TEST_SKIP;
}
diff --git a/src/test/test-sched-prio.c b/src/test/test-sched-prio.c
index 8396ae6..7958a6c 100644
--- a/src/test/test-sched-prio.c
+++ b/src/test/test-sched-prio.c
@@ -23,6 +23,7 @@
#include "macro.h"
#include "manager.h"
+#include "test-helper.h"
int main(int argc, char *argv[]) {
Manager *m = NULL;
@@ -35,7 +36,7 @@ int main(int argc, char *argv[]) {
/* prepare the test */
assert_se(set_unit_path(TEST_DIR) >= 0);
r = manager_new(MANAGER_USER, true, &m);
- if (IN_SET(r, -EPERM, -EACCES, -EADDRINUSE, -EHOSTDOWN, -ENOENT, -ENOEXEC)) {
+ if (MANAGER_SKIP_TEST(r)) {
printf("Skipping test: manager_new: %s", strerror(-r));
return EXIT_TEST_SKIP;
}
--
2.5.0

View File

@ -1,29 +0,0 @@
From 274e72394432cc35af5c9e7b91e49f3dc5180243 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
Date: Tue, 1 Dec 2015 22:53:23 -0500
Subject: [PATCH 2/4] lz4: fix size check which had no chance of working on
big-endian
(cherry picked from commit b3aa622929f81b44974d182636b1fde8b2a506e5)
Resolves: #1286249
---
src/journal/compress.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/journal/compress.c b/src/journal/compress.c
index e1ca0a8..1a3d2cd 100644
--- a/src/journal/compress.c
+++ b/src/journal/compress.c
@@ -201,7 +201,7 @@ int decompress_blob_lz4(const void *src, uint64_t src_size,
return -EBADMSG;
size = le64toh( *(le64_t*)src );
- if (size < 0 || (le64_t) size != *(le64_t*)src)
+ if (size < 0 || (unsigned) size != le64toh(*(le64_t*)src))
return -EFBIG;
if ((size_t) size > *dst_alloc_size) {
out = realloc(*dst, size);
--
2.5.0

View File

@ -1,70 +0,0 @@
From 98628af16f2ec4f7fbaa9bc23ae8606fc9adcc1c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
Date: Tue, 1 Dec 2015 23:44:27 -0500
Subject: [PATCH 3/4] tests: fix newlines in skip message
(cherry picked from commit 1d31abf7920460f3c9bb9744a255e0e518dce00d)
Resolves: #1286249
---
src/test/test-engine.c | 2 +-
src/test/test-execute.c | 2 +-
src/test/test-path.c | 2 +-
src/test/test-sched-prio.c | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/test/test-engine.c b/src/test/test-engine.c
index f09df43..e3ded1b 100644
--- a/src/test/test-engine.c
+++ b/src/test/test-engine.c
@@ -40,7 +40,7 @@ int main(int argc, char *argv[]) {
assert_se(set_unit_path(TEST_DIR) >= 0);
r = manager_new(MANAGER_USER, true, &m);
if (MANAGER_SKIP_TEST(r)) {
- printf("Skipping test: manager_new: %s", strerror(-r));
+ printf("Skipping test: manager_new: %s\n", strerror(-r));
return EXIT_TEST_SKIP;
}
assert_se(r >= 0);
diff --git a/src/test/test-execute.c b/src/test/test-execute.c
index 1ab10fb..753afad 100644
--- a/src/test/test-execute.c
+++ b/src/test/test-execute.c
@@ -298,7 +298,7 @@ int main(int argc, char *argv[]) {
r = manager_new(MANAGER_USER, true, &m);
if (MANAGER_SKIP_TEST(r)) {
- printf("Skipping test: manager_new: %s", strerror(-r));
+ printf("Skipping test: manager_new: %s\n", strerror(-r));
return EXIT_TEST_SKIP;
}
assert_se(r >= 0);
diff --git a/src/test/test-path.c b/src/test/test-path.c
index 6e6a72d..7a3b145 100644
--- a/src/test/test-path.c
+++ b/src/test/test-path.c
@@ -46,7 +46,7 @@ static int setup_test(Manager **m) {
r = manager_new(MANAGER_USER, true, &tmp);
if (MANAGER_SKIP_TEST(r)) {
- printf("Skipping test: manager_new: %s", strerror(-r));
+ printf("Skipping test: manager_new: %s\n", strerror(-r));
return -EXIT_TEST_SKIP;
}
assert_se(r >= 0);
diff --git a/src/test/test-sched-prio.c b/src/test/test-sched-prio.c
index 7958a6c..60b5160 100644
--- a/src/test/test-sched-prio.c
+++ b/src/test/test-sched-prio.c
@@ -37,7 +37,7 @@ int main(int argc, char *argv[]) {
assert_se(set_unit_path(TEST_DIR) >= 0);
r = manager_new(MANAGER_USER, true, &m);
if (MANAGER_SKIP_TEST(r)) {
- printf("Skipping test: manager_new: %s", strerror(-r));
+ printf("Skipping test: manager_new: %s\n", strerror(-r));
return EXIT_TEST_SKIP;
}
assert_se(r >= 0);
--
2.5.0

View File

@ -1,135 +0,0 @@
From a5866298597e2fd460c47d9fda7cceacbe9f3fcb Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Tue, 24 Nov 2015 09:41:26 +0100
Subject: [PATCH 4/4] core: Do not bind a mount unit to a device, if it was
from mountinfo
If a mount unit is bound to a device, systemd tries to umount the
mount point, if it thinks the device has gone away.
Due to the uevent queue and inotify of /proc/self/mountinfo being two
different sources, systemd can never get the ordering reliably correct.
It can happen, that in the uevent queue ADD,REMOVE,ADD is queued
and an inotify of mountinfo (or libmount event) happend with the
device in question.
systemd cannot know, at which point of time the mount happend in the
ADD,REMOVE,ADD sequence.
The real ordering might have been ADD,REMOVE,ADD,mount
and systemd might think ADD,mount,REMOVE,ADD and would umount the
mountpoint.
A test script which triggered this behaviour is:
rm -f test-efi-disk.img
dd if=/dev/null of=test-efi-disk.img bs=1M seek=512 count=1
parted --script test-efi-disk.img \
"mklabel gpt" \
"mkpart ESP fat32 1MiB 511MiB" \
"set 1 boot on"
LOOP=$(losetup --show -f -P test-efi-disk.img)
udevadm settle
mkfs.vfat -F32 ${LOOP}p1
mkdir -p mnt
mount ${LOOP}p1 mnt
... <dostuffwith mnt>
Without the "udevadm settle" systemd unmounted mnt while the script was
operating on mnt.
Of course the question is, why there was a REMOVE in the first place,
but this is not part of this patch.
(cherry picked from commit 9d06297e262966de71095debd1537fc223f940a3)
Note: I'm adding a Related note, but I'm not entirely sure if it really is...
Related: #1195761
---
src/core/mount.c | 2 +-
src/core/socket.c | 2 +-
src/core/swap.c | 2 +-
src/core/unit.c | 6 ++++--
src/core/unit.h | 2 +-
5 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/src/core/mount.c b/src/core/mount.c
index 9b44357..2ad4ad4 100644
--- a/src/core/mount.c
+++ b/src/core/mount.c
@@ -335,7 +335,7 @@ static int mount_add_device_links(Mount *m) {
if (mount_is_auto(p) && UNIT(m)->manager->running_as == MANAGER_SYSTEM)
device_wants_mount = true;
- r = unit_add_node_link(UNIT(m), p->what, device_wants_mount);
+ r = unit_add_node_link(UNIT(m), p->what, device_wants_mount, m->from_fragment ? UNIT_BINDS_TO : UNIT_REQUIRES);
if (r < 0)
return r;
diff --git a/src/core/socket.c b/src/core/socket.c
index 687675b..860a1e3 100644
--- a/src/core/socket.c
+++ b/src/core/socket.c
@@ -289,7 +289,7 @@ static int socket_add_device_link(Socket *s) {
return 0;
t = strjoina("/sys/subsystem/net/devices/", s->bind_to_device);
- return unit_add_node_link(UNIT(s), t, false);
+ return unit_add_node_link(UNIT(s), t, false, UNIT_BINDS_TO);
}
static int socket_add_default_dependencies(Socket *s) {
diff --git a/src/core/swap.c b/src/core/swap.c
index b6e4372..5568898 100644
--- a/src/core/swap.c
+++ b/src/core/swap.c
@@ -202,7 +202,7 @@ static int swap_add_device_links(Swap *s) {
return 0;
if (is_device_path(s->what))
- return unit_add_node_link(UNIT(s), s->what, UNIT(s)->manager->running_as == MANAGER_SYSTEM);
+ return unit_add_node_link(UNIT(s), s->what, UNIT(s)->manager->running_as == MANAGER_SYSTEM, UNIT_BINDS_TO);
else
/* File based swap devices need to be ordered after
* systemd-remount-fs.service, since they might need a
diff --git a/src/core/unit.c b/src/core/unit.c
index 0a02e38..e6e67d2 100644
--- a/src/core/unit.c
+++ b/src/core/unit.c
@@ -2840,7 +2840,7 @@ int unit_deserialize(Unit *u, FILE *f, FDSet *fds) {
}
}
-int unit_add_node_link(Unit *u, const char *what, bool wants) {
+int unit_add_node_link(Unit *u, const char *what, bool wants, UnitDependency dep) {
Unit *device;
_cleanup_free_ char *e = NULL;
int r;
@@ -2867,7 +2867,9 @@ int unit_add_node_link(Unit *u, const char *what, bool wants) {
if (r < 0)
return r;
- r = unit_add_two_dependencies(u, UNIT_AFTER, u->manager->running_as == MANAGER_SYSTEM ? UNIT_BINDS_TO : UNIT_WANTS, device, true);
+ r = unit_add_two_dependencies(u, UNIT_AFTER,
+ u->manager->running_as == MANAGER_SYSTEM ? dep : UNIT_WANTS,
+ device, true);
if (r < 0)
return r;
diff --git a/src/core/unit.h b/src/core/unit.h
index 1681bbf..3eb3484 100644
--- a/src/core/unit.h
+++ b/src/core/unit.h
@@ -528,7 +528,7 @@ int unit_serialize_item_escaped(Unit *u, FILE *f, const char *key, const char *v
int unit_serialize_item_fd(Unit *u, FILE *f, FDSet *fds, const char *key, int fd);
void unit_serialize_item_format(Unit *u, FILE *f, const char *key, const char *value, ...) _printf_(4,5);
-int unit_add_node_link(Unit *u, const char *what, bool wants);
+int unit_add_node_link(Unit *u, const char *what, bool wants, UnitDependency d);
int unit_coldplug(Unit *u);
--
2.5.0

View File

@ -1,4 +1,4 @@
From ee3b68041ed9cf19b3dd18c4d1bb342abec7d2ac Mon Sep 17 00:00:00 2001
From d9e075d88e7d9d82464147d8283771d709c14ef8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
Date: Tue, 9 Feb 2016 15:13:33 -0500
Subject: [PATCH] Add a workaround for {linux/net}/if.h conflict
@ -7,26 +7,31 @@ Include linux/if.h and make sure we don't include the other file.
https://bugzilla.redhat.com/show_bug.cgi?id=1300256
---
src/shared/firewall-util.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
src/shared/firewall-util.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/shared/firewall-util.c b/src/shared/firewall-util.c
index 5acfb0191b..95335498ef 100644
index 0d3da2e..c38f9cc 100644
--- a/src/shared/firewall-util.c
+++ b/src/shared/firewall-util.c
@@ -19,9 +19,11 @@
@@ -16,15 +16,16 @@
You should have received a copy of the GNU Lesser General Public License
along with systemd; If not, see <http://www.gnu.org/licenses/>.
***/
+#define _NET_IF_H 1
+
#include <alloca.h>
#include <arpa/inet.h>
#include <endian.h>
#include <errno.h>
-#include <net/if.h>
#include <sys/types.h>
#include <stddef.h>
#include <string.h>
#include <sys/socket.h>
+#include <linux/if.h>
#include <linux/netfilter_ipv4/ip_tables.h>
#include <linux/netfilter/nf_nat.h>
#include <linux/netfilter/xt_addrtype.h>
--
1.9.2.649.g5ae4ba5
2.5.0

View File

@ -1 +1 @@
74cfefd62818a57b5265f660682ff4d2 systemd-e35a787.tar.gz
5d696f65381b2608da70544df07c2b3c systemd-229.tar.gz

View File

@ -1,4 +1,4 @@
%global gitcommit e35a7876b4ab1d53a7539a905613e31dc6ae50fd
#global gitcommit e35a7876b4ab1d53a7539a905613e31dc6ae50fd
%global gitcommitshort %(c=%{gitcommit}; echo ${c:0:7})
%global _hardened_build 1
@ -12,8 +12,8 @@
Name: systemd
Url: http://www.freedesktop.org/wiki/Software/systemd
Version: 228
Release: 10%{?gitcommit:.git%{gitcommitshort}}%{?dist}
Version: 229
Release: 1%{?gitcommit:.git%{gitcommitshort}}%{?dist}
# For a breakdown of the licensing, see README
License: LGPLv2+ and MIT and GPLv2+
Summary: A System and Service Manager
@ -34,11 +34,6 @@ Source7: systemd-journal-remote.xml
Source8: systemd-journal-gatewayd.xml
Source9: 20-yama-ptrace.conf
Patch0001: 0001-tests-turn-check-if-manager-cannot-be-intialized-int.patch
Patch0002: 0002-lz4-fix-size-check-which-had-no-chance-of-working-on.patch
Patch0003: 0003-tests-fix-newlines-in-skip-message.patch
Patch0004: 0004-core-Do-not-bind-a-mount-unit-to-a-device-if-it-was-.patch
Patch0999: 0999-Add-a-workaround-for-linux-net-if.h-conflict.patch
# kernel-install patch for grubby, drop if grubby is obsolete
@ -655,6 +650,7 @@ getent passwd systemd-journal-upload >/dev/null 2>&1 || useradd -r -l -g systemd
%{_bindir}/systemd-detect-virt
%{_bindir}/systemd-inhibit
%{_bindir}/systemd-path
%{_bindir}/systemd-resolve
%{_bindir}/systemd-sysusers
%{_bindir}/systemd-firstboot
%{_bindir}/systemd-hwdb
@ -810,6 +806,9 @@ getent passwd systemd-journal-upload >/dev/null 2>&1 || useradd -r -l -g systemd
/usr/lib/firewalld/services/*
%changelog
* Thu Feb 11 2016 Michal Sekletar <msekleta@redhat.com> - 229-1
- New upstream release
* Thu Feb 11 2016 Harald Hoyer <harald@redhat.com> - 228-10.gite35a787
- fixed kernel-install for copying files for grubby
Resolves: rhbz#1299019