Compare commits
557 Commits
systemd-21
...
master
Author | SHA1 | Date | |
---|---|---|---|
|
97a6085912 | ||
|
9bf9a317b6 | ||
|
8bb6dc993a | ||
|
afdd35ec48 | ||
|
d9fc59f9a9 | ||
|
bca98cfc50 | ||
|
39bdda8d19 | ||
|
f28a96e50a | ||
|
5bf2aac8b4 | ||
|
a734fa3ff3 | ||
|
b6a8363c43 | ||
|
550422fe1b | ||
|
5acb5c4c08 | ||
|
96b7895b99 | ||
|
14b2fafb36 | ||
|
283a994776 | ||
|
7d7120d566 | ||
|
3905512117 | ||
|
ce6da66f61 | ||
|
147b753f29 | ||
|
f10da8ae84 | ||
|
b36512ad8f | ||
|
b50e9d7f29 | ||
|
f455b2249a | ||
|
043ff2e2f0 | ||
|
f74b957328 | ||
|
de06d8e22c | ||
|
81cd8d4bcf | ||
|
269358bd5e | ||
|
04b6e059f7 | ||
|
0345c83b50 | ||
|
764adb18da | ||
|
1ebf8dd816 | ||
|
5a70c03b7f | ||
|
d01d537e93 | ||
|
16c37db4fd | ||
|
98b9113655 | ||
|
d5c1247285 | ||
|
27ec459b7b | ||
|
eee99e6ccc | ||
|
84fad5038a | ||
|
c8f86d89ba | ||
|
0eabb3de75 | ||
|
7445a298df | ||
|
30273d3292 | ||
|
65221f861e | ||
|
35e6dd7b1a | ||
|
437a7b8c4f | ||
|
abd738eddc | ||
|
a5acceb904 | ||
|
11b1c53b97 | ||
|
5bf170b999 | ||
|
5eb772cfb3 | ||
|
0a6ab0825d | ||
|
778a3758dd | ||
|
6fd99c397b | ||
|
65984c876a | ||
|
9488c31cc1 | ||
|
4f458499a5 | ||
|
c432921859 | ||
|
ca9af1e8a8 | ||
|
0688d7a091 | ||
|
55abe5f0ba | ||
|
9d2435f184 | ||
|
6eb8bcde28 | ||
|
ec562b2272 | ||
|
6dead14ceb | ||
|
fb22f2a640 | ||
|
493f6fa66b | ||
|
265d91aff5 | ||
|
282e088f13 | ||
|
f983169655 | ||
|
b5c68a76ce | ||
|
b80d007386 | ||
|
63698f5ea0 | ||
|
80532792aa | ||
|
6238d479ae | ||
|
8a34ce7dca | ||
|
be4317e8bf | ||
|
91fd7acc9e | ||
|
24d7f17342 | ||
|
48edd5b3a5 | ||
|
bb79fb7387 | ||
|
7ceda13192 | ||
|
86b1777f9b | ||
|
8f2e234d97 | ||
|
a4507efa4e | ||
|
788f973eab | ||
|
111b3c5a31 | ||
|
ab2423caa9 | ||
|
a4e7f2840f | ||
|
61de05c228 | ||
|
db1cfc0955 | ||
|
aed5718c3a | ||
|
933c039e04 | ||
|
01e2d8a982 | ||
|
529ae77811 | ||
|
5c5a95ecb4 | ||
|
437cd52f28 | ||
|
a8129e0964 | ||
|
3620ae5f58 | ||
|
3666983037 | ||
|
6aa6d755fb | ||
|
ced9237a14 | ||
|
9434e617a6 | ||
|
d1a1f09895 | ||
|
513853f320 | ||
|
d9b9454de8 | ||
|
58b22cf334 | ||
|
2ccb3a9dee | ||
|
4cd9bf575b | ||
|
51ab4bc42e | ||
|
ed1ff6f641 | ||
|
8964873178 | ||
|
a746962e75 | ||
|
da9dae21d7 | ||
|
5abc564f03 | ||
|
ec1d7bb8af | ||
|
82d2fa2f16 | ||
|
a556e1f3e2 | ||
|
a760231337 | ||
|
7aa63f3164 | ||
|
1f0a2f0802 | ||
|
090a9d035f | ||
|
07b358f168 | ||
|
37d9de1fcf | ||
|
d7b2d46533 | ||
|
07f0cd95cf | ||
|
f1413ea879 | ||
|
bf71ff0b85 | ||
|
8848319ef8 | ||
|
1c4be10032 | ||
|
d15ab16efa | ||
|
b9896dc2ce | ||
|
6dff989abd | ||
|
a419fcc3bd | ||
|
4480cada02 | ||
|
89aa08197f | ||
|
4c67e1cb51 | ||
|
c7ac97585c | ||
|
77ab9b5088 | ||
|
5fb495cb03 | ||
|
2379dd06da | ||
|
836fcf414a | ||
|
1d22340882 | ||
|
b61052552e | ||
|
cf6cab52f2 | ||
|
484de996fc | ||
|
21fe449c94 | ||
|
94a4908748 | ||
|
32a6a004db | ||
|
cda068c40d | ||
|
922e5d4fa4 | ||
|
6af7b47648 | ||
|
660962e17a | ||
|
79a1c5f8e8 | ||
|
5df67cdae8 | ||
|
442c8d41a9 | ||
|
edaa157918 | ||
|
8d4a0946d1 | ||
|
ee8fc244d8 | ||
|
0eab21cb2b | ||
|
a787811921 | ||
|
3eb9903ba0 | ||
|
4557ee0872 | ||
|
0214da5fc8 | ||
|
ea91d39bdd | ||
|
7d37aab780 | ||
|
9a32090cc2 | ||
|
d644e8032c | ||
|
b80d668d9e | ||
|
4100d92c45 | ||
|
47d443ea5d | ||
|
3a45ccbeb1 | ||
|
85e1a222f7 | ||
|
4ba08126b1 | ||
|
8bc4ef61e5 | ||
|
9977ebc5d7 | ||
|
cda71799e7 | ||
|
b3c65ffbe3 | ||
|
07e98bcf32 | ||
|
9a0025413c | ||
|
b2165dc717 | ||
|
8510cadb34 | ||
|
71e781a096 | ||
|
d15bd12f49 | ||
|
db19323db2 | ||
|
e394248861 | ||
|
c9030f045b | ||
|
59823848fc | ||
|
6a3bb3f641 | ||
|
6714fc2555 | ||
|
d8d2ff965e | ||
|
1f6dfb7453 | ||
|
48ac1cebde | ||
|
184871e826 | ||
|
5306894742 | ||
|
e7883a3ff9 | ||
|
07b77042bc | ||
|
05bb389ca4 | ||
|
ad150b1fc6 | ||
|
a2b05050f9 | ||
|
eb80e67908 | ||
|
c8d1507e04 | ||
|
b59ff1a2fc | ||
|
6a5d5d666c | ||
|
bb3fb8bc57 | ||
|
b05aec5ee0 | ||
|
e8a9546241 | ||
|
3c9433d7cf | ||
|
a818a9f2ca | ||
|
dc46312de2 | ||
|
8e6b39457b | ||
|
f770414d95 | ||
|
b5fa4adf3f | ||
|
176a1807d2 | ||
|
d4d36e6a87 | ||
|
d10793d82b | ||
|
792370f28d | ||
|
77f7c6f491 | ||
|
98ea23b9ac | ||
|
fd0679e1ff | ||
|
885c28c248 | ||
|
f5d69da27a | ||
|
273dc0fda0 | ||
|
a88494686e | ||
|
6f5e81a1a0 | ||
|
6eaf251a9e | ||
|
388cd917f1 | ||
|
3e18b458fc | ||
|
8dc92a4da2 | ||
|
c8ec349ecc | ||
|
aadfe52dca | ||
|
339b0245df | ||
|
7ffa9232c4 | ||
|
fb4de3a52a | ||
|
e3edeed65d | ||
|
d13ecfd07d | ||
|
3595fb5110 | ||
|
af29920ddf | ||
|
38d7cff9f6 | ||
|
1eeb98d33d | ||
|
f314ba8790 | ||
|
e0aa12142f | ||
|
2125b9b134 | ||
|
f59138540e | ||
|
e92fe49e42 | ||
|
219c026dc0 | ||
|
dc44a1da74 | ||
|
db8b8fe77c | ||
|
a8ba7b15a2 | ||
|
9653e125fd | ||
|
17a6f382d1 | ||
|
f00d23638b | ||
|
35bb94669a | ||
|
ca246f98ec | ||
|
8a752251c4 | ||
|
a46c781ba7 | ||
|
3cb1145229 | ||
|
ac49c72d1e | ||
|
1d5166b9df | ||
|
8b20c798c7 | ||
|
27bd1bd49f | ||
|
8d4133f998 | ||
|
d044ab56d6 | ||
|
f3e3e4d477 | ||
|
84e7848871 | ||
|
22eb6688a2 | ||
|
5bf44923db | ||
|
c2bfa7b218 | ||
|
83f115d68f | ||
|
4ebba8aac1 | ||
|
61120120a0 | ||
|
acc114f21c | ||
|
054ce3eced | ||
|
4bbfd1a314 | ||
|
d743bb5bcc | ||
|
0e8350ca14 | ||
|
3fb4a15096 | ||
|
1d06cbf3d4 | ||
|
f4a67616bd | ||
|
ee53796748 | ||
|
c0f6af7fcc | ||
|
3e3b80766f | ||
|
e47c648430 | ||
|
f5f0737829 | ||
|
2809df176d | ||
|
bb41272694 | ||
|
4877912f6e | ||
|
645d1b9eb7 | ||
|
7d23031443 | ||
|
a88eae1c54 | ||
|
40fcd871d4 | ||
|
6353553a57 | ||
|
cfadacd273 | ||
|
d4f0a28c8c | ||
|
0f34996575 | ||
|
78d35a9ba2 | ||
|
f020f8b986 | ||
|
6c1e2a67b2 | ||
|
5d6eedd538 | ||
|
b6b3541a52 | ||
|
405c2cd182 | ||
|
6396212453 | ||
|
03e93e27d9 | ||
|
4c60d7b5ae | ||
|
74dc679828 | ||
|
25bd358ef1 | ||
|
eaf2f302c0 | ||
|
ca3c77beb2 | ||
|
b810fade77 | ||
|
e4286e550e | ||
|
9286eca9c8 | ||
|
734f625c22 | ||
|
324bf560f7 | ||
|
b69d36e571 | ||
|
04206f627a | ||
|
1eb707d840 | ||
|
1ec648fc4c | ||
|
c91b73ea39 | ||
|
348151a546 | ||
|
e134e692b6 | ||
|
d81bdc27d3 | ||
|
523b6ce46a | ||
|
62b1bf52df | ||
|
da15385b06 | ||
|
12da227455 | ||
|
e42bd854c0 | ||
|
a6473965d9 | ||
|
1478fab950 | ||
|
14572d7192 | ||
|
7ae71c8772 | ||
|
4e1286dd8b | ||
|
65fed72862 | ||
|
51f362c39a | ||
|
64282b85b2 | ||
|
839ccebd9b | ||
|
a2242c1ded | ||
|
3a5d9b71f4 | ||
|
20fa848003 | ||
|
8f85f19830 | ||
|
ef73cc0d30 | ||
|
3250f00573 | ||
|
696e2f22d4 | ||
|
2666b4f578 | ||
|
126aa118e1 | ||
|
edb4e05013 | ||
|
c418e76b87 | ||
|
287353c355 | ||
|
140d00ebaa | ||
|
46083abe1a | ||
|
6153dd9122 | ||
|
1ed18e5e9d | ||
|
ee7e6a6d57 | ||
|
49a32c19f1 | ||
|
abad21f221 | ||
|
b3d8d37d58 | ||
|
8f6ec2ee91 | ||
|
8efe61bc18 | ||
|
b7ec953f25 | ||
|
994aacdaa6 | ||
|
28e2d47eef | ||
|
8b4408b5c9 | ||
|
f7a77f9cb0 | ||
|
7f4276c417 | ||
|
cf1399ec4a | ||
|
b54bf1386b | ||
|
37de5dfe28 | ||
|
253663e57d | ||
|
afdf3eeb86 | ||
|
70cb855cd7 | ||
|
f9a2211aaa | ||
|
b9a1e35039 | ||
|
c7c4361581 | ||
|
43a7716012 | ||
|
0a19dfe97e | ||
|
bed2768dc7 | ||
|
6428127a18 | ||
|
7aba950aa4 | ||
|
2b682337e7 | ||
|
c16b573717 | ||
|
34bfceffe6 | ||
|
8ad6641ff2 | ||
|
1a10d33b63 | ||
|
624d2b7fea | ||
|
92af61aefe | ||
|
18259f3b8c | ||
|
4ee6493f72 | ||
|
5a1e61f28b | ||
|
0a417f082a | ||
|
908de082ce | ||
|
340bf090f9 | ||
|
1dc1e2f91f | ||
|
ebd481af7f | ||
|
4df4d1391d | ||
|
e53f79084e | ||
|
f08e792a66 | ||
|
2ec3b0659d | ||
|
25282cb229 | ||
|
d8151dbe1d | ||
|
38d93ea79f | ||
|
1279f70ebd | ||
|
80f2df5146 | ||
|
dc105f307e | ||
|
56be258e41 | ||
|
fc651191db | ||
|
5767bd4538 | ||
|
32b81ffc99 | ||
|
38ce1c6b7e | ||
|
7a0ef9c797 | ||
|
895657f1cb | ||
|
fb4fe7a672 | ||
|
30dafa4290 | ||
|
49f71b6ae3 | ||
|
a884a616c9 | ||
|
a67535cbef | ||
|
b321c5a2de | ||
|
76c0b72634 | ||
|
aec27b1382 | ||
|
2532db13a7 | ||
|
684a3bc691 | ||
|
984ca0bc57 | ||
|
13362c9950 | ||
|
35c1f69c22 | ||
|
339d9a453b | ||
|
f6039fadea | ||
|
d4f2656784 | ||
|
456eac18c7 | ||
|
5cdbe47c57 | ||
|
7f82478f26 | ||
|
4463a3b894 | ||
|
41553e0ec2 | ||
|
6c1029f225 | ||
|
b3ddfbd31c | ||
|
a5c858d8e5 | ||
|
5bd45994d7 | ||
|
60a0b61d40 | ||
|
68323a2a5a | ||
|
5c1c8ba5ff | ||
|
741490beeb | ||
|
35ec3ad770 | ||
|
5b850f53b9 | ||
|
952794e6c0 | ||
|
a97e1246d5 | ||
|
3dfe820830 | ||
|
a5e55f9d9f | ||
|
f7ff95060d | ||
|
036292004a | ||
|
5984675661 | ||
|
516775d649 | ||
|
52a9194e13 | ||
|
527912bf78 | ||
|
90aeeef683 | ||
|
9a11c6baf7 | ||
|
569c6fda50 | ||
|
790f46d643 | ||
|
e074d0f41a | ||
|
ee6fc81588 | ||
|
e40887b16d | ||
|
e3594d6614 | ||
|
acdc555f22 | ||
|
be68e452de | ||
|
436654a8a5 | ||
|
e2168b5f24 | ||
|
6cfa04faa1 | ||
|
4dc6b4953d | ||
|
01fba4b815 | ||
|
7a75a5fbec | ||
|
551967d7d9 | ||
|
9e71abc2c9 | ||
|
d9b91fa93b | ||
|
78ba63c3c7 | ||
|
90957559ef | ||
|
0a658c0c61 | ||
|
836567c7a3 | ||
|
911deca421 | ||
|
05c90300b1 | ||
|
5d3e2085f5 | ||
|
a48f80c6e3 | ||
|
0a8e7e6c19 | ||
|
812fb10583 | ||
|
75a820ceb0 | ||
|
ef7b485f69 | ||
|
0ab588521d | ||
|
77e6ed9659 | ||
|
ffc19a0568 | ||
|
c4099ef515 | ||
|
c9f04dae19 | ||
|
41d7c09d1b | ||
|
399a2a87d9 | ||
|
b4d5d4640a | ||
|
fa31ee886b | ||
|
9c0d1d5a07 | ||
|
b081c530a5 | ||
|
e4a83a82af | ||
|
ade6190d36 | ||
|
b1d608a2b3 | ||
|
5427ee063b | ||
|
0cb630f4ff | ||
|
6e198e4088 | ||
|
68864dcf85 | ||
|
2c67f7fe1b | ||
|
df692bb9f2 | ||
|
5decfd300f | ||
|
78bc69f934 | ||
|
f93ca2d2c3 | ||
|
258b2a4ba8 | ||
|
1a99f77d64 | ||
|
064fee0cbb | ||
|
b4bdea39fb | ||
|
c3cf2ae4ec | ||
|
55323ee7ea | ||
|
f2ebf1a65b | ||
|
92e27a50e4 | ||
|
547d1d8bad | ||
|
6cf221b459 | ||
|
c90404b648 | ||
|
5724974576 | ||
|
f524b4a4be | ||
|
b53cf7b99c | ||
|
5606d835af | ||
|
378cf2ba6f | ||
|
dfe64b9c42 | ||
|
9254d88a74 | ||
|
239db0d9eb | ||
|
ea19761321 | ||
|
0440dc0ca2 | ||
|
90edccda2e | ||
|
ba201ce670 | ||
|
32324f829f | ||
|
c6e31c698a | ||
|
cc4dc44dee | ||
|
2607f00f9e | ||
|
f5ff7e9460 | ||
|
db38be6409 | ||
|
f1004dc2ae | ||
|
cebcd2064c | ||
|
801ccd93e2 | ||
|
b1a5d764a3 | ||
|
6d5bee3354 | ||
|
62fe9450da | ||
|
5cdc00d6e6 | ||
|
9a5afe8dab | ||
|
0019b3e60d | ||
|
d962ba812f | ||
|
ed4e5bbcf4 | ||
|
10e6a8e59d | ||
|
c8f466444b | ||
|
039253f8be | ||
|
522fbab110 | ||
|
4dd25f856a | ||
|
92a80ac51a | ||
|
6a2a58eca0 | ||
|
bd236f8773 | ||
|
a7ae5e1ba8 | ||
|
4eb55a70f3 | ||
|
07abe5d036 |
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,6 +1,8 @@
|
||||
*~
|
||||
/systemd-*/
|
||||
/.build-*.log
|
||||
/x86_64/
|
||||
/systemd-*src.rpm
|
||||
/systemd-*.tar.xz
|
||||
/systemd-*.tar.gz
|
||||
/*.rpm
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,70 @@
|
||||
From 2e9d763e7cbeb33954bbe3f96fd94de2cd62edf7 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Thu, 12 Nov 2020 14:28:24 +0100
|
||||
Subject: [PATCH] test-path-util: do not fail if the fd_is_mount_point check
|
||||
fails
|
||||
|
||||
This test fails on i686 and ppc64le in koji:
|
||||
/* test_path */
|
||||
Assertion 'fd_is_mount_point(fd, "/", 0) > 0' failed at src/test/test-path-util.c:85, function test_path(). Aborting.
|
||||
|
||||
I guess some permission error is the most likely.
|
||||
---
|
||||
src/test/test-path-util.c | 23 +++++++++++++++++------
|
||||
1 file changed, 17 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/src/test/test-path-util.c b/src/test/test-path-util.c
|
||||
index f4f8d0550b..be428334f3 100644
|
||||
--- a/src/test/test-path-util.c
|
||||
+++ b/src/test/test-path-util.c
|
||||
@@ -40,8 +40,6 @@ static void test_path_simplify(const char *in, const char *out, const char *out_
|
||||
}
|
||||
|
||||
static void test_path(void) {
|
||||
- _cleanup_close_ int fd = -1;
|
||||
-
|
||||
log_info("/* %s */", __func__);
|
||||
|
||||
test_path_compare("/goo", "/goo", 0);
|
||||
@@ -80,10 +78,6 @@ static void test_path(void) {
|
||||
assert_se(streq(basename("/aa///file..."), "file..."));
|
||||
assert_se(streq(basename("file.../"), ""));
|
||||
|
||||
- fd = open("/", O_RDONLY|O_CLOEXEC|O_DIRECTORY|O_NOCTTY);
|
||||
- assert_se(fd >= 0);
|
||||
- assert_se(fd_is_mount_point(fd, "/", 0) > 0);
|
||||
-
|
||||
test_path_simplify("aaa/bbb////ccc", "aaa/bbb/ccc", "aaa/bbb/ccc");
|
||||
test_path_simplify("//aaa/.////ccc", "/aaa/./ccc", "/aaa/ccc");
|
||||
test_path_simplify("///", "/", "/");
|
||||
@@ -120,6 +114,22 @@ static void test_path(void) {
|
||||
assert_se(!path_equal_ptr(NULL, "/a"));
|
||||
}
|
||||
|
||||
+static void test_path_is_mountpoint(void) {
|
||||
+ _cleanup_close_ int fd = -1;
|
||||
+ int r;
|
||||
+
|
||||
+ log_info("/* %s */", __func__);
|
||||
+
|
||||
+ fd = open("/", O_RDONLY|O_CLOEXEC|O_DIRECTORY|O_NOCTTY);
|
||||
+ assert_se(fd >= 0);
|
||||
+
|
||||
+ r = fd_is_mount_point(fd, "/", 0);
|
||||
+ if (r < 0)
|
||||
+ log_warning_errno(r, "Failed to check if / is a mount point, ignoring: %m");
|
||||
+ else
|
||||
+ assert_se(r == 1);
|
||||
+}
|
||||
+
|
||||
static void test_path_equal_root(void) {
|
||||
/* Nail down the details of how path_equal("/", ...) works. */
|
||||
|
||||
@@ -714,6 +724,7 @@ int main(int argc, char **argv) {
|
||||
|
||||
test_print_paths();
|
||||
test_path();
|
||||
+ test_path_is_mountpoint();
|
||||
test_path_equal_root();
|
||||
test_find_executable_full();
|
||||
test_find_executable(argv[0]);
|
33
0001-test-path-util-ignore-test-failure.patch
Normal file
33
0001-test-path-util-ignore-test-failure.patch
Normal file
@ -0,0 +1,33 @@
|
||||
From e8bca4ba55f855260eda684a16e8feb5f20b1deb Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Thu, 12 Nov 2020 15:06:12 +0100
|
||||
Subject: [PATCH] test-path-util: ignore test failure
|
||||
|
||||
---
|
||||
src/test/test-path-util.c | 7 +++++--
|
||||
1 file changed, 5 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/test/test-path-util.c b/src/test/test-path-util.c
|
||||
index be428334f3..207c659b8b 100644
|
||||
--- a/src/test/test-path-util.c
|
||||
+++ b/src/test/test-path-util.c
|
||||
@@ -120,14 +120,17 @@ static void test_path_is_mountpoint(void) {
|
||||
|
||||
log_info("/* %s */", __func__);
|
||||
|
||||
+ (void) system("uname -a");
|
||||
+ (void) system("mountpoint /");
|
||||
+
|
||||
fd = open("/", O_RDONLY|O_CLOEXEC|O_DIRECTORY|O_NOCTTY);
|
||||
assert_se(fd >= 0);
|
||||
|
||||
r = fd_is_mount_point(fd, "/", 0);
|
||||
if (r < 0)
|
||||
log_warning_errno(r, "Failed to check if / is a mount point, ignoring: %m");
|
||||
- else
|
||||
- assert_se(r == 1);
|
||||
+ else if (r == 0)
|
||||
+ log_warning("/ is not a mountpoint?");
|
||||
}
|
||||
|
||||
static void test_path_equal_root(void) {
|
@ -1,374 +0,0 @@
|
||||
From a8caf8eabad9bd51425c649189955c9fe18c9418 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Sun, 2 Nov 2014 09:20:39 -0500
|
||||
Subject: [PATCH] Revert "timedated: manage systemd-timesyncd directly instead
|
||||
of lists of alternatives"
|
||||
|
||||
This reverts commit b72ddf0f4f552dd53d6404b6ddbc9f17d02b8e12.
|
||||
|
||||
Conflicts:
|
||||
Makefile.am
|
||||
NEWS
|
||||
---
|
||||
Makefile.am | 9 ++
|
||||
NEWS | 2 +
|
||||
src/timedate/timedated.c | 254 +++++++++++++++++++++++++++++------------------
|
||||
3 files changed, 171 insertions(+), 94 deletions(-)
|
||||
|
||||
diff --git a/Makefile.am b/Makefile.am
|
||||
index 3666a927fd..3509665176 100644
|
||||
--- a/Makefile.am
|
||||
+++ b/Makefile.am
|
||||
@@ -109,6 +109,7 @@ udevrulesdir=$(udevlibexecdir)/rules.d
|
||||
udevhwdbdir=$(udevlibexecdir)/hwdb.d
|
||||
catalogdir=$(prefix)/lib/systemd/catalog
|
||||
kernelinstalldir = $(prefix)/lib/kernel/install.d
|
||||
+ntpunitsdir=$(prefix)/lib/systemd/ntp-units.d
|
||||
factory_etcdir = $(prefix)/share/factory/etc
|
||||
factory_pamdir = $(prefix)/share/factory/etc/pam.d
|
||||
|
||||
@@ -4762,6 +4763,10 @@ dist_systemunit_DATA_busnames += \
|
||||
polkitpolicy_files += \
|
||||
src/timedate/org.freedesktop.timedate1.policy
|
||||
|
||||
+INSTALL_DIRS += \
|
||||
+ $(prefix)/lib/systemd/ntp-units.d \
|
||||
+ $(sysconfdir)/systemd/ntp-units.d
|
||||
+
|
||||
SYSTEM_UNIT_ALIASES += \
|
||||
systemd-timedated.service dbus-org.freedesktop.timedate1.service
|
||||
|
||||
@@ -4840,6 +4845,10 @@ EXTRA_DIST += \
|
||||
|
||||
CLEANFILES += \
|
||||
src/timesync/timesyncd.conf
|
||||
+
|
||||
+dist_ntpunits_DATA = \
|
||||
+ src/timesync/90-systemd.list
|
||||
+
|
||||
endif
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
diff --git a/NEWS b/NEWS
|
||||
index 84a43fd5df..078fabb1e5 100644
|
||||
--- a/NEWS
|
||||
+++ b/NEWS
|
||||
@@ -218,6 +218,8 @@ CHANGES WITH 216:
|
||||
to their unit files to take over and replace systemd's NTP
|
||||
default functionality.
|
||||
|
||||
+ [ reverted in this branch ]
|
||||
+
|
||||
* systemd-sysusers gained a new line type "r" for configuring
|
||||
which UID/GID ranges to allocate system users/groups
|
||||
from. Lines of type "u" may now add an additional column
|
||||
diff --git a/src/timedate/timedated.c b/src/timedate/timedated.c
|
||||
index 8880812b49..08b604dcca 100644
|
||||
--- a/src/timedate/timedated.c
|
||||
+++ b/src/timedate/timedated.c
|
||||
@@ -180,145 +180,211 @@ static int context_write_data_local_rtc(Context *c) {
|
||||
return write_string_file_atomic_label("/etc/adjtime", w);
|
||||
}
|
||||
|
||||
+static char** get_ntp_services(void) {
|
||||
+ _cleanup_strv_free_ char **r = NULL, **files = NULL;
|
||||
+ char **i;
|
||||
+ int k;
|
||||
+
|
||||
+ k = conf_files_list(&files, ".list", NULL,
|
||||
+ "/etc/systemd/ntp-units.d",
|
||||
+ "/run/systemd/ntp-units.d",
|
||||
+ "/usr/local/lib/systemd/ntp-units.d",
|
||||
+ "/usr/lib/systemd/ntp-units.d",
|
||||
+ NULL);
|
||||
+ if (k < 0)
|
||||
+ return NULL;
|
||||
+
|
||||
+ STRV_FOREACH(i, files) {
|
||||
+ _cleanup_fclose_ FILE *f;
|
||||
+
|
||||
+ f = fopen(*i, "re");
|
||||
+ if (!f)
|
||||
+ continue;
|
||||
+
|
||||
+ for (;;) {
|
||||
+ char line[PATH_MAX], *l;
|
||||
+
|
||||
+ if (!fgets(line, sizeof(line), f)) {
|
||||
+ if (ferror(f))
|
||||
+ log_error("Failed to read NTP unit file: %m");
|
||||
+
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ l = strstrip(line);
|
||||
+ if (l[0] == 0 || l[0] == '#')
|
||||
+ continue;
|
||||
+
|
||||
+ if (strv_extend(&r, l) < 0) {
|
||||
+ log_oom();
|
||||
+ return NULL;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ i = r;
|
||||
+ r = NULL; /* avoid cleanup */
|
||||
+
|
||||
+ return strv_uniq(i);
|
||||
+}
|
||||
+
|
||||
static int context_read_ntp(Context *c, sd_bus *bus) {
|
||||
- _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL;
|
||||
- sd_bus_message *reply = NULL;
|
||||
- const char *s;
|
||||
+ _cleanup_strv_free_ char **l;
|
||||
+ char **i;
|
||||
int r;
|
||||
|
||||
assert(c);
|
||||
assert(bus);
|
||||
|
||||
- r = sd_bus_call_method(
|
||||
- bus,
|
||||
- "org.freedesktop.systemd1",
|
||||
- "/org/freedesktop/systemd1",
|
||||
- "org.freedesktop.systemd1.Manager",
|
||||
- "GetUnitFileState",
|
||||
- &error,
|
||||
- &reply,
|
||||
- "s",
|
||||
- "systemd-timesyncd.service");
|
||||
+ l = get_ntp_services();
|
||||
+ STRV_FOREACH(i, l) {
|
||||
+ _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL;
|
||||
+ sd_bus_message *reply = NULL;
|
||||
+ const char *s;
|
||||
|
||||
- if (r < 0) {
|
||||
- if (sd_bus_error_has_name(&error, SD_BUS_ERROR_FILE_NOT_FOUND) ||
|
||||
- sd_bus_error_has_name(&error, "org.freedesktop.systemd1.LoadFailed") ||
|
||||
- sd_bus_error_has_name(&error, "org.freedesktop.systemd1.NoSuchUnit"))
|
||||
- return 0;
|
||||
+ r = sd_bus_call_method(
|
||||
+ bus,
|
||||
+ "org.freedesktop.systemd1",
|
||||
+ "/org/freedesktop/systemd1",
|
||||
+ "org.freedesktop.systemd1.Manager",
|
||||
+ "GetUnitFileState",
|
||||
+ &error,
|
||||
+ &reply,
|
||||
+ "s",
|
||||
+ *i);
|
||||
|
||||
- return r;
|
||||
- }
|
||||
+ if (r < 0) {
|
||||
+ /* This implementation does not exist. Try the next one. */
|
||||
+ if (sd_bus_error_has_name(&error, SD_BUS_ERROR_FILE_NOT_FOUND))
|
||||
+ continue;
|
||||
|
||||
- r = sd_bus_message_read(reply, "s", &s);
|
||||
- if (r < 0)
|
||||
- return r;
|
||||
+ return r;
|
||||
+ }
|
||||
+
|
||||
+ r = sd_bus_message_read(reply, "s", &s);
|
||||
+ if (r < 0)
|
||||
+ return r;
|
||||
|
||||
- c->can_ntp = true;
|
||||
- c->use_ntp = STR_IN_SET(s, "enabled", "enabled-runtime");
|
||||
+ c->can_ntp = true;
|
||||
+ c->use_ntp = STR_IN_SET(s, "enabled", "enabled-runtime");
|
||||
+
|
||||
+ return 0;
|
||||
+ }
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int context_start_ntp(Context *c, sd_bus *bus, sd_bus_error *error) {
|
||||
+ _cleanup_strv_free_ char **l = NULL;
|
||||
+ char **i;
|
||||
int r;
|
||||
|
||||
assert(c);
|
||||
assert(bus);
|
||||
assert(error);
|
||||
|
||||
- if (c->use_ntp)
|
||||
- r = sd_bus_call_method(
|
||||
- bus,
|
||||
- "org.freedesktop.systemd1",
|
||||
- "/org/freedesktop/systemd1",
|
||||
- "org.freedesktop.systemd1.Manager",
|
||||
- "StartUnit",
|
||||
- error,
|
||||
- NULL,
|
||||
- "ss",
|
||||
- "systemd-timesyncd.service",
|
||||
- "replace");
|
||||
- else
|
||||
- r = sd_bus_call_method(
|
||||
- bus,
|
||||
- "org.freedesktop.systemd1",
|
||||
- "/org/freedesktop/systemd1",
|
||||
- "org.freedesktop.systemd1.Manager",
|
||||
- "StopUnit",
|
||||
- error,
|
||||
- NULL,
|
||||
- "ss",
|
||||
- "systemd-timesyncd.service",
|
||||
- "replace");
|
||||
+ l = get_ntp_services();
|
||||
+ STRV_FOREACH(i, l) {
|
||||
+
|
||||
+ if (c->use_ntp)
|
||||
+ r = sd_bus_call_method(
|
||||
+ bus,
|
||||
+ "org.freedesktop.systemd1",
|
||||
+ "/org/freedesktop/systemd1",
|
||||
+ "org.freedesktop.systemd1.Manager",
|
||||
+ "StartUnit",
|
||||
+ error,
|
||||
+ NULL,
|
||||
+ "ss", *i, "replace");
|
||||
+ else
|
||||
+ r = sd_bus_call_method(
|
||||
+ bus,
|
||||
+ "org.freedesktop.systemd1",
|
||||
+ "/org/freedesktop/systemd1",
|
||||
+ "org.freedesktop.systemd1.Manager",
|
||||
+ "StopUnit",
|
||||
+ error,
|
||||
+ NULL,
|
||||
+ "ss", *i, "replace");
|
||||
+
|
||||
+ if (r < 0) {
|
||||
+ if (sd_bus_error_has_name(error, SD_BUS_ERROR_FILE_NOT_FOUND) ||
|
||||
+ sd_bus_error_has_name(error, "org.freedesktop.systemd1.LoadFailed") ||
|
||||
+ sd_bus_error_has_name(error, "org.freedesktop.systemd1.NoSuchUnit")) {
|
||||
+ /* This implementation does not exist. Try the next one. */
|
||||
+ sd_bus_error_free(error);
|
||||
+ continue;
|
||||
+ }
|
||||
|
||||
- if (r < 0) {
|
||||
- if (sd_bus_error_has_name(error, SD_BUS_ERROR_FILE_NOT_FOUND) ||
|
||||
- sd_bus_error_has_name(error, "org.freedesktop.systemd1.LoadFailed") ||
|
||||
- sd_bus_error_has_name(error, "org.freedesktop.systemd1.NoSuchUnit")) {
|
||||
- sd_bus_error_set_const(error, "org.freedesktop.timedate1.NoNTPSupport", "NTP not supported.");
|
||||
- return -ENOTSUP;
|
||||
+ return r;
|
||||
}
|
||||
|
||||
- return r;
|
||||
+ return 1;
|
||||
}
|
||||
|
||||
- return 0;
|
||||
+ sd_bus_error_set_const(error, "org.freedesktop.timedate1.NoNTPSupport", "NTP not supported.");
|
||||
+ return -ENOTSUP;
|
||||
}
|
||||
|
||||
static int context_enable_ntp(Context*c, sd_bus *bus, sd_bus_error *error) {
|
||||
+ _cleanup_strv_free_ char **l = NULL;
|
||||
+ char **i;
|
||||
int r;
|
||||
|
||||
assert(c);
|
||||
assert(bus);
|
||||
assert(error);
|
||||
|
||||
- if (c->use_ntp)
|
||||
- r = sd_bus_call_method(
|
||||
- bus,
|
||||
- "org.freedesktop.systemd1",
|
||||
- "/org/freedesktop/systemd1",
|
||||
- "org.freedesktop.systemd1.Manager",
|
||||
- "EnableUnitFiles",
|
||||
- error,
|
||||
- NULL,
|
||||
- "asbb", 1,
|
||||
- "systemd-timesyncd.service",
|
||||
- false, true);
|
||||
- else
|
||||
+ l = get_ntp_services();
|
||||
+ STRV_FOREACH(i, l) {
|
||||
+ if (c->use_ntp)
|
||||
+ r = sd_bus_call_method(
|
||||
+ bus,
|
||||
+ "org.freedesktop.systemd1",
|
||||
+ "/org/freedesktop/systemd1",
|
||||
+ "org.freedesktop.systemd1.Manager",
|
||||
+ "EnableUnitFiles",
|
||||
+ error,
|
||||
+ NULL,
|
||||
+ "asbb", 1, *i, false, true);
|
||||
+ else
|
||||
+ r = sd_bus_call_method(
|
||||
+ bus,
|
||||
+ "org.freedesktop.systemd1",
|
||||
+ "/org/freedesktop/systemd1",
|
||||
+ "org.freedesktop.systemd1.Manager",
|
||||
+ "DisableUnitFiles",
|
||||
+ error,
|
||||
+ NULL,
|
||||
+ "asb", 1, *i, false);
|
||||
+
|
||||
+ if (r < 0) {
|
||||
+ if (sd_bus_error_has_name(error, SD_BUS_ERROR_FILE_NOT_FOUND)) {
|
||||
+ /* This implementation does not exist. Try the next one. */
|
||||
+ sd_bus_error_free(error);
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ return r;
|
||||
+ }
|
||||
+
|
||||
r = sd_bus_call_method(
|
||||
bus,
|
||||
"org.freedesktop.systemd1",
|
||||
"/org/freedesktop/systemd1",
|
||||
"org.freedesktop.systemd1.Manager",
|
||||
- "DisableUnitFiles",
|
||||
+ "Reload",
|
||||
error,
|
||||
NULL,
|
||||
- "asb", 1,
|
||||
- "systemd-timesyncd.service",
|
||||
- false);
|
||||
-
|
||||
- if (r < 0) {
|
||||
- if (sd_bus_error_has_name(error, SD_BUS_ERROR_FILE_NOT_FOUND)) {
|
||||
- sd_bus_error_set_const(error, "org.freedesktop.timedate1.NoNTPSupport", "NTP not supported.");
|
||||
- return -ENOTSUP;
|
||||
- }
|
||||
+ NULL);
|
||||
+ if (r < 0)
|
||||
+ return r;
|
||||
|
||||
- return r;
|
||||
+ return 1;
|
||||
}
|
||||
|
||||
- r = sd_bus_call_method(
|
||||
- bus,
|
||||
- "org.freedesktop.systemd1",
|
||||
- "/org/freedesktop/systemd1",
|
||||
- "org.freedesktop.systemd1.Manager",
|
||||
- "Reload",
|
||||
- error,
|
||||
- NULL,
|
||||
- NULL);
|
||||
- if (r < 0)
|
||||
- return r;
|
||||
-
|
||||
- return 0;
|
||||
+ sd_bus_error_set_const(error, "org.freedesktop.timedate1.NoNTPSupport", "NTP not supported.");
|
||||
+ return -ENOTSUP;
|
||||
}
|
||||
|
||||
static int property_get_rtc_time(
|
@ -1,41 +0,0 @@
|
||||
From 2ed2be30664faa7076edd819ea4ae429fab8ac08 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Sun, 2 Nov 2014 09:42:01 -0500
|
||||
Subject: [PATCH] Revert "sysctl.d: default to fq_codel, fight bufferbloat"
|
||||
|
||||
This reverts commit e6c253e363dee77ef7e5c5f44c4ca55cded3fd47.
|
||||
|
||||
Conflicts:
|
||||
NEWS
|
||||
---
|
||||
NEWS | 2 ++
|
||||
sysctl.d/50-default.conf | 3 ---
|
||||
2 files changed, 2 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/NEWS b/NEWS
|
||||
index 078fabb1e5..c3d28a6394 100644
|
||||
--- a/NEWS
|
||||
+++ b/NEWS
|
||||
@@ -100,6 +100,8 @@ CHANGES WITH 217:
|
||||
servers that do not do forwarding, "fq" may perform better.
|
||||
Systems without a good clocksource should use "pfifo_fast".
|
||||
|
||||
+ [ reverted in this branch ]
|
||||
+
|
||||
* If kdbus is enabled during build a new option BusPolicy= is
|
||||
available for service units, that allows locking all service
|
||||
processes into a stricter bus policy, in order to limit
|
||||
diff --git a/sysctl.d/50-default.conf b/sysctl.d/50-default.conf
|
||||
index f18923399b..8fc9ab77a9 100644
|
||||
--- a/sysctl.d/50-default.conf
|
||||
+++ b/sysctl.d/50-default.conf
|
||||
@@ -25,9 +25,6 @@ net.ipv4.conf.all.accept_source_route = 0
|
||||
net.ipv4.conf.default.promote_secondaries = 1
|
||||
net.ipv4.conf.all.promote_secondaries = 1
|
||||
|
||||
-# Fair Queue CoDel packet scheduler to fight bufferbloat
|
||||
-net.core.default_qdisc = fq_codel
|
||||
-
|
||||
# Enable hard and soft link protection
|
||||
fs.protected_hardlinks = 1
|
||||
fs.protected_symlinks = 1
|
@ -1,54 +0,0 @@
|
||||
From 93871b345b76480e99b9a135006cad47e10acd7f Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Sun, 2 Nov 2014 10:02:41 -0500
|
||||
Subject: [PATCH] Revert "units: define appropriate job timeout actions when
|
||||
boot or shutdown timeouts are hit"
|
||||
|
||||
This reverts commit 3898b80d409ae16b049d46f883bf763417bb4c8a.
|
||||
|
||||
We have various jobs that run during early boot and might cause
|
||||
basic.target not to be reached within 15 minutes. E.g. Fedora has
|
||||
fedora-autorelabel.service, which can take an arbitrarily long time on
|
||||
a large and slow drive.
|
||||
---
|
||||
units/basic.target | 2 --
|
||||
units/poweroff.target | 2 --
|
||||
units/reboot.target | 2 --
|
||||
3 files changed, 6 deletions(-)
|
||||
|
||||
diff --git a/units/basic.target b/units/basic.target
|
||||
index 228f62c4b1..b890d48bbc 100644
|
||||
--- a/units/basic.target
|
||||
+++ b/units/basic.target
|
||||
@@ -11,5 +11,3 @@ Documentation=man:systemd.special(7)
|
||||
Requires=sysinit.target
|
||||
Wants=sockets.target timers.target paths.target slices.target
|
||||
After=sysinit.target sockets.target timers.target paths.target slices.target
|
||||
-JobTimeoutSec=15min
|
||||
-JobTimeoutAction=poweroff-force
|
||||
diff --git a/units/poweroff.target b/units/poweroff.target
|
||||
index dd92d816ca..71871033a5 100644
|
||||
--- a/units/poweroff.target
|
||||
+++ b/units/poweroff.target
|
||||
@@ -12,8 +12,6 @@ DefaultDependencies=no
|
||||
Requires=systemd-poweroff.service
|
||||
After=systemd-poweroff.service
|
||||
AllowIsolate=yes
|
||||
-JobTimeoutSec=30min
|
||||
-JobTimeoutAction=poweroff-force
|
||||
|
||||
[Install]
|
||||
Alias=ctrl-alt-del.target
|
||||
diff --git a/units/reboot.target b/units/reboot.target
|
||||
index 668b98d9e4..dec8f56796 100644
|
||||
--- a/units/reboot.target
|
||||
+++ b/units/reboot.target
|
||||
@@ -12,8 +12,6 @@ DefaultDependencies=no
|
||||
Requires=systemd-reboot.service
|
||||
After=systemd-reboot.service
|
||||
AllowIsolate=yes
|
||||
-JobTimeoutSec=30min
|
||||
-JobTimeoutAction=reboot-force
|
||||
|
||||
[Install]
|
||||
Alias=ctrl-alt-del.target
|
@ -1,38 +0,0 @@
|
||||
From 2f0a6c615496777ec37f6815b8516f8b3a25e82e Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Sun, 2 Nov 2014 10:03:49 -0500
|
||||
Subject: [PATCH] Revert "Update NEWS"
|
||||
|
||||
This reverts commit 4ffd29fda1a2621d8f1711ccaad723d327fef93a.
|
||||
---
|
||||
NEWS | 17 -----------------
|
||||
1 file changed, 17 deletions(-)
|
||||
|
||||
diff --git a/NEWS b/NEWS
|
||||
index c3d28a6394..a590b3101b 100644
|
||||
--- a/NEWS
|
||||
+++ b/NEWS
|
||||
@@ -22,23 +22,6 @@ CHANGES WITH 217:
|
||||
/run/systemd/user directory that was already previously
|
||||
supported, but is under the control of the user.
|
||||
|
||||
- * Job timeouts (i.e. time-outs on the time a job that is
|
||||
- queued stays in the run queue) can now optionally result in
|
||||
- immediate reboot or power-off actions (JobTimeoutAction= and
|
||||
- JobTimeoutRebootArgument=). This is useful on ".target"
|
||||
- units, to limit the maximum time a target remains
|
||||
- undispatched in the run queue, and to trigger an emergency
|
||||
- operation in such a case. This is now used by default to
|
||||
- turn off the system if boot-up (as defined by everything in
|
||||
- basic.target) hangs and does not complete for at least
|
||||
- 15min. Also, if power-off or reboot hang for at least 30min
|
||||
- an immediate power-off/reboot operation is triggered. This
|
||||
- functionality is particularly useful to increase reliability
|
||||
- on embedded devices, but also on laptops which might
|
||||
- accidentally get powered on when carried in a backpack and
|
||||
- whose boot stays stuck in a hard disk encryption passphrase
|
||||
- question.
|
||||
-
|
||||
* systemd-logind can be configured to also handle lid switch
|
||||
events even when the machine is docked or multiple displays
|
||||
are attached (HandleLidSwitchDocked= option).
|
@ -1,227 +0,0 @@
|
||||
From 32e659e2d7a50ebe19dd82db116518eb150f7317 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Sun, 2 Nov 2014 10:05:51 -0500
|
||||
Subject: [PATCH] Revert "login: remove multi-seat-x"
|
||||
|
||||
This reverts commit 3769415e6573da64fb80e31f4bb3f850cd99031e.
|
||||
|
||||
Conflicts:
|
||||
NEWS
|
||||
---
|
||||
.gitignore | 1 +
|
||||
Makefile.am | 14 ++++++
|
||||
NEWS | 6 ---
|
||||
TODO | 2 +
|
||||
configure.ac | 9 ++++
|
||||
src/login/multi-seat-x.c | 108 +++++++++++++++++++++++++++++++++++++++++++++++
|
||||
6 files changed, 134 insertions(+), 6 deletions(-)
|
||||
create mode 100644 src/login/multi-seat-x.c
|
||||
|
||||
diff --git a/.gitignore b/.gitignore
|
||||
index 0b71f0973b..f119b574c7 100644
|
||||
--- a/.gitignore
|
||||
+++ b/.gitignore
|
||||
@@ -93,6 +93,7 @@
|
||||
/systemd-machined
|
||||
/systemd-modeset
|
||||
/systemd-modules-load
|
||||
+/systemd-multi-seat-x
|
||||
/systemd-networkd
|
||||
/systemd-networkd-wait-online
|
||||
/systemd-notify
|
||||
diff --git a/Makefile.am b/Makefile.am
|
||||
index 3509665176..11a3033253 100644
|
||||
--- a/Makefile.am
|
||||
+++ b/Makefile.am
|
||||
@@ -5461,6 +5461,20 @@ SYSTEM_UNIT_ALIASES += \
|
||||
BUSNAMES_TARGET_WANTS += \
|
||||
org.freedesktop.login1.busname
|
||||
|
||||
+if ENABLE_MULTI_SEAT_X
|
||||
+
|
||||
+systemd_multi_seat_x_SOURCES = \
|
||||
+ src/login/multi-seat-x.c
|
||||
+
|
||||
+systemd_multi_seat_x_LDADD = \
|
||||
+ libsystemd-label.la \
|
||||
+ libsystemd-shared.la
|
||||
+
|
||||
+rootlibexec_PROGRAMS += \
|
||||
+ systemd-multi-seat-x
|
||||
+
|
||||
+endif
|
||||
+
|
||||
dist_udevrules_DATA += \
|
||||
src/login/70-uaccess.rules \
|
||||
src/login/70-power-switch.rules
|
||||
diff --git a/NEWS b/NEWS
|
||||
index a590b3101b..c85605f1d6 100644
|
||||
--- a/NEWS
|
||||
+++ b/NEWS
|
||||
@@ -127,12 +127,6 @@ CHANGES WITH 217:
|
||||
occur. Again: you need to update util-linux to at least
|
||||
v2.25 when updating systemd to v217.
|
||||
|
||||
- * The "multi-seat-x" tool has been removed from systemd, as
|
||||
- its functionality has been integrated into X servers 1.16,
|
||||
- and the tool is hence redundant. It is recommended to update
|
||||
- display managers invoking this tool to simply invoke X
|
||||
- directly from now on, again.
|
||||
-
|
||||
* Support for the new ALLOW_INTERACTIVE_AUTHORIZATION D-Bus
|
||||
message flag has been added for all of systemd's PolicyKit
|
||||
authenticated method calls has been added. In particular
|
||||
diff --git a/TODO b/TODO
|
||||
index b07d664715..64b24c18a7 100644
|
||||
--- a/TODO
|
||||
+++ b/TODO
|
||||
@@ -88,6 +88,8 @@ Features:
|
||||
|
||||
* maybe introduce AssertXYZ= similar to ConditionXYZ= that causes a unit to fail (instead of skipping it) if some condition is not true...
|
||||
|
||||
+* remove multi-seat-x now
|
||||
+
|
||||
* refcounting in sd-resolve is borked
|
||||
|
||||
* exponential backoff in timesyncd and resolved when we cannot reach a server
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 48e094cd80..e63d3dc809 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -1071,6 +1071,14 @@ fi
|
||||
AM_CONDITIONAL(ENABLE_EFI, [test "x$have_efi" = "xyes"])
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
+have_multi_seat_x=no
|
||||
+AC_ARG_ENABLE(multi_seat_x, AS_HELP_STRING([--disable-multi-seat-x], [do not build multi-seat-x]))
|
||||
+if test "x$enable_multi_seat_x" != "xno"; then
|
||||
+ have_multi_seat_x=yes
|
||||
+fi
|
||||
+AM_CONDITIONAL(ENABLE_MULTI_SEAT_X, [test "$have_multi_seat_x" = "yes"])
|
||||
+
|
||||
+# ------------------------------------------------------------------------------
|
||||
have_terminal=no
|
||||
AC_ARG_ENABLE(terminal, AS_HELP_STRING([--enable-terminal], [enable terminal support]))
|
||||
if test "x$enable_terminal" = "xyes"; then
|
||||
@@ -1379,6 +1387,7 @@ AC_MSG_RESULT([
|
||||
nss-myhostname: ${have_myhostname}
|
||||
gudev: ${enable_gudev}
|
||||
gintrospection: ${enable_introspection}
|
||||
+ multi-seat-x: ${have_multi_seat_x}
|
||||
terminal: ${have_terminal}
|
||||
kdbus: ${have_kdbus}
|
||||
Python: ${have_python}
|
||||
diff --git a/src/login/multi-seat-x.c b/src/login/multi-seat-x.c
|
||||
new file mode 100644
|
||||
index 0000000000..83760d4191
|
||||
--- /dev/null
|
||||
+++ b/src/login/multi-seat-x.c
|
||||
@@ -0,0 +1,108 @@
|
||||
+/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
|
||||
+
|
||||
+/***
|
||||
+ This file is part of systemd.
|
||||
+
|
||||
+ Copyright 2011 Lennart Poettering
|
||||
+
|
||||
+ systemd is free software; you can redistribute it and/or modify it
|
||||
+ under the terms of the GNU Lesser General Public License as published by
|
||||
+ the Free Software Foundation; either version 2.1 of the License, or
|
||||
+ (at your option) any later version.
|
||||
+
|
||||
+ systemd is distributed in the hope that it will be useful, but
|
||||
+ WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
+ Lesser General Public License for more details.
|
||||
+
|
||||
+ You should have received a copy of the GNU Lesser General Public License
|
||||
+ along with systemd; If not, see <http://www.gnu.org/licenses/>.
|
||||
+***/
|
||||
+
|
||||
+#include <string.h>
|
||||
+#include <unistd.h>
|
||||
+
|
||||
+#include "util.h"
|
||||
+#include "mkdir.h"
|
||||
+
|
||||
+int main(int argc, char *argv[]) {
|
||||
+
|
||||
+ int i;
|
||||
+ const char *seat = NULL;
|
||||
+ char **new_argv;
|
||||
+ _cleanup_free_ char *path = NULL;
|
||||
+ int r;
|
||||
+ _cleanup_fclose_ FILE *f = NULL;
|
||||
+
|
||||
+ /* This binary will go away as soon as X natively takes the
|
||||
+ * arguments in question as command line parameters, instead
|
||||
+ * of requiring them in the configuration file. */
|
||||
+
|
||||
+ /* If this file is removed, don't forget to remove the code
|
||||
+ * that invokes this in gdm and other display managers. */
|
||||
+
|
||||
+ for (i = 1; i < argc; i++)
|
||||
+ if (streq(argv[i], "-seat"))
|
||||
+ seat = argv[i+1];
|
||||
+
|
||||
+ if (isempty(seat) || streq(seat, "seat0")) {
|
||||
+ argv[0] = (char*) X_SERVER;
|
||||
+ execv(X_SERVER, argv);
|
||||
+ log_error("Failed to execute real X server: %m");
|
||||
+ goto fail;
|
||||
+ }
|
||||
+
|
||||
+ r = mkdir_safe_label("/run/systemd/multi-session-x", 0755, 0, 0);
|
||||
+ if (r < 0) {
|
||||
+ log_error("Failed to create directory: %s", strerror(-r));
|
||||
+ goto fail;
|
||||
+ }
|
||||
+
|
||||
+ path = strappend("/run/systemd/multi-session-x/", seat);
|
||||
+ if (!path) {
|
||||
+ log_oom();
|
||||
+ goto fail;
|
||||
+ }
|
||||
+
|
||||
+ f = fopen(path, "we");
|
||||
+ if (!f) {
|
||||
+ log_error("Failed to write configuration file: %m");
|
||||
+ goto fail;
|
||||
+ }
|
||||
+
|
||||
+ fprintf(f,
|
||||
+ "Section \"ServerFlags\"\n"
|
||||
+ " Option \"AutoAddDevices\" \"True\"\n"
|
||||
+ " Option \"AllowEmptyInput\" \"True\"\n"
|
||||
+ " Option \"DontVTSwitch\" \"True\"\n"
|
||||
+ "EndSection\n"
|
||||
+ "Section \"InputClass\"\n"
|
||||
+ " Identifier \"Force Input Devices to Seat\"\n"
|
||||
+ " Option \"GrabDevice\" \"True\"\n"
|
||||
+ "EndSection\n");
|
||||
+
|
||||
+ fflush(f);
|
||||
+
|
||||
+ if (ferror(f)) {
|
||||
+ log_error("Failed to write configuration file: %m");
|
||||
+ goto fail;
|
||||
+ }
|
||||
+
|
||||
+ fclose(f);
|
||||
+ f = NULL;
|
||||
+
|
||||
+ new_argv = newa(char*, argc + 3 + 1);
|
||||
+ memcpy(new_argv, argv, sizeof(char*) * (argc + 2 + 1));
|
||||
+
|
||||
+ new_argv[0] = (char*) X_SERVER;
|
||||
+ new_argv[argc+0] = (char*) "-config";
|
||||
+ new_argv[argc+1] = path;
|
||||
+ new_argv[argc+2] = (char*) "-sharevts";
|
||||
+ new_argv[argc+3] = NULL;
|
||||
+
|
||||
+ execv(X_SERVER, new_argv);
|
||||
+ log_error("Failed to execute real X server: %m");
|
||||
+
|
||||
+fail:
|
||||
+ return EXIT_FAILURE;
|
||||
+}
|
@ -1,22 +0,0 @@
|
||||
From 9bbe7b209c31fb3b31f7b0e1a66ae82b4c2768d9 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Sun, 2 Nov 2014 10:24:58 -0500
|
||||
Subject: [PATCH] Revert "service: add missing state table entry"
|
||||
|
||||
This reverts commit 1378a3b5a10444e6c9a17084c65032b4e1061c8e.
|
||||
---
|
||||
src/core/service.c | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/src/core/service.c b/src/core/service.c
|
||||
index f27e63eb9a..2b16778731 100644
|
||||
--- a/src/core/service.c
|
||||
+++ b/src/core/service.c
|
||||
@@ -2830,7 +2830,6 @@ static const char* const service_state_table[_SERVICE_STATE_MAX] = {
|
||||
[SERVICE_EXITED] = "exited",
|
||||
[SERVICE_RELOAD] = "reload",
|
||||
[SERVICE_STOP] = "stop",
|
||||
- [SERVICE_STOP_SIGABRT] = "stop-sigabrt",
|
||||
[SERVICE_STOP_SIGTERM] = "stop-sigterm",
|
||||
[SERVICE_STOP_SIGKILL] = "stop-sigkill",
|
||||
[SERVICE_STOP_POST] = "stop-post",
|
@ -1,397 +0,0 @@
|
||||
From d5cd1a02f0da4de24cce433b1759e3e297df0f5f Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Sun, 2 Nov 2014 10:25:06 -0500
|
||||
Subject: [PATCH] Revert "core: send sigabrt on watchdog timeout to get the
|
||||
stacktrace"
|
||||
|
||||
This reverts commit db2cb23b5b179707000d28a11efb3d888d06ee80.
|
||||
---
|
||||
TODO | 2 ++
|
||||
man/systemd.service.xml | 5 ++---
|
||||
src/core/busname.c | 2 +-
|
||||
src/core/mount.c | 3 +--
|
||||
src/core/scope.c | 2 +-
|
||||
src/core/service.c | 37 +++++++++++--------------------------
|
||||
src/core/service.h | 1 -
|
||||
src/core/socket.c | 3 +--
|
||||
src/core/swap.c | 3 +--
|
||||
src/core/unit.c | 24 ++++++------------------
|
||||
src/core/unit.h | 8 +-------
|
||||
11 files changed, 27 insertions(+), 63 deletions(-)
|
||||
|
||||
diff --git a/TODO b/TODO
|
||||
index 64b24c18a7..68506671fa 100644
|
||||
--- a/TODO
|
||||
+++ b/TODO
|
||||
@@ -48,6 +48,8 @@ Features:
|
||||
|
||||
* consider showing the unit names during boot up in the status output, not just the unit descriptions
|
||||
|
||||
+* send SIGABRT when a service watchdog is triggered, by default, so that we acquire a backtrace of the hang.
|
||||
+
|
||||
* dhcp: do we allow configuring dhcp routes on interfaces that are not the one we got the dhcp info from?
|
||||
|
||||
* maybe allow timer units with an empty Units= setting, so that they
|
||||
diff --git a/man/systemd.service.xml b/man/systemd.service.xml
|
||||
index e563b1968b..115d1692ed 100644
|
||||
--- a/man/systemd.service.xml
|
||||
+++ b/man/systemd.service.xml
|
||||
@@ -593,9 +593,8 @@
|
||||
(i.e. the "keep-alive ping"). If the time
|
||||
between two such calls is larger than
|
||||
the configured time, then the service
|
||||
- is placed in a failed state and it will
|
||||
- be terminated with <varname>SIGABRT</varname>.
|
||||
- By setting <varname>Restart=</varname> to
|
||||
+ is placed in a failed state. By
|
||||
+ setting <varname>Restart=</varname> to
|
||||
<option>on-failure</option> or
|
||||
<option>always</option>, the service
|
||||
will be automatically restarted. The
|
||||
diff --git a/src/core/busname.c b/src/core/busname.c
|
||||
index 68cb6ca7b7..22d2a6d24b 100644
|
||||
--- a/src/core/busname.c
|
||||
+++ b/src/core/busname.c
|
||||
@@ -446,7 +446,7 @@ static void busname_enter_signal(BusName *n, BusNameState state, BusNameResult f
|
||||
|
||||
r = unit_kill_context(UNIT(n),
|
||||
&kill_context,
|
||||
- state != BUSNAME_SIGTERM ? KILL_KILL : KILL_TERMINATE,
|
||||
+ state != BUSNAME_SIGTERM,
|
||||
-1,
|
||||
n->control_pid,
|
||||
false);
|
||||
diff --git a/src/core/mount.c b/src/core/mount.c
|
||||
index 01243c381a..e284357c6f 100644
|
||||
--- a/src/core/mount.c
|
||||
+++ b/src/core/mount.c
|
||||
@@ -775,8 +775,7 @@ static void mount_enter_signal(Mount *m, MountState state, MountResult f) {
|
||||
r = unit_kill_context(
|
||||
UNIT(m),
|
||||
&m->kill_context,
|
||||
- (state != MOUNT_MOUNTING_SIGTERM && state != MOUNT_UNMOUNTING_SIGTERM && state != MOUNT_REMOUNTING_SIGTERM) ?
|
||||
- KILL_KILL : KILL_TERMINATE,
|
||||
+ state != MOUNT_MOUNTING_SIGTERM && state != MOUNT_UNMOUNTING_SIGTERM && state != MOUNT_REMOUNTING_SIGTERM,
|
||||
-1,
|
||||
m->control_pid,
|
||||
false);
|
||||
diff --git a/src/core/scope.c b/src/core/scope.c
|
||||
index 0f7c1f97ce..e8f9e8dd73 100644
|
||||
--- a/src/core/scope.c
|
||||
+++ b/src/core/scope.c
|
||||
@@ -243,7 +243,7 @@ static void scope_enter_signal(Scope *s, ScopeState state, ScopeResult f) {
|
||||
r = unit_kill_context(
|
||||
UNIT(s),
|
||||
&s->kill_context,
|
||||
- state != SCOPE_STOP_SIGTERM ? KILL_KILL : KILL_TERMINATE,
|
||||
+ state != SCOPE_STOP_SIGTERM,
|
||||
-1, -1, false);
|
||||
if (r < 0)
|
||||
goto fail;
|
||||
diff --git a/src/core/service.c b/src/core/service.c
|
||||
index 2b16778731..d160c4e93b 100644
|
||||
--- a/src/core/service.c
|
||||
+++ b/src/core/service.c
|
||||
@@ -56,7 +56,6 @@ static const UnitActiveState state_translation_table[_SERVICE_STATE_MAX] = {
|
||||
[SERVICE_EXITED] = UNIT_ACTIVE,
|
||||
[SERVICE_RELOAD] = UNIT_RELOADING,
|
||||
[SERVICE_STOP] = UNIT_DEACTIVATING,
|
||||
- [SERVICE_STOP_SIGABRT] = UNIT_DEACTIVATING,
|
||||
[SERVICE_STOP_SIGTERM] = UNIT_DEACTIVATING,
|
||||
[SERVICE_STOP_SIGKILL] = UNIT_DEACTIVATING,
|
||||
[SERVICE_STOP_POST] = UNIT_DEACTIVATING,
|
||||
@@ -77,7 +76,6 @@ static const UnitActiveState state_translation_table_idle[_SERVICE_STATE_MAX] =
|
||||
[SERVICE_EXITED] = UNIT_ACTIVE,
|
||||
[SERVICE_RELOAD] = UNIT_RELOADING,
|
||||
[SERVICE_STOP] = UNIT_DEACTIVATING,
|
||||
- [SERVICE_STOP_SIGABRT] = UNIT_DEACTIVATING,
|
||||
[SERVICE_STOP_SIGTERM] = UNIT_DEACTIVATING,
|
||||
[SERVICE_STOP_SIGKILL] = UNIT_DEACTIVATING,
|
||||
[SERVICE_STOP_POST] = UNIT_DEACTIVATING,
|
||||
@@ -665,7 +663,7 @@ static void service_set_state(Service *s, ServiceState state) {
|
||||
SERVICE_START_PRE, SERVICE_START, SERVICE_START_POST,
|
||||
SERVICE_RELOAD,
|
||||
SERVICE_STOP, SERVICE_STOP_SIGTERM, SERVICE_STOP_SIGKILL,
|
||||
- SERVICE_STOP_SIGABRT, SERVICE_STOP_POST,
|
||||
+ SERVICE_STOP_POST,
|
||||
SERVICE_FINAL_SIGTERM, SERVICE_FINAL_SIGKILL,
|
||||
SERVICE_AUTO_RESTART))
|
||||
s->timer_event_source = sd_event_source_unref(s->timer_event_source);
|
||||
@@ -674,7 +672,7 @@ static void service_set_state(Service *s, ServiceState state) {
|
||||
SERVICE_START, SERVICE_START_POST,
|
||||
SERVICE_RUNNING, SERVICE_RELOAD,
|
||||
SERVICE_STOP, SERVICE_STOP_SIGTERM, SERVICE_STOP_SIGKILL,
|
||||
- SERVICE_STOP_SIGABRT, SERVICE_STOP_POST,
|
||||
+ SERVICE_STOP_POST,
|
||||
SERVICE_FINAL_SIGTERM, SERVICE_FINAL_SIGKILL)) {
|
||||
service_unwatch_main_pid(s);
|
||||
s->main_command = NULL;
|
||||
@@ -684,7 +682,7 @@ static void service_set_state(Service *s, ServiceState state) {
|
||||
SERVICE_START_PRE, SERVICE_START, SERVICE_START_POST,
|
||||
SERVICE_RELOAD,
|
||||
SERVICE_STOP, SERVICE_STOP_SIGTERM, SERVICE_STOP_SIGKILL,
|
||||
- SERVICE_STOP_SIGABRT, SERVICE_STOP_POST,
|
||||
+ SERVICE_STOP_POST,
|
||||
SERVICE_FINAL_SIGTERM, SERVICE_FINAL_SIGKILL)) {
|
||||
service_unwatch_control_pid(s);
|
||||
s->control_command = NULL;
|
||||
@@ -698,7 +696,7 @@ static void service_set_state(Service *s, ServiceState state) {
|
||||
SERVICE_START_PRE, SERVICE_START, SERVICE_START_POST,
|
||||
SERVICE_RUNNING, SERVICE_RELOAD,
|
||||
SERVICE_STOP, SERVICE_STOP_SIGTERM, SERVICE_STOP_SIGKILL, SERVICE_STOP_POST,
|
||||
- SERVICE_STOP_SIGABRT, SERVICE_FINAL_SIGTERM, SERVICE_FINAL_SIGKILL) &&
|
||||
+ SERVICE_FINAL_SIGTERM, SERVICE_FINAL_SIGKILL) &&
|
||||
!(state == SERVICE_DEAD && UNIT(s)->job)) {
|
||||
service_close_socket_fd(s);
|
||||
service_connection_unref(s);
|
||||
@@ -752,7 +750,7 @@ static int service_coldplug(Unit *u) {
|
||||
SERVICE_START_PRE, SERVICE_START, SERVICE_START_POST,
|
||||
SERVICE_RELOAD,
|
||||
SERVICE_STOP, SERVICE_STOP_SIGTERM, SERVICE_STOP_SIGKILL,
|
||||
- SERVICE_STOP_SIGABRT, SERVICE_STOP_POST,
|
||||
+ SERVICE_STOP_POST,
|
||||
SERVICE_FINAL_SIGTERM, SERVICE_FINAL_SIGKILL)) {
|
||||
|
||||
usec_t k;
|
||||
@@ -781,7 +779,7 @@ static int service_coldplug(Unit *u) {
|
||||
SERVICE_START, SERVICE_START_POST,
|
||||
SERVICE_RUNNING, SERVICE_RELOAD,
|
||||
SERVICE_STOP, SERVICE_STOP_SIGTERM, SERVICE_STOP_SIGKILL,
|
||||
- SERVICE_STOP_SIGABRT, SERVICE_STOP_POST,
|
||||
+ SERVICE_STOP_POST,
|
||||
SERVICE_FINAL_SIGTERM, SERVICE_FINAL_SIGKILL))) {
|
||||
r = unit_watch_pid(UNIT(s), s->main_pid);
|
||||
if (r < 0)
|
||||
@@ -793,7 +791,7 @@ static int service_coldplug(Unit *u) {
|
||||
SERVICE_START_PRE, SERVICE_START, SERVICE_START_POST,
|
||||
SERVICE_RELOAD,
|
||||
SERVICE_STOP, SERVICE_STOP_SIGTERM, SERVICE_STOP_SIGKILL,
|
||||
- SERVICE_STOP_SIGABRT, SERVICE_STOP_POST,
|
||||
+ SERVICE_STOP_POST,
|
||||
SERVICE_FINAL_SIGTERM, SERVICE_FINAL_SIGKILL)) {
|
||||
r = unit_watch_pid(UNIT(s), s->control_pid);
|
||||
if (r < 0)
|
||||
@@ -1183,8 +1181,7 @@ static void service_enter_signal(Service *s, ServiceState state, ServiceResult f
|
||||
r = unit_kill_context(
|
||||
UNIT(s),
|
||||
&s->kill_context,
|
||||
- (state != SERVICE_STOP_SIGTERM && state != SERVICE_FINAL_SIGTERM && state != SERVICE_STOP_SIGABRT) ?
|
||||
- KILL_KILL : (state == SERVICE_STOP_SIGABRT ? KILL_ABORT : KILL_TERMINATE),
|
||||
+ state != SERVICE_STOP_SIGTERM && state != SERVICE_FINAL_SIGTERM,
|
||||
s->main_pid,
|
||||
s->control_pid,
|
||||
s->main_pid_alien);
|
||||
@@ -1200,7 +1197,7 @@ static void service_enter_signal(Service *s, ServiceState state, ServiceResult f
|
||||
}
|
||||
|
||||
service_set_state(s, state);
|
||||
- } else if (state == SERVICE_STOP_SIGTERM || state == SERVICE_STOP_SIGABRT)
|
||||
+ } else if (state == SERVICE_STOP_SIGTERM)
|
||||
service_enter_signal(s, SERVICE_STOP_SIGKILL, SERVICE_SUCCESS);
|
||||
else if (state == SERVICE_STOP_SIGKILL)
|
||||
service_enter_stop_post(s, SERVICE_SUCCESS);
|
||||
@@ -1214,8 +1211,7 @@ static void service_enter_signal(Service *s, ServiceState state, ServiceResult f
|
||||
fail:
|
||||
log_warning_unit(UNIT(s)->id, "%s failed to kill processes: %s", UNIT(s)->id, strerror(-r));
|
||||
|
||||
- if (state == SERVICE_STOP_SIGTERM || state == SERVICE_STOP_SIGKILL ||
|
||||
- state == SERVICE_STOP_SIGABRT)
|
||||
+ if (state == SERVICE_STOP_SIGTERM || state == SERVICE_STOP_SIGKILL)
|
||||
service_enter_stop_post(s, SERVICE_FAILURE_RESOURCES);
|
||||
else
|
||||
service_enter_dead(s, SERVICE_FAILURE_RESOURCES, true);
|
||||
@@ -1641,7 +1637,6 @@ static int service_start(Unit *u) {
|
||||
/* We cannot fulfill this request right now, try again later
|
||||
* please! */
|
||||
if (s->state == SERVICE_STOP ||
|
||||
- s->state == SERVICE_STOP_SIGABRT ||
|
||||
s->state == SERVICE_STOP_SIGTERM ||
|
||||
s->state == SERVICE_STOP_SIGKILL ||
|
||||
s->state == SERVICE_STOP_POST ||
|
||||
@@ -1700,7 +1695,6 @@ static int service_stop(Unit *u) {
|
||||
|
||||
/* Already on it */
|
||||
if (s->state == SERVICE_STOP ||
|
||||
- s->state == SERVICE_STOP_SIGABRT ||
|
||||
s->state == SERVICE_STOP_SIGTERM ||
|
||||
s->state == SERVICE_STOP_SIGKILL ||
|
||||
s->state == SERVICE_STOP_POST ||
|
||||
@@ -2132,7 +2126,6 @@ static void service_notify_cgroup_empty_event(Unit *u) {
|
||||
service_enter_running(s, SERVICE_SUCCESS);
|
||||
break;
|
||||
|
||||
- case SERVICE_STOP_SIGABRT:
|
||||
case SERVICE_STOP_SIGTERM:
|
||||
case SERVICE_STOP_SIGKILL:
|
||||
|
||||
@@ -2259,7 +2252,6 @@ static void service_sigchld_event(Unit *u, pid_t pid, int code, int status) {
|
||||
service_enter_running(s, f);
|
||||
break;
|
||||
|
||||
- case SERVICE_STOP_SIGABRT:
|
||||
case SERVICE_STOP_SIGTERM:
|
||||
case SERVICE_STOP_SIGKILL:
|
||||
|
||||
@@ -2400,7 +2392,6 @@ static void service_sigchld_event(Unit *u, pid_t pid, int code, int status) {
|
||||
service_enter_signal(s, SERVICE_STOP_SIGTERM, f);
|
||||
break;
|
||||
|
||||
- case SERVICE_STOP_SIGABRT:
|
||||
case SERVICE_STOP_SIGTERM:
|
||||
case SERVICE_STOP_SIGKILL:
|
||||
if (main_pid_good(s) <= 0)
|
||||
@@ -2470,12 +2461,6 @@ static int service_dispatch_timer(sd_event_source *source, usec_t usec, void *us
|
||||
service_enter_signal(s, SERVICE_STOP_SIGTERM, SERVICE_FAILURE_TIMEOUT);
|
||||
break;
|
||||
|
||||
- case SERVICE_STOP_SIGABRT:
|
||||
- log_warning_unit(UNIT(s)->id,
|
||||
- "%s stop-sigabrt timed out. Terminating.", UNIT(s)->id);
|
||||
- service_enter_signal(s, SERVICE_STOP_SIGTERM, s->result);
|
||||
- break;
|
||||
-
|
||||
case SERVICE_STOP_SIGTERM:
|
||||
if (s->kill_context.send_sigkill) {
|
||||
log_warning_unit(UNIT(s)->id, "%s stop-sigterm timed out. Killing.", UNIT(s)->id);
|
||||
@@ -2543,7 +2528,7 @@ static int service_dispatch_watchdog(sd_event_source *source, usec_t usec, void
|
||||
log_error_unit(UNIT(s)->id, "%s watchdog timeout (limit %s)!", UNIT(s)->id,
|
||||
format_timespan(t, sizeof(t), s->watchdog_usec, 1));
|
||||
|
||||
- service_enter_signal(s, SERVICE_STOP_SIGABRT, SERVICE_FAILURE_WATCHDOG);
|
||||
+ service_enter_signal(s, SERVICE_STOP_SIGTERM, SERVICE_FAILURE_WATCHDOG);
|
||||
|
||||
return 0;
|
||||
}
|
||||
diff --git a/src/core/service.h b/src/core/service.h
|
||||
index 54fbe46fa4..0db0c4d64c 100644
|
||||
--- a/src/core/service.h
|
||||
+++ b/src/core/service.h
|
||||
@@ -39,7 +39,6 @@ typedef enum ServiceState {
|
||||
SERVICE_EXITED, /* Nothing is running anymore, but RemainAfterExit is true hence this is OK */
|
||||
SERVICE_RELOAD,
|
||||
SERVICE_STOP, /* No STOP_PRE state, instead just register multiple STOP executables */
|
||||
- SERVICE_STOP_SIGABRT, /* Watchdog timeout */
|
||||
SERVICE_STOP_SIGTERM,
|
||||
SERVICE_STOP_SIGKILL,
|
||||
SERVICE_STOP_POST,
|
||||
diff --git a/src/core/socket.c b/src/core/socket.c
|
||||
index 6ba8338d8b..9004cb42cf 100644
|
||||
--- a/src/core/socket.c
|
||||
+++ b/src/core/socket.c
|
||||
@@ -1578,8 +1578,7 @@ static void socket_enter_signal(Socket *s, SocketState state, SocketResult f) {
|
||||
r = unit_kill_context(
|
||||
UNIT(s),
|
||||
&s->kill_context,
|
||||
- (state != SOCKET_STOP_PRE_SIGTERM && state != SOCKET_FINAL_SIGTERM) ?
|
||||
- KILL_KILL : KILL_TERMINATE,
|
||||
+ state != SOCKET_STOP_PRE_SIGTERM && state != SOCKET_FINAL_SIGTERM,
|
||||
-1,
|
||||
s->control_pid,
|
||||
false);
|
||||
diff --git a/src/core/swap.c b/src/core/swap.c
|
||||
index 1add722bf1..13e12ad67a 100644
|
||||
--- a/src/core/swap.c
|
||||
+++ b/src/core/swap.c
|
||||
@@ -687,8 +687,7 @@ static void swap_enter_signal(Swap *s, SwapState state, SwapResult f) {
|
||||
r = unit_kill_context(
|
||||
UNIT(s),
|
||||
&s->kill_context,
|
||||
- (state != SWAP_ACTIVATING_SIGTERM && state != SWAP_DEACTIVATING_SIGTERM) ?
|
||||
- KILL_KILL : KILL_TERMINATE,
|
||||
+ state != SWAP_ACTIVATING_SIGTERM && state != SWAP_DEACTIVATING_SIGTERM,
|
||||
-1,
|
||||
s->control_pid,
|
||||
false);
|
||||
diff --git a/src/core/unit.c b/src/core/unit.c
|
||||
index 84f210a312..489ea1e502 100644
|
||||
--- a/src/core/unit.c
|
||||
+++ b/src/core/unit.c
|
||||
@@ -3313,7 +3313,7 @@ int unit_make_transient(Unit *u) {
|
||||
int unit_kill_context(
|
||||
Unit *u,
|
||||
KillContext *c,
|
||||
- KillOperation k,
|
||||
+ bool sigkill,
|
||||
pid_t main_pid,
|
||||
pid_t control_pid,
|
||||
bool main_pid_alien) {
|
||||
@@ -3326,19 +3326,7 @@ int unit_kill_context(
|
||||
if (c->kill_mode == KILL_NONE)
|
||||
return 0;
|
||||
|
||||
- switch (k) {
|
||||
- case KILL_KILL:
|
||||
- sig = SIGKILL;
|
||||
- break;
|
||||
- case KILL_ABORT:
|
||||
- sig = SIGABRT;
|
||||
- break;
|
||||
- case KILL_TERMINATE:
|
||||
- sig = c->kill_signal;
|
||||
- break;
|
||||
- default:
|
||||
- assert_not_reached("KillOperation unknown");
|
||||
- }
|
||||
+ sig = sigkill ? SIGKILL : c->kill_signal;
|
||||
|
||||
if (main_pid > 0) {
|
||||
r = kill_and_sigcont(main_pid, sig);
|
||||
@@ -3352,7 +3340,7 @@ int unit_kill_context(
|
||||
if (!main_pid_alien)
|
||||
wait_for_exit = true;
|
||||
|
||||
- if (c->send_sighup && k != KILL_KILL)
|
||||
+ if (c->send_sighup && !sigkill)
|
||||
kill(main_pid, SIGHUP);
|
||||
}
|
||||
}
|
||||
@@ -3368,12 +3356,12 @@ int unit_kill_context(
|
||||
} else {
|
||||
wait_for_exit = true;
|
||||
|
||||
- if (c->send_sighup && k != KILL_KILL)
|
||||
+ if (c->send_sighup && !sigkill)
|
||||
kill(control_pid, SIGHUP);
|
||||
}
|
||||
}
|
||||
|
||||
- if ((c->kill_mode == KILL_CONTROL_GROUP || (c->kill_mode == KILL_MIXED && k == KILL_KILL)) && u->cgroup_path) {
|
||||
+ if ((c->kill_mode == KILL_CONTROL_GROUP || (c->kill_mode == KILL_MIXED && sigkill)) && u->cgroup_path) {
|
||||
_cleanup_set_free_ Set *pid_set = NULL;
|
||||
|
||||
/* Exclude the main/control pids from being killed via the cgroup */
|
||||
@@ -3397,7 +3385,7 @@ int unit_kill_context(
|
||||
|
||||
/* wait_for_exit = true; */
|
||||
|
||||
- if (c->send_sighup && k != KILL_KILL) {
|
||||
+ if (c->send_sighup && !sigkill) {
|
||||
set_free(pid_set);
|
||||
|
||||
pid_set = unit_pid_set(main_pid, control_pid);
|
||||
diff --git a/src/core/unit.h b/src/core/unit.h
|
||||
index 081ab18f10..bbad546356 100644
|
||||
--- a/src/core/unit.h
|
||||
+++ b/src/core/unit.h
|
||||
@@ -54,12 +54,6 @@ enum UnitActiveState {
|
||||
_UNIT_ACTIVE_STATE_INVALID = -1
|
||||
};
|
||||
|
||||
-typedef enum KillOperation {
|
||||
- KILL_TERMINATE,
|
||||
- KILL_KILL,
|
||||
- KILL_ABORT,
|
||||
-} KillOperation;
|
||||
-
|
||||
static inline bool UNIT_IS_ACTIVE_OR_RELOADING(UnitActiveState t) {
|
||||
return t == UNIT_ACTIVE || t == UNIT_RELOADING;
|
||||
}
|
||||
@@ -582,7 +576,7 @@ int unit_write_drop_in_private_format(Unit *u, UnitSetPropertiesMode mode, const
|
||||
|
||||
int unit_remove_drop_in(Unit *u, UnitSetPropertiesMode mode, const char *name);
|
||||
|
||||
-int unit_kill_context(Unit *u, KillContext *c, KillOperation k, pid_t main_pid, pid_t control_pid, bool main_pid_alien);
|
||||
+int unit_kill_context(Unit *u, KillContext *c, bool sigkill, pid_t main_pid, pid_t control_pid, bool main_pid_alien);
|
||||
|
||||
int unit_make_transient(Unit *u);
|
||||
|
@ -1,23 +0,0 @@
|
||||
From 6bb37d22af95d11df7f487f3e34abc97fa5fa9bf Mon Sep 17 00:00:00 2001
|
||||
From: Lennart Poettering <lennart@poettering.net>
|
||||
Date: Tue, 28 Oct 2014 20:36:32 +0100
|
||||
Subject: [PATCH] NEWS: well, it's Options= now, not Discard=
|
||||
|
||||
(cherry picked from commit c4ac990007cd0069bb7e76ec15dd731320f382fd)
|
||||
---
|
||||
NEWS | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/NEWS b/NEWS
|
||||
index c85605f1d6..bf8d0ac242 100644
|
||||
--- a/NEWS
|
||||
+++ b/NEWS
|
||||
@@ -59,7 +59,7 @@ CHANGES WITH 217:
|
||||
rotating media anymore, and nobody stepped up to actively
|
||||
maintain this component of systemd it has now been removed.
|
||||
|
||||
- * Swap units can use Discard= to specify discard options.
|
||||
+ * Swap units can use Options= to specify discard options.
|
||||
Discard options specified for swaps in /etc/fstab are now
|
||||
respected.
|
||||
|
@ -1,23 +0,0 @@
|
||||
From 8207682d7a40270e6581515e3537adaff885a072 Mon Sep 17 00:00:00 2001
|
||||
From: Lennart Poettering <lennart@poettering.net>
|
||||
Date: Wed, 29 Oct 2014 17:58:43 +0100
|
||||
Subject: [PATCH] sd-bus: properly handle removals of non-existing matches
|
||||
|
||||
(cherry picked from commit ef7b6c0190fefaacf6d8f8e1a6dda4ba8b98091b)
|
||||
---
|
||||
src/libsystemd/sd-bus/bus-match.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/libsystemd/sd-bus/bus-match.c b/src/libsystemd/sd-bus/bus-match.c
|
||||
index 18afe0f12a..5658c61ba7 100644
|
||||
--- a/src/libsystemd/sd-bus/bus-match.c
|
||||
+++ b/src/libsystemd/sd-bus/bus-match.c
|
||||
@@ -537,7 +537,7 @@ static int bus_match_find_compare_value(
|
||||
else if (BUS_MATCH_CAN_HASH(t))
|
||||
n = hashmap_get(c->compare.children, value_str);
|
||||
else {
|
||||
- for (n = c->child; !value_node_same(n, t, value_u8, value_str); n = n->next)
|
||||
+ for (n = c->child; n && !value_node_same(n, t, value_u8, value_str); n = n->next)
|
||||
;
|
||||
}
|
||||
|
@ -1,32 +0,0 @@
|
||||
From 5b6b524662ddc3178b4d8c2e51eba5d023ad08c4 Mon Sep 17 00:00:00 2001
|
||||
From: Dave Reisner <dreisner@archlinux.org>
|
||||
Date: Wed, 29 Oct 2014 13:32:43 -0400
|
||||
Subject: [PATCH] nspawn: ignore EEXIST when creating mount point
|
||||
|
||||
A combination of commits f3c80515c and 79d80fc14 cause nspawn to
|
||||
silently fail with a commandline such as:
|
||||
|
||||
# systemd-nspawn -D /build/extra-x86_64 --bind=/usr
|
||||
|
||||
strace shows the culprit:
|
||||
|
||||
[pid 27868] writev(2, [{"Failed to create mount point /build/extra-x86_64/usr: File exists", 82}, {"\n", 1}], 2) = 83
|
||||
|
||||
(cherry picked from commit 1ab19cb167b32967556eefd8f6d3df0e3de7d67d)
|
||||
---
|
||||
src/nspawn/nspawn.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
|
||||
index b6d9bc631c..d88987a580 100644
|
||||
--- a/src/nspawn/nspawn.c
|
||||
+++ b/src/nspawn/nspawn.c
|
||||
@@ -758,7 +758,7 @@ static int mount_binds(const char *dest, char **l, bool ro) {
|
||||
* and char devices. */
|
||||
if (S_ISDIR(source_st.st_mode)) {
|
||||
r = mkdir_label(where, 0755);
|
||||
- if (r < 0) {
|
||||
+ if (r < 0 && errno != EEXIST) {
|
||||
log_error("Failed to create mount point %s: %s", where, strerror(-r));
|
||||
|
||||
return r;
|
@ -1,40 +0,0 @@
|
||||
From c96c14e1f545e6533c781e33c2238d1433deb30f Mon Sep 17 00:00:00 2001
|
||||
From: Kay Sievers <kay@vrfy.org>
|
||||
Date: Thu, 30 Oct 2014 01:18:34 +0100
|
||||
Subject: [PATCH] udev: path_id - update comments
|
||||
|
||||
(cherry picked from commit a42cdff19f2d34f12ceca0f40707421a8aaa2c2f)
|
||||
---
|
||||
src/udev/udev-builtin-path_id.c | 12 ++++++------
|
||||
1 file changed, 6 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/src/udev/udev-builtin-path_id.c b/src/udev/udev-builtin-path_id.c
|
||||
index 0d247f6b5a..df996cb17a 100644
|
||||
--- a/src/udev/udev-builtin-path_id.c
|
||||
+++ b/src/udev/udev-builtin-path_id.c
|
||||
@@ -548,9 +548,9 @@ static int builtin_path_id(struct udev_device *dev, int argc, char *argv[], bool
|
||||
}
|
||||
|
||||
/*
|
||||
- * Do return devices with have an unknown type of parent device, they
|
||||
- * might produce conflicting IDs below multiple independent parent
|
||||
- * devices.
|
||||
+ * Do not return devices with an unknown parent device type. They
|
||||
+ * might produce conflicting IDs if the parent does not provide a
|
||||
+ * unique and predictable name.
|
||||
*/
|
||||
if (!supported_parent) {
|
||||
free(path);
|
||||
@@ -558,9 +558,9 @@ static int builtin_path_id(struct udev_device *dev, int argc, char *argv[], bool
|
||||
}
|
||||
|
||||
/*
|
||||
- * Do not return a have-only a single-parent block devices, some
|
||||
- * have entire hidden buses behind it, and not create predictable
|
||||
- * IDs that way.
|
||||
+ * Do not return block devices without a well-known transport. Some
|
||||
+ * devices do not expose their buses and do not provide a unique
|
||||
+ * and predictable name that way.
|
||||
*/
|
||||
if (streq(udev_device_get_subsystem(dev), "block") && !supported_transport) {
|
||||
free(path);
|
@ -1,71 +0,0 @@
|
||||
From 1c7a80d7748ee8c4117ccbb628274413f2c7cb59 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Wed, 29 Oct 2014 22:25:33 -0400
|
||||
Subject: [PATCH] bash-completion: rework startable/restartable units once more
|
||||
|
||||
I tried to use 'systemctl --all list-units' to filter unit files, but
|
||||
this always filters out unit files which are not loaded. We want to complete
|
||||
systemctl start with those units too, so this approach is not going to work.
|
||||
|
||||
New version is rather slow, but hopefully correct.
|
||||
|
||||
(cherry picked from commit 9ff8af5460d57dfab78a1137ec743b539715e82a)
|
||||
---
|
||||
shell-completion/bash/systemctl.in | 27 ++++++++++++++-------------
|
||||
1 file changed, 14 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/shell-completion/bash/systemctl.in b/shell-completion/bash/systemctl.in
|
||||
index 1c44a8df01..9e538a9a5b 100644
|
||||
--- a/shell-completion/bash/systemctl.in
|
||||
+++ b/shell-completion/bash/systemctl.in
|
||||
@@ -52,20 +52,23 @@ __filter_units_by_property () {
|
||||
}
|
||||
|
||||
__get_all_units () { { __systemctl $1 list-unit-files; __systemctl $1 list-units --all; } \
|
||||
- | { while read -r a b; do echo " $a"; done; }; }
|
||||
+ | { while read -r a b; do [[ $a =~ @\. ]] || echo " $a"; done; }; }
|
||||
__get_template_names () { __systemctl $1 list-unit-files \
|
||||
| { while read -r a b; do [[ $a =~ @\. ]] && echo " ${a%%@.*}@"; done; }; }
|
||||
|
||||
__get_active_units () { __systemctl $1 list-units \
|
||||
| { while read -r a b; do echo " $a"; done; }; }
|
||||
__get_startable_units () {
|
||||
- # find inactive or failed units, filter out masked and not-found
|
||||
- __systemctl $1 list-units --state inactive,failed -- $( __get_all_units ) | \
|
||||
- { while read -r a b c d; do [[ $b == "loaded" ]] && echo " $a"; done; }; }
|
||||
+ # find startable inactive units
|
||||
+ __filter_units_by_property $mode LoadState loaded $(
|
||||
+ __filter_units_by_property $mode ActiveState inactive $(
|
||||
+ __filter_units_by_property $mode CanStart yes $( __get_all_units )))
|
||||
+}
|
||||
__get_restartable_units () {
|
||||
- # find !masked, filter out masked and not-found
|
||||
- __systemctl $1 list-units --state active,inactive,failed -- $( __get_all_units ) | \
|
||||
- { while read -r a b c d; do [[ $b == "loaded" ]] && echo " $a"; done; }; }
|
||||
+ # filter out masked and not-found
|
||||
+ __filter_units_by_property $mode LoadState loaded $(
|
||||
+ __filter_units_by_property $mode CanStart yes $( __get_all_units ))
|
||||
+}
|
||||
__get_failed_units () { __systemctl $1 list-units \
|
||||
| { while read -r a b c d; do [[ $c == "failed" ]] && echo " $a"; done; }; }
|
||||
__get_enabled_units () { __systemctl $1 list-unit-files \
|
||||
@@ -186,15 +189,13 @@ _systemctl () {
|
||||
compopt -o filenames
|
||||
|
||||
elif __contains_word "$verb" ${VERBS[STARTABLE_UNITS]}; then
|
||||
- comps=$( __filter_units_by_property $mode CanStart yes \
|
||||
- $( __get_startable_units $mode);
|
||||
- __get_template_names $mode)
|
||||
+ comps=$( __get_startable_units $mode;
|
||||
+ __get_template_names $mode)
|
||||
compopt -o filenames
|
||||
|
||||
elif __contains_word "$verb" ${VERBS[RESTARTABLE_UNITS]}; then
|
||||
- comps=$( __filter_units_by_property $mode CanStart yes \
|
||||
- $( __get_restartable_units $mode); \
|
||||
- __get_template_names $mode)
|
||||
+ comps=$( __get_restartable_units $mode;
|
||||
+ __get_template_names $mode)
|
||||
compopt -o filenames
|
||||
|
||||
elif __contains_word "$verb" ${VERBS[STOPPABLE_UNITS]}; then
|
@ -1,98 +0,0 @@
|
||||
From 4ffc2172253c5ac6ad49bee3c87e5740ae520c8a Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Wed, 29 Oct 2014 22:46:30 -0400
|
||||
Subject: [PATCH] systemctl: let list-{units,unit-files } honour --type
|
||||
|
||||
The docs don't clarify what is expected, but I don't see any reason
|
||||
why --type should be ignored.
|
||||
|
||||
Also restucture the compund conditions into separate clauses for
|
||||
easier reading.
|
||||
|
||||
(cherry picked from commit 6c71341aeecc3d092ed90f66e1b2c481b8e260ff)
|
||||
---
|
||||
src/systemctl/systemctl.c | 48 ++++++++++++++++++++++++++++++++++++-----------
|
||||
1 file changed, 37 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
|
||||
index 28eaa6a847..b71040be40 100644
|
||||
--- a/src/systemctl/systemctl.c
|
||||
+++ b/src/systemctl/systemctl.c
|
||||
@@ -301,21 +301,37 @@ static int compare_unit_info(const void *a, const void *b) {
|
||||
}
|
||||
|
||||
static bool output_show_unit(const UnitInfo *u, char **patterns) {
|
||||
- const char *dot;
|
||||
-
|
||||
if (!strv_isempty(patterns)) {
|
||||
char **pattern;
|
||||
|
||||
STRV_FOREACH(pattern, patterns)
|
||||
if (fnmatch(*pattern, u->id, FNM_NOESCAPE) == 0)
|
||||
- return true;
|
||||
+ goto next;
|
||||
return false;
|
||||
}
|
||||
|
||||
- return (!arg_types || ((dot = strrchr(u->id, '.')) &&
|
||||
- strv_find(arg_types, dot+1))) &&
|
||||
- (arg_all || !(streq(u->active_state, "inactive")
|
||||
- || u->following[0]) || u->job_id > 0);
|
||||
+next:
|
||||
+ if (arg_types) {
|
||||
+ const char *dot;
|
||||
+
|
||||
+ dot = strrchr(u->id, '.');
|
||||
+ if (!dot)
|
||||
+ return false;
|
||||
+
|
||||
+ if (!strv_find(arg_types, dot+1))
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ if (arg_all)
|
||||
+ return true;
|
||||
+
|
||||
+ if (u->job_id > 0)
|
||||
+ return true;
|
||||
+
|
||||
+ if (streq(u->active_state, "inactive") || u->following[0])
|
||||
+ return false;
|
||||
+
|
||||
+ return true;
|
||||
}
|
||||
|
||||
static int output_units_list(const UnitInfo *unit_infos, unsigned c) {
|
||||
@@ -1231,18 +1247,28 @@ static int compare_unit_file_list(const void *a, const void *b) {
|
||||
}
|
||||
|
||||
static bool output_show_unit_file(const UnitFileList *u, char **patterns) {
|
||||
- const char *dot;
|
||||
-
|
||||
if (!strv_isempty(patterns)) {
|
||||
char **pattern;
|
||||
|
||||
STRV_FOREACH(pattern, patterns)
|
||||
if (fnmatch(*pattern, basename(u->path), FNM_NOESCAPE) == 0)
|
||||
- return true;
|
||||
+ goto next;
|
||||
return false;
|
||||
}
|
||||
|
||||
- return !arg_types || ((dot = strrchr(u->path, '.')) && strv_find(arg_types, dot+1));
|
||||
+next:
|
||||
+ if (!strv_isempty(arg_types)) {
|
||||
+ const char *dot;
|
||||
+
|
||||
+ dot = strrchr(u->path, '.');
|
||||
+ if (!dot)
|
||||
+ return false;
|
||||
+
|
||||
+ if (!strv_find(arg_types, dot+1))
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ return true;
|
||||
}
|
||||
|
||||
static void output_unit_file_list(const UnitFileList *units, unsigned c) {
|
@ -1,26 +0,0 @@
|
||||
From ff0c10038b7dc58ad13dce492806e6781a0f34fc Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Wed, 29 Oct 2014 22:51:00 -0400
|
||||
Subject: [PATCH] systemctl: obey --state in list-unit-files
|
||||
|
||||
(cherry picked from commit fec1530e6b5b8d6dc352c7338010357126e84621)
|
||||
---
|
||||
src/systemctl/systemctl.c | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
|
||||
index b71040be40..8481a9b20c 100644
|
||||
--- a/src/systemctl/systemctl.c
|
||||
+++ b/src/systemctl/systemctl.c
|
||||
@@ -1268,6 +1268,11 @@ next:
|
||||
return false;
|
||||
}
|
||||
|
||||
+ if (!strv_isempty(arg_states)) {
|
||||
+ if (!strv_find(arg_states, unit_file_state_to_string(u->state)))
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
return true;
|
||||
}
|
||||
|
@ -1,40 +0,0 @@
|
||||
From fef18888ca215c0600b95cd4dfd9b469c9936043 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Wed, 29 Oct 2014 23:06:58 -0400
|
||||
Subject: [PATCH] bash-completion: use improved filtering to make things faster
|
||||
|
||||
(cherry picked from commit 372b221166eb586c4f767969f442ed940e21f353)
|
||||
---
|
||||
shell-completion/bash/systemctl.in | 16 +++++++++++-----
|
||||
1 file changed, 11 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/shell-completion/bash/systemctl.in b/shell-completion/bash/systemctl.in
|
||||
index 9e538a9a5b..9e98a1850e 100644
|
||||
--- a/shell-completion/bash/systemctl.in
|
||||
+++ b/shell-completion/bash/systemctl.in
|
||||
@@ -60,14 +60,20 @@ __get_active_units () { __systemctl $1 list-units \
|
||||
| { while read -r a b; do echo " $a"; done; }; }
|
||||
__get_startable_units () {
|
||||
# find startable inactive units
|
||||
- __filter_units_by_property $mode LoadState loaded $(
|
||||
- __filter_units_by_property $mode ActiveState inactive $(
|
||||
- __filter_units_by_property $mode CanStart yes $( __get_all_units )))
|
||||
+ __filter_units_by_property $mode ActiveState inactive $(
|
||||
+ __filter_units_by_property $mode CanStart yes $(
|
||||
+ __systemctl $mode list-unit-files --state enabled,disabled,static | \
|
||||
+ { while read -r a b; do [[ $a =~ @\. ]] || echo " $a"; done; }
|
||||
+ __systemctl $mode list-units --state inactive,failed | \
|
||||
+ { while read -r a b; do echo " $a"; done; } ))
|
||||
}
|
||||
__get_restartable_units () {
|
||||
# filter out masked and not-found
|
||||
- __filter_units_by_property $mode LoadState loaded $(
|
||||
- __filter_units_by_property $mode CanStart yes $( __get_all_units ))
|
||||
+ __filter_units_by_property $mode CanStart yes $(
|
||||
+ __systemctl $mode list-unit-files --state enabled,disabled,static | \
|
||||
+ { while read -r a b; do [[ $a =~ @\. ]] || echo " $a"; done; }
|
||||
+ __systemctl $mode list-units | \
|
||||
+ { while read -r a b; do echo " $a"; done; } )
|
||||
}
|
||||
__get_failed_units () { __systemctl $1 list-units \
|
||||
| { while read -r a b c d; do [[ $c == "failed" ]] && echo " $a"; done; }; }
|
@ -1,69 +0,0 @@
|
||||
From 8b2735073009dcb855d65a3aa85eec25d8100a2a Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Wed, 29 Oct 2014 23:47:55 -0400
|
||||
Subject: [PATCH] zsh-completion: update start/restart completions
|
||||
|
||||
Now zsh should behave the same for those two subcommands as bash.
|
||||
|
||||
(cherry picked from commit 81333ecf9d5497f8aa95f7fec23c67b869d5abf9)
|
||||
---
|
||||
shell-completion/zsh/_systemctl.in | 28 +++++++++++++++++++++-------
|
||||
1 file changed, 21 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/shell-completion/zsh/_systemctl.in b/shell-completion/zsh/_systemctl.in
|
||||
index 44981fe85d..7eefe53aec 100644
|
||||
--- a/shell-completion/zsh/_systemctl.in
|
||||
+++ b/shell-completion/zsh/_systemctl.in
|
||||
@@ -141,13 +141,29 @@ _filter_units_by_property() {
|
||||
done
|
||||
}
|
||||
|
||||
-_systemctl_all_units() { { __systemctl list-unit-files; __systemctl list-units --all; } | { while read -r a b; do echo -E - " $a"; done; } }
|
||||
+_systemctl_all_units() { { __systemctl list-unit-files; __systemctl list-units --all; } | { while read -r a b; do [[ $a =~ @\. ]] || echo -E - " $a"; done; } }
|
||||
_systemctl_get_template_names() { __systemctl list-unit-files | { while read -r a b; do [[ $a =~ @\. ]] && echo -E - " ${a%%@.*}@"; done; } }
|
||||
|
||||
|
||||
_systemctl_active_units() {_sys_active_units=( $(__systemctl list-units | { while read -r a b; do echo -E - " $a"; done; }) )}
|
||||
-_systemctl_startable_units(){_sys_startable_units=($(__systemctl list-units --state inactive,failed -- $(_systemctl_all_units) | { while read -r a b c d; do [[ $b == "loaded" ]] && echo -E - " $a"; done; }) )}
|
||||
-_systemctl_restartable_units(){_sys_restartable_units=($(__systemctl list-units --state inactive,failed,active -- $(_systemctl_all_units) | { while read -r a b c d; do [[ $b == "loaded" ]] && echo -E - " $a"; done; }) )}
|
||||
+
|
||||
+_systemctl_startable_units(){
|
||||
+ _sys_startable_units=(_filter_units_by_property ActiveState inactive $(
|
||||
+ _filter_units_by_property CanStart yes $(
|
||||
+ __systemctl $mode list-unit-files --state enabled,disabled,static | \
|
||||
+ { while read -r a b; do [[ $a =~ @\. ]] || echo -E - " $a"; done; }
|
||||
+ __systemctl $mode list-units --state inactive,failed | \
|
||||
+ { while read -r a b; do echo -E - " $a"; done; } )))
|
||||
+}
|
||||
+
|
||||
+_systemctl_restartable_units(){
|
||||
+ _sys_restartable_units=(_filter_units_by_property CanStart yes $(
|
||||
+ __systemctl $mode list-unit-files --state enabled,disabled,static | \
|
||||
+ { while read -r a b; do [[ $a =~ @\. ]] || echo -E - " $a"; done; }
|
||||
+ __systemctl $mode list-units | \
|
||||
+ { while read -r a b; do echo -E - " $a"; done; } ))
|
||||
+}
|
||||
+
|
||||
_systemctl_failed_units() {_sys_failed_units=( $(__systemctl list-units --failed | { while read -r a b; do echo -E - " $a"; done; }) )}
|
||||
_systemctl_enabled_units() {_sys_enabled_units=( $(__systemctl list-unit-files | { while read -r a b; do [[ $b == "enabled" ]] && echo -E - " $a"; done; }) )}
|
||||
_systemctl_disabled_units(){_sys_disabled_units=($(__systemctl list-unit-files | { while read -r a b; do [[ $b == "disabled" ]] && echo -E - " $a"; done; }) )}
|
||||
@@ -194,8 +210,7 @@ done
|
||||
(( $+functions[_systemctl_start] )) || _systemctl_start()
|
||||
{
|
||||
_systemctl_startable_units
|
||||
- compadd "$@" - $( _filter_units_by_property CanStart yes \
|
||||
- ${_sys_startable_units[*]} )
|
||||
+ compadd "$@" - ${_sys_startable_units[*]} $(_systemctl_get_template_names)
|
||||
}
|
||||
|
||||
# Completion functions for STOPPABLE_UNITS
|
||||
@@ -231,8 +246,7 @@ for fun in restart reload-or-restart ; do
|
||||
(( $+functions[_systemctl_$fun] )) || _systemctl_$fun()
|
||||
{
|
||||
_systemctl_restartable_units
|
||||
- compadd "$@" - $( _filter_units_by_property CanStart yes \
|
||||
- ${_sys_restartable_units[*]} )
|
||||
+ compadd "$@" - ${_sys_restartable_units[*]} $(_systemctl_get_template_names)
|
||||
}
|
||||
done
|
||||
|
@ -1,39 +0,0 @@
|
||||
From b9ae7f976b524c712b7b98062087adaa662f3cf8 Mon Sep 17 00:00:00 2001
|
||||
From: Hans de Goede <hdegoede@redhat.com>
|
||||
Date: Thu, 30 Oct 2014 10:15:54 +0100
|
||||
Subject: [PATCH] keymap: Ignore brightness keys on Dell Inspiron 1520 to avoid
|
||||
double events
|
||||
|
||||
On the Dell Inspiron 1520 both the atkbd and acpi-video input devices report
|
||||
an event for pressing the brightness up / down key-combos, resulting in user
|
||||
space seeing double events and increasing / decreasing the brightness 2 steps
|
||||
for each keypress.
|
||||
|
||||
This hwdb snippet suppresses the atkbd events, making the Inspiron 1520 work
|
||||
like most modern laptops which emit brightness up / down events through
|
||||
acpi-video only.
|
||||
|
||||
Reported by Pavel Malyshev <p.malishev@gmail.com>
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1141525
|
||||
(cherry picked from commit aba248ee6b1eb10baf3d89eca2ad7569459af6ab)
|
||||
---
|
||||
hwdb/60-keyboard.hwdb | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb
|
||||
index 06caba9791..d2ca965c90 100644
|
||||
--- a/hwdb/60-keyboard.hwdb
|
||||
+++ b/hwdb/60-keyboard.hwdb
|
||||
@@ -230,6 +230,11 @@ keyboard:dmi:bvn*:bvr*:bd*:svnDell*:pnInspiron*1110:pvr*
|
||||
keyboard:dmi:bvn*:bvr*:bd*:svnDell*:pnInspiron*1210:pvr*
|
||||
KEYBOARD_KEY_84=wlan
|
||||
|
||||
+# Dell Inspiron 1520
|
||||
+keyboard:dmi:bvn*:bvr*:bd*:svnDell*:pnInspiron*1520:pvr*
|
||||
+ KEYBOARD_KEY_85=unknown # Brightness Down, also emitted by acpi-video, ignore
|
||||
+ KEYBOARD_KEY_86=unknown # Brightness Up, also emitted by acpi-video, ignore
|
||||
+
|
||||
# Latitude XT2
|
||||
keyboard:dmi:bvn*:bvr*:bd*:svnDell*:pnLatitude*XT2:pvr*
|
||||
KEYBOARD_KEY_9b=up # tablet rocker up
|
@ -1,161 +0,0 @@
|
||||
From c3a8638cf447ae5901dccb89ea766d768febe529 Mon Sep 17 00:00:00 2001
|
||||
From: Colin Guthrie <colin@mageia.org>
|
||||
Date: Wed, 29 Oct 2014 14:03:41 +0000
|
||||
Subject: [PATCH] sysusers: Preserve ownership and mode on /etc/passwd and
|
||||
friends
|
||||
|
||||
When running sysusers we would clobber file ownership and permissions
|
||||
on the files /etc/passwd, /etc/group and /etc/[g]shadow.
|
||||
|
||||
This simply preserves the ownership and mode if existing files are
|
||||
found.
|
||||
|
||||
(cherry picked from commit e3c72c21d62aadabf4df436c3e2c7219eeeccc1c)
|
||||
---
|
||||
src/sysusers/sysusers.c | 61 +++++++++++++++++++++++++++++++++----------------
|
||||
1 file changed, 41 insertions(+), 20 deletions(-)
|
||||
|
||||
diff --git a/src/sysusers/sysusers.c b/src/sysusers/sysusers.c
|
||||
index 9b9be96a0a..c133dc5f10 100644
|
||||
--- a/src/sysusers/sysusers.c
|
||||
+++ b/src/sysusers/sysusers.c
|
||||
@@ -358,6 +358,7 @@ static int write_files(void) {
|
||||
_cleanup_fclose_ FILE *passwd = NULL, *group = NULL, *shadow = NULL, *gshadow = NULL;
|
||||
_cleanup_free_ char *passwd_tmp = NULL, *group_tmp = NULL, *shadow_tmp = NULL, *gshadow_tmp = NULL;
|
||||
const char *passwd_path = NULL, *group_path = NULL, *shadow_path = NULL, *gshadow_path = NULL;
|
||||
+ struct stat st;
|
||||
bool group_changed = false;
|
||||
Iterator iterator;
|
||||
Item *i;
|
||||
@@ -372,15 +373,17 @@ static int write_files(void) {
|
||||
if (r < 0)
|
||||
goto finish;
|
||||
|
||||
- if (fchmod(fileno(group), 0644) < 0) {
|
||||
- r = -errno;
|
||||
- goto finish;
|
||||
- }
|
||||
-
|
||||
original = fopen(group_path, "re");
|
||||
if (original) {
|
||||
struct group *gr;
|
||||
|
||||
+ if (fstat(fileno(original), &st) < 0 ||
|
||||
+ fchmod(fileno(group), st.st_mode & 07777) < 0 ||
|
||||
+ fchown(fileno(group), st.st_uid, st.st_gid) < 0) {
|
||||
+ r = -errno;
|
||||
+ goto finish;
|
||||
+ }
|
||||
+
|
||||
errno = 0;
|
||||
while ((gr = fgetgrent(original))) {
|
||||
/* Safety checks against name and GID
|
||||
@@ -418,6 +421,9 @@ static int write_files(void) {
|
||||
} else if (errno != ENOENT) {
|
||||
r = -errno;
|
||||
goto finish;
|
||||
+ } else if (fchmod(fileno(group), 0644) < 0) {
|
||||
+ r = -errno;
|
||||
+ goto finish;
|
||||
}
|
||||
|
||||
HASHMAP_FOREACH(i, todo_gids, iterator) {
|
||||
@@ -449,15 +455,17 @@ static int write_files(void) {
|
||||
if (r < 0)
|
||||
goto finish;
|
||||
|
||||
- if (fchmod(fileno(gshadow), 0000) < 0) {
|
||||
- r = -errno;
|
||||
- goto finish;
|
||||
- }
|
||||
-
|
||||
original = fopen(gshadow_path, "re");
|
||||
if (original) {
|
||||
struct sgrp *sg;
|
||||
|
||||
+ if (fstat(fileno(original), &st) < 0 ||
|
||||
+ fchmod(fileno(gshadow), st.st_mode & 07777) < 0 ||
|
||||
+ fchown(fileno(gshadow), st.st_uid, st.st_gid) < 0) {
|
||||
+ r = -errno;
|
||||
+ goto finish;
|
||||
+ }
|
||||
+
|
||||
errno = 0;
|
||||
while ((sg = fgetsgent(original))) {
|
||||
|
||||
@@ -483,6 +491,9 @@ static int write_files(void) {
|
||||
} else if (errno != ENOENT) {
|
||||
r = -errno;
|
||||
goto finish;
|
||||
+ } else if (fchmod(fileno(gshadow), 0000) < 0) {
|
||||
+ r = -errno;
|
||||
+ goto finish;
|
||||
}
|
||||
|
||||
HASHMAP_FOREACH(i, todo_gids, iterator) {
|
||||
@@ -513,15 +524,17 @@ static int write_files(void) {
|
||||
if (r < 0)
|
||||
goto finish;
|
||||
|
||||
- if (fchmod(fileno(passwd), 0644) < 0) {
|
||||
- r = -errno;
|
||||
- goto finish;
|
||||
- }
|
||||
-
|
||||
original = fopen(passwd_path, "re");
|
||||
if (original) {
|
||||
struct passwd *pw;
|
||||
|
||||
+ if (fstat(fileno(original), &st) < 0 ||
|
||||
+ fchmod(fileno(passwd), st.st_mode & 07777) < 0 ||
|
||||
+ fchown(fileno(passwd), st.st_uid, st.st_gid) < 0) {
|
||||
+ r = -errno;
|
||||
+ goto finish;
|
||||
+ }
|
||||
+
|
||||
errno = 0;
|
||||
while ((pw = fgetpwent(original))) {
|
||||
|
||||
@@ -552,6 +565,9 @@ static int write_files(void) {
|
||||
} else if (errno != ENOENT) {
|
||||
r = -errno;
|
||||
goto finish;
|
||||
+ } else if (fchmod(fileno(passwd), 0644) < 0) {
|
||||
+ r = -errno;
|
||||
+ goto finish;
|
||||
}
|
||||
|
||||
HASHMAP_FOREACH(i, todo_uids, iterator) {
|
||||
@@ -596,15 +612,17 @@ static int write_files(void) {
|
||||
if (r < 0)
|
||||
goto finish;
|
||||
|
||||
- if (fchmod(fileno(shadow), 0000) < 0) {
|
||||
- r = -errno;
|
||||
- goto finish;
|
||||
- }
|
||||
-
|
||||
original = fopen(shadow_path, "re");
|
||||
if (original) {
|
||||
struct spwd *sp;
|
||||
|
||||
+ if (fstat(fileno(original), &st) < 0 ||
|
||||
+ fchmod(fileno(shadow), st.st_mode & 07777) < 0 ||
|
||||
+ fchown(fileno(shadow), st.st_uid, st.st_gid) < 0) {
|
||||
+ r = -errno;
|
||||
+ goto finish;
|
||||
+ }
|
||||
+
|
||||
errno = 0;
|
||||
while ((sp = fgetspent(original))) {
|
||||
|
||||
@@ -629,6 +647,9 @@ static int write_files(void) {
|
||||
} else if (errno != ENOENT) {
|
||||
r = -errno;
|
||||
goto finish;
|
||||
+ } else if (fchmod(fileno(shadow), 0000) < 0) {
|
||||
+ r = -errno;
|
||||
+ goto finish;
|
||||
}
|
||||
|
||||
lstchg = (long) (now(CLOCK_REALTIME) / USEC_PER_DAY);
|
@ -1,23 +0,0 @@
|
||||
From 3db5ad126fcca99e7d341e47f1c2967aa70fc813 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Tue, 28 Oct 2014 12:36:17 -0400
|
||||
Subject: [PATCH] snapshot: return error when snapshot exists
|
||||
|
||||
(cherry picked from commit 7cabba07745b388497e8c0fc19b61984167fd474)
|
||||
---
|
||||
src/core/snapshot.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/core/snapshot.c b/src/core/snapshot.c
|
||||
index 5eed615a15..c2678cbe6e 100644
|
||||
--- a/src/core/snapshot.c
|
||||
+++ b/src/core/snapshot.c
|
||||
@@ -208,7 +208,7 @@ int snapshot_create(Manager *m, const char *name, bool cleanup, sd_bus_error *e,
|
||||
return sd_bus_error_setf(e, SD_BUS_ERROR_INVALID_ARGS, "Unit name %s lacks snapshot suffix.", name);
|
||||
|
||||
if (manager_get_unit(m, name))
|
||||
- sd_bus_error_setf(e, BUS_ERROR_UNIT_EXISTS, "Snapshot %s exists already.", name);
|
||||
+ return sd_bus_error_setf(e, BUS_ERROR_UNIT_EXISTS, "Snapshot %s exists already.", name);
|
||||
|
||||
} else {
|
||||
|
@ -1,30 +0,0 @@
|
||||
From b994526e7fbc8acc71889120645508ac5f8aca33 Mon Sep 17 00:00:00 2001
|
||||
From: Dan Williams <dcbw@redhat.com>
|
||||
Date: Thu, 30 Oct 2014 14:23:00 -0500
|
||||
Subject: [PATCH] sd-dhcp-client: clean up raw socket sd_event_source when
|
||||
creating new UDP socket
|
||||
|
||||
The raw socket sd_event_source used for DHCP server solicitations
|
||||
was simply dropped on the floor when creating the new UDP socket
|
||||
after a lease has been acquired. Clean it up properly so we're
|
||||
not still listening and responding to events on it.
|
||||
|
||||
(cherry picked from commit affaa94fc38a980a70534f70f6a6c58a4129b062)
|
||||
---
|
||||
src/libsystemd-network/sd-dhcp-client.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/src/libsystemd-network/sd-dhcp-client.c b/src/libsystemd-network/sd-dhcp-client.c
|
||||
index 0eba4c379d..1f7f238ca0 100644
|
||||
--- a/src/libsystemd-network/sd-dhcp-client.c
|
||||
+++ b/src/libsystemd-network/sd-dhcp-client.c
|
||||
@@ -1269,6 +1269,9 @@ static int client_handle_message(sd_dhcp_client *client, DHCPMessage *message,
|
||||
if (r >= 0) {
|
||||
client->timeout_resend =
|
||||
sd_event_source_unref(client->timeout_resend);
|
||||
+ client->receive_message =
|
||||
+ sd_event_source_unref(client->receive_message);
|
||||
+ client->fd = asynchronous_close(client->fd);
|
||||
|
||||
if (IN_SET(client->state, DHCP_STATE_REQUESTING,
|
||||
DHCP_STATE_REBOOTING))
|
@ -1,37 +0,0 @@
|
||||
From deb58970549681f28a7e38ee0f75664523f5066a Mon Sep 17 00:00:00 2001
|
||||
From: Dave Reisner <dreisner@archlinux.org>
|
||||
Date: Thu, 30 Oct 2014 20:12:05 -0400
|
||||
Subject: [PATCH] shared/install: avoid prematurely rejecting "missing" units
|
||||
|
||||
f7101b7368df copied some logic to prevent enabling masked units, but
|
||||
also added a check which causes attempts to enable templated units to
|
||||
fail. Since we know the logic beyond this check will properly handle
|
||||
units which truly do not exist, we can rely on the unit file state
|
||||
comparison to suffice for expressing the intent of f7101b7368df.
|
||||
|
||||
ref: https://bugs.archlinux.org/task/42616
|
||||
(cherry picked from commit 0ffce503cd6e5a5ff5ba5cd1cc23684cfb8bb9e3)
|
||||
---
|
||||
src/shared/install.c | 8 +++-----
|
||||
1 file changed, 3 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/src/shared/install.c b/src/shared/install.c
|
||||
index 035b44cc52..cab93e8dc6 100644
|
||||
--- a/src/shared/install.c
|
||||
+++ b/src/shared/install.c
|
||||
@@ -1620,12 +1620,10 @@ int unit_file_enable(
|
||||
STRV_FOREACH(i, files) {
|
||||
UnitFileState state;
|
||||
|
||||
+ /* We only want to know if this unit is masked, so we ignore
|
||||
+ * errors from unit_file_get_state, deferring other checks.
|
||||
+ * This allows templated units to be enabled on the fly. */
|
||||
state = unit_file_get_state(scope, root_dir, *i);
|
||||
- if (state < 0) {
|
||||
- log_error("Failed to get unit file state for %s: %s", *i, strerror(-state));
|
||||
- return state;
|
||||
- }
|
||||
-
|
||||
if (state == UNIT_FILE_MASKED || state == UNIT_FILE_MASKED_RUNTIME) {
|
||||
log_error("Failed to enable unit: Unit %s is masked", *i);
|
||||
return -ENOTSUP;
|
@ -1,75 +0,0 @@
|
||||
From c986f1e5ff7afaa52274ee25a7ba94bec0356d03 Mon Sep 17 00:00:00 2001
|
||||
From: Lennart Poettering <lennart@poettering.net>
|
||||
Date: Thu, 30 Oct 2014 20:53:23 +0100
|
||||
Subject: [PATCH] nspawn: don't make up -1 as error code
|
||||
|
||||
(cherry picked from commit fddbb89c46ea5d39e52e361b390ea34a06cbb67c)
|
||||
---
|
||||
src/nspawn/nspawn.c | 27 +++++++++++----------------
|
||||
1 file changed, 11 insertions(+), 16 deletions(-)
|
||||
|
||||
diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
|
||||
index d88987a580..7e96efd425 100644
|
||||
--- a/src/nspawn/nspawn.c
|
||||
+++ b/src/nspawn/nspawn.c
|
||||
@@ -2931,33 +2931,30 @@ static int wait_for_container(pid_t pid, ContainerStatus *container) {
|
||||
}
|
||||
|
||||
switch (status.si_code) {
|
||||
+
|
||||
case CLD_EXITED:
|
||||
r = status.si_status;
|
||||
if (r == 0) {
|
||||
if (!arg_quiet)
|
||||
- log_debug("Container %s exited successfully.",
|
||||
- arg_machine);
|
||||
+ log_debug("Container %s exited successfully.", arg_machine);
|
||||
|
||||
*container = CONTAINER_TERMINATED;
|
||||
- } else {
|
||||
- log_error("Container %s failed with error code %i.",
|
||||
- arg_machine, status.si_status);
|
||||
- }
|
||||
+ } else
|
||||
+ log_error("Container %s failed with error code %i.", arg_machine, status.si_status);
|
||||
+
|
||||
break;
|
||||
|
||||
case CLD_KILLED:
|
||||
if (status.si_status == SIGINT) {
|
||||
if (!arg_quiet)
|
||||
- log_info("Container %s has been shut down.",
|
||||
- arg_machine);
|
||||
+ log_info("Container %s has been shut down.", arg_machine);
|
||||
|
||||
*container = CONTAINER_TERMINATED;
|
||||
r = 0;
|
||||
break;
|
||||
} else if (status.si_status == SIGHUP) {
|
||||
if (!arg_quiet)
|
||||
- log_info("Container %s is being rebooted.",
|
||||
- arg_machine);
|
||||
+ log_info("Container %s is being rebooted.", arg_machine);
|
||||
|
||||
*container = CONTAINER_REBOOTED;
|
||||
r = 0;
|
||||
@@ -2966,15 +2963,13 @@ static int wait_for_container(pid_t pid, ContainerStatus *container) {
|
||||
/* CLD_KILLED fallthrough */
|
||||
|
||||
case CLD_DUMPED:
|
||||
- log_error("Container %s terminated by signal %s.",
|
||||
- arg_machine, signal_to_string(status.si_status));
|
||||
- r = -1;
|
||||
+ log_error("Container %s terminated by signal %s.", arg_machine, signal_to_string(status.si_status));
|
||||
+ r = -EIO;
|
||||
break;
|
||||
|
||||
default:
|
||||
- log_error("Container %s failed due to unknown reason.",
|
||||
- arg_machine);
|
||||
- r = -1;
|
||||
+ log_error("Container %s failed due to unknown reason.", arg_machine);
|
||||
+ r = -EIO;
|
||||
break;
|
||||
}
|
||||
|
@ -1,114 +0,0 @@
|
||||
From 860e33966a511e008f80bbfa23450dcc33650290 Mon Sep 17 00:00:00 2001
|
||||
From: Lennart Poettering <lennart@poettering.net>
|
||||
Date: Fri, 31 Oct 2014 16:22:36 +0100
|
||||
Subject: [PATCH] units: don't order journal flushing afte remote-fs.target
|
||||
|
||||
Instead, only depend on the actual file systems we need.
|
||||
|
||||
This should solve dep loops on setups where remote-fs.target is moved
|
||||
into late boot.
|
||||
|
||||
(cherry picked from commit 919699ec301ea507edce4a619141ed22e789ac0d)
|
||||
---
|
||||
src/nspawn/nspawn.c | 38 ++++++++++++++--------------------
|
||||
units/systemd-journal-flush.service.in | 3 ++-
|
||||
2 files changed, 18 insertions(+), 23 deletions(-)
|
||||
|
||||
diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
|
||||
index 7e96efd425..f332ade03e 100644
|
||||
--- a/src/nspawn/nspawn.c
|
||||
+++ b/src/nspawn/nspawn.c
|
||||
@@ -2911,8 +2911,8 @@ static int change_uid_gid(char **_home) {
|
||||
* container argument.
|
||||
* > 0 : The program executed in the container terminated with an
|
||||
* error. The exit code of the program executed in the
|
||||
- * container is returned. No change is made to the container
|
||||
- * argument.
|
||||
+ * container is returned. The container argument has been set
|
||||
+ * to CONTAINER_TERMINATED.
|
||||
* 0 : The container is being rebooted, has been shut down or exited
|
||||
* successfully. The container argument has been set to either
|
||||
* CONTAINER_TERMINATED or CONTAINER_REBOOTED.
|
||||
@@ -2921,8 +2921,8 @@ static int change_uid_gid(char **_home) {
|
||||
* error is indicated by a non-zero value.
|
||||
*/
|
||||
static int wait_for_container(pid_t pid, ContainerStatus *container) {
|
||||
- int r;
|
||||
siginfo_t status;
|
||||
+ int r;
|
||||
|
||||
r = wait_for_terminate(pid, &status);
|
||||
if (r < 0) {
|
||||
@@ -2933,44 +2933,38 @@ static int wait_for_container(pid_t pid, ContainerStatus *container) {
|
||||
switch (status.si_code) {
|
||||
|
||||
case CLD_EXITED:
|
||||
- r = status.si_status;
|
||||
- if (r == 0) {
|
||||
- if (!arg_quiet)
|
||||
- log_debug("Container %s exited successfully.", arg_machine);
|
||||
+ if (status.si_status == 0) {
|
||||
+ log_full(arg_quiet ? LOG_DEBUG : LOG_INFO, "Container %s exited successfully.", arg_machine);
|
||||
|
||||
- *container = CONTAINER_TERMINATED;
|
||||
} else
|
||||
- log_error("Container %s failed with error code %i.", arg_machine, status.si_status);
|
||||
+ log_full(arg_quiet ? LOG_DEBUG : LOG_INFO, "Container %s failed with error code %i.", arg_machine, status.si_status);
|
||||
|
||||
- break;
|
||||
+ *container = CONTAINER_TERMINATED;
|
||||
+ return status.si_status;
|
||||
|
||||
case CLD_KILLED:
|
||||
if (status.si_status == SIGINT) {
|
||||
- if (!arg_quiet)
|
||||
- log_info("Container %s has been shut down.", arg_machine);
|
||||
|
||||
+ log_full(arg_quiet ? LOG_DEBUG : LOG_INFO, "Container %s has been shut down.", arg_machine);
|
||||
*container = CONTAINER_TERMINATED;
|
||||
- r = 0;
|
||||
- break;
|
||||
+ return 0;
|
||||
+
|
||||
} else if (status.si_status == SIGHUP) {
|
||||
- if (!arg_quiet)
|
||||
- log_info("Container %s is being rebooted.", arg_machine);
|
||||
|
||||
+ log_full(arg_quiet ? LOG_DEBUG : LOG_INFO, "Container %s is being rebooted.", arg_machine);
|
||||
*container = CONTAINER_REBOOTED;
|
||||
- r = 0;
|
||||
- break;
|
||||
+ return 0;
|
||||
}
|
||||
+
|
||||
/* CLD_KILLED fallthrough */
|
||||
|
||||
case CLD_DUMPED:
|
||||
log_error("Container %s terminated by signal %s.", arg_machine, signal_to_string(status.si_status));
|
||||
- r = -EIO;
|
||||
- break;
|
||||
+ return -EIO;
|
||||
|
||||
default:
|
||||
log_error("Container %s failed due to unknown reason.", arg_machine);
|
||||
- r = -EIO;
|
||||
- break;
|
||||
+ return -EIO;
|
||||
}
|
||||
|
||||
return r;
|
||||
diff --git a/units/systemd-journal-flush.service.in b/units/systemd-journal-flush.service.in
|
||||
index 699670bb4e..2612220e2e 100644
|
||||
--- a/units/systemd-journal-flush.service.in
|
||||
+++ b/units/systemd-journal-flush.service.in
|
||||
@@ -10,8 +10,9 @@ Description=Trigger Flushing of Journal to Persistent Storage
|
||||
Documentation=man:systemd-journald.service(8) man:journald.conf(5)
|
||||
DefaultDependencies=no
|
||||
Requires=systemd-journald.service
|
||||
-After=systemd-journald.service local-fs.target remote-fs.target
|
||||
+After=systemd-journald.service
|
||||
Before=systemd-user-sessions.service systemd-tmpfiles-setup.service
|
||||
+RequiresMountsFor=/var/log/journal
|
||||
|
||||
[Service]
|
||||
ExecStart=@rootbindir@/journalctl --flush
|
@ -1,75 +0,0 @@
|
||||
From 077f3bccf730114917c581fb9f47beb4518835bd Mon Sep 17 00:00:00 2001
|
||||
From: Marcel Holtmann <marcel@holtmann.org>
|
||||
Date: Fri, 31 Oct 2014 20:37:59 +0100
|
||||
Subject: [PATCH] hwdb: Update database of Bluetooth company identifiers
|
||||
|
||||
(cherry picked from commit 5d20fde4a5c4dff4d7c737b545fbd13582d544c1)
|
||||
---
|
||||
hwdb/20-bluetooth-vendor-product.hwdb | 57 +++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 57 insertions(+)
|
||||
|
||||
diff --git a/hwdb/20-bluetooth-vendor-product.hwdb b/hwdb/20-bluetooth-vendor-product.hwdb
|
||||
index ee2efdff2e..58ca87d69d 100644
|
||||
--- a/hwdb/20-bluetooth-vendor-product.hwdb
|
||||
+++ b/hwdb/20-bluetooth-vendor-product.hwdb
|
||||
@@ -1166,3 +1166,60 @@ bluetooth:v0181*
|
||||
|
||||
bluetooth:v0182*
|
||||
ID_VENDOR_FROM_DATABASE=HOP Ubiquitous
|
||||
+
|
||||
+bluetooth:v0183*
|
||||
+ ID_VENDOR_FROM_DATABASE=To Be Assigned
|
||||
+
|
||||
+bluetooth:v0184*
|
||||
+ ID_VENDOR_FROM_DATABASE=Nectar
|
||||
+
|
||||
+bluetooth:v0185*
|
||||
+ ID_VENDOR_FROM_DATABASE=bel'apps LLC
|
||||
+
|
||||
+bluetooth:v0186*
|
||||
+ ID_VENDOR_FROM_DATABASE=CORE Lighting Ltd
|
||||
+
|
||||
+bluetooth:v0187*
|
||||
+ ID_VENDOR_FROM_DATABASE=Seraphim Sense Ltd
|
||||
+
|
||||
+bluetooth:v0188*
|
||||
+ ID_VENDOR_FROM_DATABASE=Unico RBC
|
||||
+
|
||||
+bluetooth:v0189*
|
||||
+ ID_VENDOR_FROM_DATABASE=Physical Enterprises Inc.
|
||||
+
|
||||
+bluetooth:v018A*
|
||||
+ ID_VENDOR_FROM_DATABASE=Able Trend Technology Limited
|
||||
+
|
||||
+bluetooth:v018B*
|
||||
+ ID_VENDOR_FROM_DATABASE=Konica Minolta, Inc.
|
||||
+
|
||||
+bluetooth:v018C*
|
||||
+ ID_VENDOR_FROM_DATABASE=Wilo SE
|
||||
+
|
||||
+bluetooth:v018D*
|
||||
+ ID_VENDOR_FROM_DATABASE=Extron Design Services
|
||||
+
|
||||
+bluetooth:v018E*
|
||||
+ ID_VENDOR_FROM_DATABASE=Fitbit, Inc.
|
||||
+
|
||||
+bluetooth:v018F*
|
||||
+ ID_VENDOR_FROM_DATABASE=Fireflies Systems
|
||||
+
|
||||
+bluetooth:v0190*
|
||||
+ ID_VENDOR_FROM_DATABASE=Intelletto Technologies Inc.
|
||||
+
|
||||
+bluetooth:v0191*
|
||||
+ ID_VENDOR_FROM_DATABASE=FDK CORPORATION
|
||||
+
|
||||
+bluetooth:v0192*
|
||||
+ ID_VENDOR_FROM_DATABASE=Cloudleaf, Inc
|
||||
+
|
||||
+bluetooth:v0193*
|
||||
+ ID_VENDOR_FROM_DATABASE=Maveric Automation LLC
|
||||
+
|
||||
+bluetooth:v0194*
|
||||
+ ID_VENDOR_FROM_DATABASE=Acoustic Stream Corporation
|
||||
+
|
||||
+bluetooth:v0195*
|
||||
+ ID_VENDOR_FROM_DATABASE=Zuli
|
@ -1,60 +0,0 @@
|
||||
From e63854bf942d6f3364e5e69d5e7bcfd5a2ad8ec8 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Sat, 1 Nov 2014 11:32:44 -0400
|
||||
Subject: [PATCH] libudev: modernization
|
||||
|
||||
This brings udev logging style a bit closer to normal systemd convention.
|
||||
|
||||
(cherry picked from commit fe756ed9ec2c0fa33c30b1d9a33d745dc1593aed)
|
||||
---
|
||||
src/libudev/libudev.c | 9 ++++-----
|
||||
1 file changed, 4 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/src/libudev/libudev.c b/src/libudev/libudev.c
|
||||
index e2ab960d55..7803863b2e 100644
|
||||
--- a/src/libudev/libudev.c
|
||||
+++ b/src/libudev/libudev.c
|
||||
@@ -119,7 +119,7 @@ _public_ struct udev *udev_new(void)
|
||||
{
|
||||
struct udev *udev;
|
||||
const char *env;
|
||||
- FILE *f;
|
||||
+ _cleanup_free_ FILE *f = NULL;
|
||||
|
||||
udev = new0(struct udev, 1);
|
||||
if (udev == NULL)
|
||||
@@ -132,7 +132,7 @@ _public_ struct udev *udev_new(void)
|
||||
f = fopen("/etc/udev/udev.conf", "re");
|
||||
if (f != NULL) {
|
||||
char line[UTIL_LINE_SIZE];
|
||||
- int line_nr = 0;
|
||||
+ unsigned line_nr = 0;
|
||||
|
||||
while (fgets(line, sizeof(line), f)) {
|
||||
size_t len;
|
||||
@@ -153,7 +153,7 @@ _public_ struct udev *udev_new(void)
|
||||
/* split key/value */
|
||||
val = strchr(key, '=');
|
||||
if (val == NULL) {
|
||||
- udev_err(udev, "missing <key>=<value> in /etc/udev/udev.conf[%i]; skip line\n", line_nr);
|
||||
+ udev_err(udev, "/etc/udev/udev.conf:%u: missing assignment, skipping line.\n", line_nr);
|
||||
continue;
|
||||
}
|
||||
val[0] = '\0';
|
||||
@@ -185,7 +185,7 @@ _public_ struct udev *udev_new(void)
|
||||
/* unquote */
|
||||
if (val[0] == '"' || val[0] == '\'') {
|
||||
if (val[len-1] != val[0]) {
|
||||
- udev_err(udev, "inconsistent quoting in /etc/udev/udev.conf[%i]; skip line\n", line_nr);
|
||||
+ udev_err(udev, "/etc/udev/udev.conf:%u: inconsistent quoting, skipping line.\n", line_nr);
|
||||
continue;
|
||||
}
|
||||
val[len-1] = '\0';
|
||||
@@ -197,7 +197,6 @@ _public_ struct udev *udev_new(void)
|
||||
continue;
|
||||
}
|
||||
}
|
||||
- fclose(f);
|
||||
}
|
||||
|
||||
/* environment overrides config */
|
@ -1,72 +0,0 @@
|
||||
From 6c2d3f24672aaa806bbd6b4b5741e315566da35c Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Sat, 1 Nov 2014 12:06:41 -0400
|
||||
Subject: [PATCH] libudev: do not accept invalid log levels
|
||||
|
||||
Invalid log levels lead to a assert failure later on.
|
||||
|
||||
https://bugs.freedesktop.org/show_bug.cgi?id=85657
|
||||
(cherry picked from commit ee7122c0ec6aa11f02e9e8d94254b353f12d2c14)
|
||||
---
|
||||
src/libudev/libudev-util.c | 10 +++++++---
|
||||
src/libudev/libudev.c | 19 ++++++++++++++++---
|
||||
2 files changed, 23 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/src/libudev/libudev-util.c b/src/libudev/libudev-util.c
|
||||
index f3fdf3b5aa..0bc10f3470 100644
|
||||
--- a/src/libudev/libudev-util.c
|
||||
+++ b/src/libudev/libudev-util.c
|
||||
@@ -159,9 +159,13 @@ int util_log_priority(const char *priority)
|
||||
char *endptr;
|
||||
int prio;
|
||||
|
||||
- prio = strtol(priority, &endptr, 10);
|
||||
- if (endptr[0] == '\0' || isspace(endptr[0]))
|
||||
- return prio;
|
||||
+ prio = strtoul(priority, &endptr, 10);
|
||||
+ if (endptr[0] == '\0' || isspace(endptr[0])) {
|
||||
+ if (prio >= 0 && prio <= 7)
|
||||
+ return prio;
|
||||
+ else
|
||||
+ return -ERANGE;
|
||||
+ }
|
||||
|
||||
return log_level_from_string(priority);
|
||||
}
|
||||
diff --git a/src/libudev/libudev.c b/src/libudev/libudev.c
|
||||
index 7803863b2e..8464427651 100644
|
||||
--- a/src/libudev/libudev.c
|
||||
+++ b/src/libudev/libudev.c
|
||||
@@ -193,7 +193,13 @@ _public_ struct udev *udev_new(void)
|
||||
}
|
||||
|
||||
if (streq(key, "udev_log")) {
|
||||
- udev_set_log_priority(udev, util_log_priority(val));
|
||||
+ int prio;
|
||||
+
|
||||
+ prio = util_log_priority(val);
|
||||
+ if (prio < 0)
|
||||
+ udev_err(udev, "/etc/udev/udev.conf:%u: invalid logging level '%s', ignoring.\n", line_nr, val);
|
||||
+ else
|
||||
+ udev_set_log_priority(udev, prio);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
@@ -201,8 +207,15 @@ _public_ struct udev *udev_new(void)
|
||||
|
||||
/* environment overrides config */
|
||||
env = secure_getenv("UDEV_LOG");
|
||||
- if (env != NULL)
|
||||
- udev_set_log_priority(udev, util_log_priority(env));
|
||||
+ if (env != NULL) {
|
||||
+ int prio;
|
||||
+
|
||||
+ prio = util_log_priority(env);
|
||||
+ if (prio < 0)
|
||||
+ udev_err(udev, "$UDEV_LOG specifies invalid logging level '%s', ignoring.\n", env);
|
||||
+ else
|
||||
+ udev_set_log_priority(udev, prio);
|
||||
+ }
|
||||
|
||||
return udev;
|
||||
}
|
@ -1,33 +0,0 @@
|
||||
From acfc0db365d38b1185ab4cb47f03c63b9aa23087 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Sat, 1 Nov 2014 14:36:29 -0400
|
||||
Subject: [PATCH] man: describe all log levels in udevadm(8)
|
||||
|
||||
https://bugs.freedesktop.org/show_bug.cgi?id=85657
|
||||
(cherry picked from commit e03234a16047dc635d13f7118fc9fcf243744b51)
|
||||
---
|
||||
man/udevadm.xml | 11 ++++++++---
|
||||
1 file changed, 8 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/man/udevadm.xml b/man/udevadm.xml
|
||||
index b85d9a9249..fd17f40be3 100644
|
||||
--- a/man/udevadm.xml
|
||||
+++ b/man/udevadm.xml
|
||||
@@ -368,9 +368,14 @@
|
||||
<term><option>-l</option></term>
|
||||
<term><option>--log-priority=<replaceable>value</replaceable></option></term>
|
||||
<listitem>
|
||||
- <para>Set the internal log level of systemd-udevd. Valid values are the numerical
|
||||
- syslog priorities or their textual representations: <option>err</option>,
|
||||
- <option>info</option> and <option>debug</option>.</para>
|
||||
+ <para>Set the internal log level of
|
||||
+ <filename>systemd-udevd</filename>. Valid values are the
|
||||
+ numerical syslog priorities or their textual
|
||||
+ representations: <option>emerg</option>,
|
||||
+ <option>alert</option>, <option>crit</option>,
|
||||
+ <option>err</option>, <option>warning</option>,
|
||||
+ <option>notice</option>, <option>info</option>, and
|
||||
+ <option>debug</option>.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
@ -1,47 +0,0 @@
|
||||
From 896050eeb3acbf4106d71204a5173b4984cf1675 Mon Sep 17 00:00:00 2001
|
||||
From: Jan Synacek <jsynacek@redhat.com>
|
||||
Date: Fri, 31 Oct 2014 10:16:45 +0100
|
||||
Subject: [PATCH] core: improve error message when machine id is missing
|
||||
|
||||
(cherry picked from commit 86fb9ca7ae49790880d4b3ce523988b01b13d9ae)
|
||||
---
|
||||
src/core/machine-id-setup.c | 17 ++++++++++++-----
|
||||
1 file changed, 12 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/src/core/machine-id-setup.c b/src/core/machine-id-setup.c
|
||||
index efb074fcbd..ce6d8e02d0 100644
|
||||
--- a/src/core/machine-id-setup.c
|
||||
+++ b/src/core/machine-id-setup.c
|
||||
@@ -162,7 +162,7 @@ static int generate(char id[34], const char *root) {
|
||||
int machine_id_setup(const char *root) {
|
||||
const char *etc_machine_id, *run_machine_id;
|
||||
_cleanup_close_ int fd = -1;
|
||||
- bool writable = false;
|
||||
+ bool writable = true;
|
||||
struct stat st;
|
||||
char id[34]; /* 32 + \n + \0 */
|
||||
int r;
|
||||
@@ -186,12 +186,19 @@ int machine_id_setup(const char *root) {
|
||||
|
||||
mkdir_parents(etc_machine_id, 0755);
|
||||
fd = open(etc_machine_id, O_RDWR|O_CREAT|O_CLOEXEC|O_NOCTTY, 0444);
|
||||
- if (fd >= 0)
|
||||
- writable = true;
|
||||
- else {
|
||||
+ if (fd < 0) {
|
||||
+ int old_errno = errno;
|
||||
+
|
||||
fd = open(etc_machine_id, O_RDONLY|O_CLOEXEC|O_NOCTTY);
|
||||
if (fd < 0) {
|
||||
- log_error("Cannot open %s: %m", etc_machine_id);
|
||||
+ if (old_errno == EROFS && errno == ENOENT)
|
||||
+ log_error("System cannot boot: Missing /etc/machine-id and /etc is mounted read-only.\n"
|
||||
+ "Booting up is supported only when:\n"
|
||||
+ "1) /etc/machine-id exists and is populated.\n"
|
||||
+ "2) /etc/machine-id exists and is empty.\n"
|
||||
+ "3) /etc/machine-id is missing and /etc is writable.\n");
|
||||
+ else
|
||||
+ log_error("Cannot open %s: %m", etc_machine_id);
|
||||
return -errno;
|
||||
}
|
||||
|
@ -1,42 +0,0 @@
|
||||
From 3169d6cf7f78ab2906b7249466d0c5721890fc7a Mon Sep 17 00:00:00 2001
|
||||
From: Umut Tezduyar Lindskog <umut.tezduyar@axis.com>
|
||||
Date: Wed, 29 Oct 2014 11:20:02 +0100
|
||||
Subject: [PATCH] man: explain journalctl --flush correctly
|
||||
|
||||
(cherry picked from commit 2a97b03b3b087e724867e7501ae0c1535ee35031)
|
||||
---
|
||||
NEWS | 4 ++++
|
||||
man/journalctl.xml | 4 ++--
|
||||
2 files changed, 6 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/NEWS b/NEWS
|
||||
index bf8d0ac242..afc73a781f 100644
|
||||
--- a/NEWS
|
||||
+++ b/NEWS
|
||||
@@ -7,6 +7,10 @@ CHANGES WITH 217:
|
||||
show log timestamps in the UTC timezone. journalctl now also
|
||||
accepts -n/--lines=all to disable line capping in a pager.
|
||||
|
||||
+ * journalctl gained a new switch, --flush, that flushes
|
||||
+ logs from /run/log/journal to /var/log/journal if
|
||||
+ persistent storage is enabled.
|
||||
+
|
||||
* Services can notify the manager before they start a reload
|
||||
(by sending RELOADING=1) or shutdown (by sending
|
||||
STOPPING=1). This allows the manager to track and show the
|
||||
diff --git a/man/journalctl.xml b/man/journalctl.xml
|
||||
index db2a1e142b..0ed3ca3bc8 100644
|
||||
--- a/man/journalctl.xml
|
||||
+++ b/man/journalctl.xml
|
||||
@@ -883,9 +883,9 @@
|
||||
|
||||
<listitem><para>Asks the Journal
|
||||
daemon to flush any log data stored in
|
||||
- <filename>/run/systemd/log</filename>
|
||||
+ <filename>/run/log/journal</filename>
|
||||
into
|
||||
- <filename>/var/systemd/log</filename>,
|
||||
+ <filename>/var/log/journal</filename>,
|
||||
if persistent storage is enabled. This
|
||||
call does not return until the
|
||||
operation is
|
@ -1,45 +0,0 @@
|
||||
From 309ce8c2537ae72e2c7a07b7e21bee5fd2da0960 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Sat, 1 Nov 2014 13:52:14 -0400
|
||||
Subject: [PATCH] systemd-journal-flush.service: remove "trigger" from
|
||||
description
|
||||
|
||||
This service is now synchronous, so "trigger" is misleading.
|
||||
|
||||
(cherry picked from commit a65b82457735df2ef58736a55846f400124a8dc0)
|
||||
---
|
||||
NEWS | 7 ++++---
|
||||
units/systemd-journal-flush.service.in | 2 +-
|
||||
2 files changed, 5 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/NEWS b/NEWS
|
||||
index afc73a781f..ac987ad5b7 100644
|
||||
--- a/NEWS
|
||||
+++ b/NEWS
|
||||
@@ -7,9 +7,10 @@ CHANGES WITH 217:
|
||||
show log timestamps in the UTC timezone. journalctl now also
|
||||
accepts -n/--lines=all to disable line capping in a pager.
|
||||
|
||||
- * journalctl gained a new switch, --flush, that flushes
|
||||
- logs from /run/log/journal to /var/log/journal if
|
||||
- persistent storage is enabled.
|
||||
+ * journalctl gained a new switch, --flush, that synchronously
|
||||
+ flushes logs from /run/log/journal to /var/log/journal if
|
||||
+ persistent storage is enabled. systemd-journal-flush.service
|
||||
+ now waits until the operation is complete.
|
||||
|
||||
* Services can notify the manager before they start a reload
|
||||
(by sending RELOADING=1) or shutdown (by sending
|
||||
diff --git a/units/systemd-journal-flush.service.in b/units/systemd-journal-flush.service.in
|
||||
index 2612220e2e..fa290897d6 100644
|
||||
--- a/units/systemd-journal-flush.service.in
|
||||
+++ b/units/systemd-journal-flush.service.in
|
||||
@@ -6,7 +6,7 @@
|
||||
# (at your option) any later version.
|
||||
|
||||
[Unit]
|
||||
-Description=Trigger Flushing of Journal to Persistent Storage
|
||||
+Description=Flush Journal to Persistent Storage
|
||||
Documentation=man:systemd-journald.service(8) man:journald.conf(5)
|
||||
DefaultDependencies=no
|
||||
Requires=systemd-journald.service
|
@ -1,36 +0,0 @@
|
||||
From b464167132f65d25364d3d22368346ab48981a4a Mon Sep 17 00:00:00 2001
|
||||
From: Michael Chapman <mike@very.puzzling.org>
|
||||
Date: Wed, 29 Oct 2014 11:54:07 +1100
|
||||
Subject: [PATCH] kernel-install/90-loaderentry.install: fix cmdline parsing
|
||||
|
||||
A recent commit (2f3a215) changed the parsing of /proc/cmdline to use a
|
||||
shell array. Unfortunately, this introduced a bug: "read -ar line"
|
||||
populates the shell variable $r, not $line. This breaks installation of
|
||||
new loader entries:
|
||||
|
||||
# kernel-install add 3.17.1-304.fc21.x86_64 \
|
||||
/boot/vmlinuz-3.17.1-304.fc21.x86_64
|
||||
Could not determine the kernel command line parameters.
|
||||
Please specify the kernel command line in /etc/kernel/cmdline!
|
||||
|
||||
This commit alters the read command to correctly populate the $line
|
||||
array instead.
|
||||
|
||||
(cherry picked from commit c008f6ee8df9aa36782378d1a3767543b3635a54)
|
||||
---
|
||||
src/kernel-install/90-loaderentry.install | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/kernel-install/90-loaderentry.install b/src/kernel-install/90-loaderentry.install
|
||||
index 6f032b5a4b..d433e00a5c 100644
|
||||
--- a/src/kernel-install/90-loaderentry.install
|
||||
+++ b/src/kernel-install/90-loaderentry.install
|
||||
@@ -47,7 +47,7 @@ if [[ -f /etc/kernel/cmdline ]]; then
|
||||
fi
|
||||
|
||||
if ! [[ ${BOOT_OPTIONS[*]} ]]; then
|
||||
- read -ar line < /proc/cmdline
|
||||
+ read -a line -r < /proc/cmdline
|
||||
for i in "${line[@]}"; do
|
||||
[[ "${i#initrd=*}" != "$i" ]] && continue
|
||||
BOOT_OPTIONS[${#BOOT_OPTIONS[@]}]="$i"
|
@ -1,27 +0,0 @@
|
||||
From 3db8a5d1b39f88981e979ff01afb4a0c7aa9a126 Mon Sep 17 00:00:00 2001
|
||||
From: Joe Lawrence <joe.lawrence@stratus.com>
|
||||
Date: Sat, 1 Nov 2014 12:18:08 -0400
|
||||
Subject: [PATCH] scsi_id: fix usage spelling
|
||||
|
||||
s/threat/treat/g
|
||||
|
||||
(cherry picked from commit 85f13fce322e6303e7e4e55cb43104f81827f36b)
|
||||
---
|
||||
src/udev/scsi_id/scsi_id.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/udev/scsi_id/scsi_id.c b/src/udev/scsi_id/scsi_id.c
|
||||
index 4d9378a5c0..48c6cf7dba 100644
|
||||
--- a/src/udev/scsi_id/scsi_id.c
|
||||
+++ b/src/udev/scsi_id/scsi_id.c
|
||||
@@ -317,8 +317,8 @@ static void help(void) {
|
||||
" -f,--config= location of config file\n"
|
||||
" -p,--page=0x80|0x83|pre-spc3-83 SCSI page (0x80, 0x83, pre-spc3-83)\n"
|
||||
" -s,--sg-version=3|4 use SGv3 or SGv4\n"
|
||||
- " -b,--blacklisted threat device as blacklisted\n"
|
||||
- " -g,--whitelisted threat device as whitelisted\n"
|
||||
+ " -b,--blacklisted treat device as blacklisted\n"
|
||||
+ " -g,--whitelisted treat device as whitelisted\n"
|
||||
" -u,--replace-whitespace replace all whitespace by underscores\n"
|
||||
" -v,--verbose verbose logging\n"
|
||||
" --version print version\n"
|
@ -1,28 +0,0 @@
|
||||
From 5a9b149c96f39d8363e6b2dcb45e95056d2799ea Mon Sep 17 00:00:00 2001
|
||||
From: Colin Walters <walters@verbum.org>
|
||||
Date: Sat, 1 Nov 2014 15:49:53 -0400
|
||||
Subject: [PATCH] libudev: Use correct free function
|
||||
|
||||
FILE * wants cleanup_fclose().
|
||||
|
||||
Spotted by udev hwdb segfaulting in gnome-continuous' buildroot
|
||||
construction.
|
||||
|
||||
(cherry picked from commit ea55caa60c6860e33fa4f1a216c003ff666e9c68)
|
||||
---
|
||||
src/libudev/libudev.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/libudev/libudev.c b/src/libudev/libudev.c
|
||||
index 8464427651..05f3b479fa 100644
|
||||
--- a/src/libudev/libudev.c
|
||||
+++ b/src/libudev/libudev.c
|
||||
@@ -119,7 +119,7 @@ _public_ struct udev *udev_new(void)
|
||||
{
|
||||
struct udev *udev;
|
||||
const char *env;
|
||||
- _cleanup_free_ FILE *f = NULL;
|
||||
+ _cleanup_fclose_ FILE *f = NULL;
|
||||
|
||||
udev = new0(struct udev, 1);
|
||||
if (udev == NULL)
|
@ -1,40 +0,0 @@
|
||||
From b5404292de0a4252b4b7447ef45bf3f334cae529 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Sun, 2 Nov 2014 12:10:42 -0500
|
||||
Subject: [PATCH] Raise level of 'Found dependency...' lines
|
||||
|
||||
This way they always show up together with 'Found ordering cycle...'.
|
||||
Ordering cycles are a serious error and a major pain to debug. If
|
||||
quiet is enabled, only the first and the last line of output are
|
||||
shown:
|
||||
|
||||
systemd[1]: Found ordering cycle on basic.target/start
|
||||
systemd[1]: Breaking ordering cycle by deleting job timers.target/start
|
||||
systemd[1]: Job timers.target/start deleted to break ordering cycle starting with basic.target/start
|
||||
|
||||
which isn't particularly enlightening. So just show the whole message
|
||||
at the same level.
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1158206
|
||||
(cherry picked from commit 14fe721b5f6d8457cc8737fa75f2ed79e7fa534b)
|
||||
---
|
||||
src/core/transaction.c | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/core/transaction.c b/src/core/transaction.c
|
||||
index dbb4133fe3..91f5ee18df 100644
|
||||
--- a/src/core/transaction.c
|
||||
+++ b/src/core/transaction.c
|
||||
@@ -377,9 +377,9 @@ static int transaction_verify_order_one(Transaction *tr, Job *j, Job *from, unsi
|
||||
for (k = from; k; k = ((k->generation == generation && k->marker != k) ? k->marker : NULL)) {
|
||||
|
||||
/* logging for j not k here here to provide consistent narrative */
|
||||
- log_info_unit(j->unit->id,
|
||||
- "Found dependency on %s/%s",
|
||||
- k->unit->id, job_type_to_string(k->type));
|
||||
+ log_warning_unit(j->unit->id,
|
||||
+ "Found dependency on %s/%s",
|
||||
+ k->unit->id, job_type_to_string(k->type));
|
||||
|
||||
if (!delete && hashmap_get(tr->jobs, k->unit) &&
|
||||
!unit_matters_to_anchor(k->unit, k)) {
|
@ -1,124 +0,0 @@
|
||||
From db2241b5259671c2a7435235f5fc560ba4e97077 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Sun, 2 Nov 2014 12:19:38 -0500
|
||||
Subject: [PATCH] manager: do not print timing when running in test mode
|
||||
|
||||
(cherry picked from commit 56dacdbc1ca95cef8bf8c97c0d7af761a71eaab3)
|
||||
---
|
||||
src/core/manager.c | 84 ++++++++++++++++++++++++++++++------------------------
|
||||
1 file changed, 46 insertions(+), 38 deletions(-)
|
||||
|
||||
diff --git a/src/core/manager.c b/src/core/manager.c
|
||||
index d427d88d4e..ff29ae1d9d 100644
|
||||
--- a/src/core/manager.c
|
||||
+++ b/src/core/manager.c
|
||||
@@ -2584,45 +2584,13 @@ bool manager_unit_inactive_or_pending(Manager *m, const char *name) {
|
||||
return unit_inactive_or_pending(u);
|
||||
}
|
||||
|
||||
-void manager_check_finished(Manager *m) {
|
||||
+static void manager_notify_finished(Manager *m) {
|
||||
char userspace[FORMAT_TIMESPAN_MAX], initrd[FORMAT_TIMESPAN_MAX], kernel[FORMAT_TIMESPAN_MAX], sum[FORMAT_TIMESPAN_MAX];
|
||||
usec_t firmware_usec, loader_usec, kernel_usec, initrd_usec, userspace_usec, total_usec;
|
||||
- Unit *u = NULL;
|
||||
- Iterator i;
|
||||
|
||||
- assert(m);
|
||||
-
|
||||
- if (m->n_running_jobs == 0)
|
||||
- m->jobs_in_progress_event_source = sd_event_source_unref(m->jobs_in_progress_event_source);
|
||||
-
|
||||
- if (hashmap_size(m->jobs) > 0) {
|
||||
-
|
||||
- if (m->jobs_in_progress_event_source)
|
||||
- sd_event_source_set_time(m->jobs_in_progress_event_source, now(CLOCK_MONOTONIC) + JOBS_IN_PROGRESS_WAIT_USEC);
|
||||
-
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- manager_flip_auto_status(m, false);
|
||||
-
|
||||
- /* Notify Type=idle units that we are done now */
|
||||
- m->idle_pipe_event_source = sd_event_source_unref(m->idle_pipe_event_source);
|
||||
- manager_close_idle_pipe(m);
|
||||
-
|
||||
- /* Turn off confirm spawn now */
|
||||
- m->confirm_spawn = false;
|
||||
-
|
||||
- /* No need to update ask password status when we're going non-interactive */
|
||||
- manager_close_ask_password(m);
|
||||
-
|
||||
- /* This is no longer the first boot */
|
||||
- manager_set_first_boot(m, false);
|
||||
-
|
||||
- if (dual_timestamp_is_set(&m->finish_timestamp))
|
||||
+ if (m->test_run)
|
||||
return;
|
||||
|
||||
- dual_timestamp_get(&m->finish_timestamp);
|
||||
-
|
||||
if (m->running_as == SYSTEMD_SYSTEM && detect_container(NULL) <= 0) {
|
||||
|
||||
/* Note that m->kernel_usec.monotonic is always at 0,
|
||||
@@ -2677,10 +2645,6 @@ void manager_check_finished(Manager *m) {
|
||||
NULL);
|
||||
}
|
||||
|
||||
- SET_FOREACH(u, m->startup_units, i)
|
||||
- if (u->cgroup_path)
|
||||
- cgroup_context_apply(unit_get_cgroup_context(u), unit_get_cgroup_mask(u), u->cgroup_path, manager_state(m));
|
||||
-
|
||||
bus_manager_send_finished(m, firmware_usec, loader_usec, kernel_usec, initrd_usec, userspace_usec, total_usec);
|
||||
|
||||
sd_notifyf(false,
|
||||
@@ -2689,6 +2653,50 @@ void manager_check_finished(Manager *m) {
|
||||
format_timespan(sum, sizeof(sum), total_usec, USEC_PER_MSEC));
|
||||
}
|
||||
|
||||
+void manager_check_finished(Manager *m) {
|
||||
+ Unit *u = NULL;
|
||||
+ Iterator i;
|
||||
+
|
||||
+ assert(m);
|
||||
+
|
||||
+ if (m->n_running_jobs == 0)
|
||||
+ m->jobs_in_progress_event_source = sd_event_source_unref(m->jobs_in_progress_event_source);
|
||||
+
|
||||
+ if (hashmap_size(m->jobs) > 0) {
|
||||
+
|
||||
+ if (m->jobs_in_progress_event_source)
|
||||
+ sd_event_source_set_time(m->jobs_in_progress_event_source, now(CLOCK_MONOTONIC) + JOBS_IN_PROGRESS_WAIT_USEC);
|
||||
+
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ manager_flip_auto_status(m, false);
|
||||
+
|
||||
+ /* Notify Type=idle units that we are done now */
|
||||
+ m->idle_pipe_event_source = sd_event_source_unref(m->idle_pipe_event_source);
|
||||
+ manager_close_idle_pipe(m);
|
||||
+
|
||||
+ /* Turn off confirm spawn now */
|
||||
+ m->confirm_spawn = false;
|
||||
+
|
||||
+ /* No need to update ask password status when we're going non-interactive */
|
||||
+ manager_close_ask_password(m);
|
||||
+
|
||||
+ /* This is no longer the first boot */
|
||||
+ manager_set_first_boot(m, false);
|
||||
+
|
||||
+ if (dual_timestamp_is_set(&m->finish_timestamp))
|
||||
+ return;
|
||||
+
|
||||
+ dual_timestamp_get(&m->finish_timestamp);
|
||||
+
|
||||
+ manager_notify_finished(m);
|
||||
+
|
||||
+ SET_FOREACH(u, m->startup_units, i)
|
||||
+ if (u->cgroup_path)
|
||||
+ cgroup_context_apply(unit_get_cgroup_context(u), unit_get_cgroup_mask(u), u->cgroup_path, manager_state(m));
|
||||
+}
|
||||
+
|
||||
static int create_generator_dir(Manager *m, char **generator, const char *name) {
|
||||
char *p;
|
||||
int r;
|
@ -1,58 +0,0 @@
|
||||
From 3c6a000d5c291f998dba2eb4c8e351f4603ca985 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Sun, 2 Nov 2014 11:39:17 -0500
|
||||
Subject: [PATCH] unit: do not order timers.target before basic.target
|
||||
|
||||
Since commit 19f8d037833f2 'timer: order OnCalendar units after
|
||||
timer-sync.target if DefaultDependencies=no' timers might get a
|
||||
dependency on time-sync.target, which does not really belong in early
|
||||
boot. If ntp is enabled, time-sync.target might be delayed until a
|
||||
network connection is established.
|
||||
|
||||
It turns out that majority of timer units found in the wild do not
|
||||
need to be started in early boot. Out of the timer units available in
|
||||
Fedora 21, only systemd-readahead-done.timer and mdadm-last-resort@.timer
|
||||
should be started early, but they both have DefaultDependencies=no,
|
||||
so are not part of timers.target anyway. All the rest look like they
|
||||
will be fine with being started a bit later (and the majority even
|
||||
much later, since they run daily or weekly).
|
||||
|
||||
Let timers.target be pulled in by basic.target, but without the
|
||||
temporal dependency. This means timer units are started on a "best
|
||||
effort" schedule.
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1158206
|
||||
(cherry picked from commit 3b0217036040a6013faeab4eb9da7469e3bbcfb3)
|
||||
|
||||
Conflicts:
|
||||
units/basic.target
|
||||
---
|
||||
units/basic.target | 4 +++-
|
||||
units/timers.target | 3 +++
|
||||
2 files changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/units/basic.target b/units/basic.target
|
||||
index b890d48bbc..abb63ec560 100644
|
||||
--- a/units/basic.target
|
||||
+++ b/units/basic.target
|
||||
@@ -8,6 +8,8 @@
|
||||
[Unit]
|
||||
Description=Basic System
|
||||
Documentation=man:systemd.special(7)
|
||||
+
|
||||
Requires=sysinit.target
|
||||
+After=sysinit.target
|
||||
Wants=sockets.target timers.target paths.target slices.target
|
||||
-After=sysinit.target sockets.target timers.target paths.target slices.target
|
||||
+After=sockets.target paths.target slices.target
|
||||
diff --git a/units/timers.target b/units/timers.target
|
||||
index 07fda3d9d0..251fa68065 100644
|
||||
--- a/units/timers.target
|
||||
+++ b/units/timers.target
|
||||
@@ -8,3 +8,6 @@
|
||||
[Unit]
|
||||
Description=Timers
|
||||
Documentation=man:systemd.special(7)
|
||||
+
|
||||
+DefaultDependencies=no
|
||||
+Conflicts=shutdown.target
|
@ -1,28 +0,0 @@
|
||||
From 0ce3f7e212c826162b15f8b78b18a4646b791a6d Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Sun, 2 Nov 2014 21:45:42 -0500
|
||||
Subject: [PATCH] units: order sd-journal-flush after sd-remount-fs
|
||||
|
||||
Otherwise we could attempt to flush the journal while /var/log/ was
|
||||
still ro, and silently skip journal flushing.
|
||||
|
||||
The way that errors in flushing are handled should still be changed to
|
||||
be more transparent and robust.
|
||||
|
||||
(cherry picked from commit 1f1926aa5e836caa3bd6df43704aecd606135103)
|
||||
---
|
||||
units/systemd-journal-flush.service.in | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/units/systemd-journal-flush.service.in b/units/systemd-journal-flush.service.in
|
||||
index fa290897d6..98c91b4bc5 100644
|
||||
--- a/units/systemd-journal-flush.service.in
|
||||
+++ b/units/systemd-journal-flush.service.in
|
||||
@@ -11,6 +11,7 @@ Documentation=man:systemd-journald.service(8) man:journald.conf(5)
|
||||
DefaultDependencies=no
|
||||
Requires=systemd-journald.service
|
||||
After=systemd-journald.service
|
||||
+After=systemd-remount-fs.service
|
||||
Before=systemd-user-sessions.service systemd-tmpfiles-setup.service
|
||||
RequiresMountsFor=/var/log/journal
|
||||
|
@ -1,33 +0,0 @@
|
||||
From 25bfe24d32faa1203d74ffb6bfbf732e10426ea3 Mon Sep 17 00:00:00 2001
|
||||
From: Michal Schmidt <mschmidt@redhat.com>
|
||||
Date: Tue, 4 Nov 2014 20:28:08 +0100
|
||||
Subject: [PATCH] units: make systemd-journald.service Type=notify
|
||||
|
||||
It already calls sd_notify(), so it looks like an oversight.
|
||||
|
||||
Without it, its ordering to systemd-journal-flush.service is
|
||||
non-deterministic and the SIGUSR1 from flushing may kill journald before
|
||||
it has its signal handlers set up.
|
||||
|
||||
https://bugs.freedesktop.org/show_bug.cgi?id=85871
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1159641
|
||||
(cherry picked from commit a87a38c20196a4aeb56b6ba71d688eefd0b21c30)
|
||||
|
||||
Conflicts:
|
||||
units/systemd-journald.service.in
|
||||
---
|
||||
units/systemd-journald.service.in | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/units/systemd-journald.service.in b/units/systemd-journald.service.in
|
||||
index 4de38fad59..441d5b1f96 100644
|
||||
--- a/units/systemd-journald.service.in
|
||||
+++ b/units/systemd-journald.service.in
|
||||
@@ -14,6 +14,7 @@ After=systemd-journald.socket systemd-journald-dev-log.socket syslog.socket
|
||||
Before=sysinit.target
|
||||
|
||||
[Service]
|
||||
+Type=notify
|
||||
Sockets=systemd-journald.socket systemd-journald-dev-log.socket
|
||||
ExecStart=@rootlibexecdir@/systemd-journald
|
||||
Restart=always
|
@ -1,229 +0,0 @@
|
||||
From a48190c9f9b07f735d14743878955511e66206c4 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Thu, 6 Nov 2014 16:44:06 -0500
|
||||
Subject: [PATCH] Revert "missing: remove fanotify"
|
||||
|
||||
This reverts commit c7e4a7bece7a5c4484d229dd5e8ff01a5d49c62e.
|
||||
---
|
||||
Makefile.am | 1 +
|
||||
configure.ac | 1 +
|
||||
src/shared/linux/fanotify.h | 98 +++++++++++++++++++++++++++++++++++++++++++++
|
||||
src/shared/missing.h | 59 +++++++++++++++++++++++++++
|
||||
4 files changed, 159 insertions(+)
|
||||
create mode 100644 src/shared/linux/fanotify.h
|
||||
|
||||
diff --git a/Makefile.am b/Makefile.am
|
||||
index 11a3033253..6d869c12ad 100644
|
||||
--- a/Makefile.am
|
||||
+++ b/Makefile.am
|
||||
@@ -741,6 +741,7 @@ noinst_LTLIBRARIES += \
|
||||
|
||||
libsystemd_shared_la_SOURCES = \
|
||||
src/shared/linux/auto_dev-ioctl.h \
|
||||
+ src/shared/linux/fanotify.h \
|
||||
src/shared/ioprio.h \
|
||||
src/shared/missing.h \
|
||||
src/shared/initreq.h \
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index e63d3dc809..c2f8f7a548 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -306,6 +306,7 @@ RT_LIBS="$LIBS"
|
||||
AC_SUBST(RT_LIBS)
|
||||
LIBS="$save_LIBS"
|
||||
|
||||
+AC_CHECK_FUNCS([fanotify_init fanotify_mark])
|
||||
AC_CHECK_FUNCS([memfd_create])
|
||||
AC_CHECK_FUNCS([__secure_getenv secure_getenv])
|
||||
AC_CHECK_DECLS([gettid, pivot_root, name_to_handle_at, setns, LO_FLAGS_PARTSCAN],
|
||||
diff --git a/src/shared/linux/fanotify.h b/src/shared/linux/fanotify.h
|
||||
new file mode 100644
|
||||
index 0000000000..63531a6b4d
|
||||
--- /dev/null
|
||||
+++ b/src/shared/linux/fanotify.h
|
||||
@@ -0,0 +1,98 @@
|
||||
+#ifndef _LINUX_FANOTIFY_H
|
||||
+#define _LINUX_FANOTIFY_H
|
||||
+
|
||||
+#include <linux/types.h>
|
||||
+
|
||||
+/* the following events that user-space can register for */
|
||||
+#define FAN_ACCESS 0x00000001 /* File was accessed */
|
||||
+#define FAN_MODIFY 0x00000002 /* File was modified */
|
||||
+#define FAN_CLOSE_WRITE 0x00000008 /* Unwrittable file closed */
|
||||
+#define FAN_CLOSE_NOWRITE 0x00000010 /* Writtable file closed */
|
||||
+#define FAN_OPEN 0x00000020 /* File was opened */
|
||||
+
|
||||
+#define FAN_EVENT_ON_CHILD 0x08000000 /* interested in child events */
|
||||
+
|
||||
+/* FIXME currently Q's have no limit.... */
|
||||
+#define FAN_Q_OVERFLOW 0x00004000 /* Event queued overflowed */
|
||||
+
|
||||
+#define FAN_OPEN_PERM 0x00010000 /* File open in perm check */
|
||||
+#define FAN_ACCESS_PERM 0x00020000 /* File accessed in perm check */
|
||||
+
|
||||
+/* helper events */
|
||||
+#define FAN_CLOSE (FAN_CLOSE_WRITE | FAN_CLOSE_NOWRITE) /* close */
|
||||
+
|
||||
+/* flags used for fanotify_init() */
|
||||
+#define FAN_CLOEXEC 0x00000001
|
||||
+#define FAN_NONBLOCK 0x00000002
|
||||
+
|
||||
+#define FAN_ALL_INIT_FLAGS (FAN_CLOEXEC | FAN_NONBLOCK)
|
||||
+
|
||||
+/* flags used for fanotify_modify_mark() */
|
||||
+#define FAN_MARK_ADD 0x00000001
|
||||
+#define FAN_MARK_REMOVE 0x00000002
|
||||
+#define FAN_MARK_DONT_FOLLOW 0x00000004
|
||||
+#define FAN_MARK_ONLYDIR 0x00000008
|
||||
+#define FAN_MARK_MOUNT 0x00000010
|
||||
+#define FAN_MARK_IGNORED_MASK 0x00000020
|
||||
+#define FAN_MARK_IGNORED_SURV_MODIFY 0x00000040
|
||||
+#define FAN_MARK_FLUSH 0x00000080
|
||||
+
|
||||
+#define FAN_ALL_MARK_FLAGS (FAN_MARK_ADD |\
|
||||
+ FAN_MARK_REMOVE |\
|
||||
+ FAN_MARK_DONT_FOLLOW |\
|
||||
+ FAN_MARK_ONLYDIR |\
|
||||
+ FAN_MARK_MOUNT |\
|
||||
+ FAN_MARK_IGNORED_MASK |\
|
||||
+ FAN_MARK_IGNORED_SURV_MODIFY)
|
||||
+
|
||||
+/*
|
||||
+ * All of the events - we build the list by hand so that we can add flags in
|
||||
+ * the future and not break backward compatibility. Apps will get only the
|
||||
+ * events that they originally wanted. Be sure to add new events here!
|
||||
+ */
|
||||
+#define FAN_ALL_EVENTS (FAN_ACCESS |\
|
||||
+ FAN_MODIFY |\
|
||||
+ FAN_CLOSE |\
|
||||
+ FAN_OPEN)
|
||||
+
|
||||
+/*
|
||||
+ * All events which require a permission response from userspace
|
||||
+ */
|
||||
+#define FAN_ALL_PERM_EVENTS (FAN_OPEN_PERM |\
|
||||
+ FAN_ACCESS_PERM)
|
||||
+
|
||||
+#define FAN_ALL_OUTGOING_EVENTS (FAN_ALL_EVENTS |\
|
||||
+ FAN_ALL_PERM_EVENTS |\
|
||||
+ FAN_Q_OVERFLOW)
|
||||
+
|
||||
+#define FANOTIFY_METADATA_VERSION 2
|
||||
+
|
||||
+struct fanotify_event_metadata {
|
||||
+ __u32 event_len;
|
||||
+ __u32 vers;
|
||||
+ __u64 mask;
|
||||
+ __s32 fd;
|
||||
+ __s32 pid;
|
||||
+} __attribute__ ((packed));
|
||||
+
|
||||
+struct fanotify_response {
|
||||
+ __s32 fd;
|
||||
+ __u32 response;
|
||||
+} __attribute__ ((packed));
|
||||
+
|
||||
+/* Legit userspace responses to a _PERM event */
|
||||
+#define FAN_ALLOW 0x01
|
||||
+#define FAN_DENY 0x02
|
||||
+
|
||||
+/* Helper functions to deal with fanotify_event_metadata buffers */
|
||||
+#define FAN_EVENT_METADATA_LEN (sizeof(struct fanotify_event_metadata))
|
||||
+
|
||||
+#define FAN_EVENT_NEXT(meta, len) ((len) -= (meta)->event_len, \
|
||||
+ (struct fanotify_event_metadata*)(((char *)(meta)) + \
|
||||
+ (meta)->event_len))
|
||||
+
|
||||
+#define FAN_EVENT_OK(meta, len) ((long)(len) >= (long)FAN_EVENT_METADATA_LEN && \
|
||||
+ (long)(meta)->event_len >= (long)FAN_EVENT_METADATA_LEN && \
|
||||
+ (long)(meta)->event_len <= (long)(len))
|
||||
+
|
||||
+#endif /* _LINUX_FANOTIFY_H */
|
||||
diff --git a/src/shared/missing.h b/src/shared/missing.h
|
||||
index bb4f8f23a8..c98d0273a3 100644
|
||||
--- a/src/shared/missing.h
|
||||
+++ b/src/shared/missing.h
|
||||
@@ -116,6 +116,12 @@ static inline int pivot_root(const char *new_root, const char *put_old) {
|
||||
#endif
|
||||
|
||||
#ifdef __x86_64__
|
||||
+# ifndef __NR_fanotify_init
|
||||
+# define __NR_fanotify_init 300
|
||||
+# endif
|
||||
+# ifndef __NR_fanotify_mark
|
||||
+# define __NR_fanotify_mark 301
|
||||
+# endif
|
||||
# ifndef __NR_memfd_create
|
||||
# define __NR_memfd_create 319
|
||||
# endif
|
||||
@@ -124,16 +130,69 @@ static inline int pivot_root(const char *new_root, const char *put_old) {
|
||||
# define __NR_memfd_create 385
|
||||
# endif
|
||||
#elif defined _MIPS_SIM
|
||||
+# if _MIPS_SIM == _MIPS_SIM_ABI32
|
||||
+# ifndef __NR_fanotify_init
|
||||
+# define __NR_fanotify_init 4336
|
||||
+# endif
|
||||
+# ifndef __NR_fanotify_mark
|
||||
+# define __NR_fanotify_mark 4337
|
||||
+# endif
|
||||
+# elif _MIPS_SIM == _MIPS_SIM_NABI32
|
||||
+# ifndef __NR_fanotify_init
|
||||
+# define __NR_fanotify_init 6300
|
||||
+# endif
|
||||
+# ifndef __NR_fanotify_mark
|
||||
+# define __NR_fanotify_mark 6301
|
||||
+# endif
|
||||
+# elif _MIPS_SIM == _MIPS_SIM_ABI64
|
||||
+# ifndef __NR_fanotify_init
|
||||
+# define __NR_fanotify_init 5295
|
||||
+# endif
|
||||
+# ifndef __NR_fanotify_mark
|
||||
+# define __NR_fanotify_mark 5296
|
||||
+# endif
|
||||
+# endif
|
||||
# ifndef __NR_memfd_create
|
||||
# warning "__NR_memfd_create not yet defined for MIPS"
|
||||
# define __NR_memfd_create 0xffffffff
|
||||
# endif
|
||||
#else
|
||||
+# ifndef __NR_fanotify_init
|
||||
+# define __NR_fanotify_init 338
|
||||
+# endif
|
||||
+# ifndef __NR_fanotify_mark
|
||||
+# define __NR_fanotify_mark 339
|
||||
+# endif
|
||||
# ifndef __NR_memfd_create
|
||||
# define __NR_memfd_create 356
|
||||
# endif
|
||||
#endif
|
||||
|
||||
+#ifndef HAVE_FANOTIFY_INIT
|
||||
+static inline int fanotify_init(unsigned int flags, unsigned int event_f_flags) {
|
||||
+ return syscall(__NR_fanotify_init, flags, event_f_flags);
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
+#ifndef HAVE_FANOTIFY_MARK
|
||||
+static inline int fanotify_mark(int fanotify_fd, unsigned int flags, uint64_t mask,
|
||||
+ int dfd, const char *pathname) {
|
||||
+#if defined _MIPS_SIM && _MIPS_SIM == _MIPS_SIM_ABI32 || defined __powerpc__ && !defined __powerpc64__ \
|
||||
+ || defined __arm__ && !defined __aarch64__
|
||||
+ union {
|
||||
+ uint64_t _64;
|
||||
+ uint32_t _32[2];
|
||||
+ } _mask;
|
||||
+ _mask._64 = mask;
|
||||
+
|
||||
+ return syscall(__NR_fanotify_mark, fanotify_fd, flags,
|
||||
+ _mask._32[0], _mask._32[1], dfd, pathname);
|
||||
+#else
|
||||
+ return syscall(__NR_fanotify_mark, fanotify_fd, flags, mask, dfd, pathname);
|
||||
+#endif
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
#ifndef HAVE_MEMFD_CREATE
|
||||
static inline int memfd_create(const char *name, unsigned int flags) {
|
||||
return syscall(__NR_memfd_create, name, flags);
|
@ -1,26 +0,0 @@
|
||||
From 67ada875bc0563d97e88f77732359d01ef28a404 Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Tue, 4 Nov 2014 23:45:15 +0000
|
||||
Subject: [PATCH] udev: Fix parsing of udev.event-timeout kernel parameter.
|
||||
|
||||
(cherry picked from commit f671774f52838d35d78e62ddcb781b5b65b3373f)
|
||||
---
|
||||
src/udev/udevd.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/udev/udevd.c b/src/udev/udevd.c
|
||||
index 2e6c71352f..193702cd28 100644
|
||||
--- a/src/udev/udevd.c
|
||||
+++ b/src/udev/udevd.c
|
||||
@@ -994,9 +994,9 @@ static void kernel_cmdline_options(struct udev *udev) {
|
||||
if (r < 0)
|
||||
log_warning("Invalid udev.exec-delay ignored: %s", opt + 16);
|
||||
} else if (startswith(opt, "udev.event-timeout=")) {
|
||||
- r = safe_atou64(opt + 16, &arg_event_timeout_usec);
|
||||
+ r = safe_atou64(opt + 19, &arg_event_timeout_usec);
|
||||
if (r < 0) {
|
||||
- log_warning("Invalid udev.event-timeout ignored: %s", opt + 16);
|
||||
+ log_warning("Invalid udev.event-timeout ignored: %s", opt + 19);
|
||||
break;
|
||||
}
|
||||
arg_event_timeout_usec *= USEC_PER_SEC;
|
@ -1,48 +0,0 @@
|
||||
From dc2bcafb431344448b93f92a1f6749c9afb30398 Mon Sep 17 00:00:00 2001
|
||||
From: Colin Guthrie <colin@mageia.org>
|
||||
Date: Sun, 2 Nov 2014 13:33:16 +0000
|
||||
Subject: [PATCH] manager: Ensure user's systemd runtime directory exists.
|
||||
|
||||
This mirrors code in dbus.c when creating the private socket and
|
||||
avoids error messages like:
|
||||
|
||||
systemd[1353]: bind(/run/user/603/systemd/notify) failed: No such file or directory
|
||||
systemd[1353]: Failed to fully start up daemon: No such file or directory
|
||||
|
||||
(cherry picked from commit 0c3f25e0c1f028d4da9cc5253abf0322230e6835)
|
||||
---
|
||||
src/core/manager.c | 12 ++++++++----
|
||||
1 file changed, 8 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/src/core/manager.c b/src/core/manager.c
|
||||
index ff29ae1d9d..47e23ba80e 100644
|
||||
--- a/src/core/manager.c
|
||||
+++ b/src/core/manager.c
|
||||
@@ -662,9 +662,11 @@ static int manager_setup_notify(Manager *m) {
|
||||
return -errno;
|
||||
}
|
||||
|
||||
- if (m->running_as == SYSTEMD_SYSTEM)
|
||||
+ if (m->running_as == SYSTEMD_SYSTEM) {
|
||||
m->notify_socket = strdup("/run/systemd/notify");
|
||||
- else {
|
||||
+ if (!m->notify_socket)
|
||||
+ return log_oom();
|
||||
+ } else {
|
||||
const char *e;
|
||||
|
||||
e = getenv("XDG_RUNTIME_DIR");
|
||||
@@ -674,9 +676,11 @@ static int manager_setup_notify(Manager *m) {
|
||||
}
|
||||
|
||||
m->notify_socket = strappend(e, "/systemd/notify");
|
||||
+ if (!m->notify_socket)
|
||||
+ return log_oom();
|
||||
+
|
||||
+ mkdir_parents_label(m->notify_socket, 0755);
|
||||
}
|
||||
- if (!m->notify_socket)
|
||||
- return log_oom();
|
||||
|
||||
strncpy(sa.un.sun_path, m->notify_socket, sizeof(sa.un.sun_path)-1);
|
||||
r = bind(fd, &sa.sa, offsetof(struct sockaddr_un, sun_path) + strlen(sa.un.sun_path));
|
@ -1,31 +0,0 @@
|
||||
From c4b4b03e153f8449480977535eb70465b4320b12 Mon Sep 17 00:00:00 2001
|
||||
From: Colin Guthrie <colin@mageia.org>
|
||||
Date: Wed, 5 Nov 2014 15:29:41 +0000
|
||||
Subject: [PATCH] udev hwdb: Change error message regarding missing hwdb.bin
|
||||
back to debug.
|
||||
|
||||
When used in an initramfs, it's expected that the hwdb.bin file is
|
||||
not present (it makes for a very large initramfs otherwise).
|
||||
|
||||
While it's nice to tell the user about this, as it's not strictly
|
||||
speaking an error we really shouldn't be so forceful in our
|
||||
reporting.
|
||||
|
||||
(cherry picked from commit 8232e39e7cf32071e11b3b04839e6c98fbc81d0f)
|
||||
---
|
||||
src/libudev/libudev-hwdb.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/libudev/libudev-hwdb.c b/src/libudev/libudev-hwdb.c
|
||||
index a1cfc0bd5a..0716072d9a 100644
|
||||
--- a/src/libudev/libudev-hwdb.c
|
||||
+++ b/src/libudev/libudev-hwdb.c
|
||||
@@ -296,7 +296,7 @@ _public_ struct udev_hwdb *udev_hwdb_new(struct udev *udev) {
|
||||
}
|
||||
|
||||
if (!hwdb->f) {
|
||||
- udev_err(udev, "hwdb.bin does not exist, please run udevadm hwdb --update");
|
||||
+ udev_dbg(udev, "hwdb.bin does not exist, please run udevadm hwdb --update");
|
||||
udev_hwdb_unref(hwdb);
|
||||
return NULL;
|
||||
}
|
@ -1,33 +0,0 @@
|
||||
From 4ce940e9a436ef9d19bd52bd9c2f7ac24d1c842c Mon Sep 17 00:00:00 2001
|
||||
From: Lennart Poettering <lennart@poettering.net>
|
||||
Date: Thu, 6 Nov 2014 15:20:29 +0100
|
||||
Subject: [PATCH] systemctl: when invokes as "reboot -f", sync()
|
||||
|
||||
We do this in the clean shutdown path in shutdown.c, hence we should do
|
||||
is for "reboot -f", too.
|
||||
|
||||
(cherry picked from commit 4a3ad39957399c4a30fc472a804e72907ecaa4f9)
|
||||
---
|
||||
src/systemctl/systemctl.c | 9 +++++++--
|
||||
1 file changed, 7 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
|
||||
index 8481a9b20c..207a5e78dc 100644
|
||||
--- a/src/systemctl/systemctl.c
|
||||
+++ b/src/systemctl/systemctl.c
|
||||
@@ -6948,8 +6948,13 @@ done:
|
||||
|
||||
static int halt_now(enum action a) {
|
||||
|
||||
-/* Make sure C-A-D is handled by the kernel from this
|
||||
- * point on... */
|
||||
+ /* The kernel will automaticall flush ATA disks and suchlike
|
||||
+ * on reboot(), but the file systems need to be synce'd
|
||||
+ * explicitly in advance. */
|
||||
+ sync();
|
||||
+
|
||||
+ /* Make sure C-A-D is handled by the kernel from this point
|
||||
+ * on... */
|
||||
reboot(RB_ENABLE_CAD);
|
||||
|
||||
switch (a) {
|
@ -1,42 +0,0 @@
|
||||
From dd5e5ef3392a83525d23aa9a523e9d187fb7faaf Mon Sep 17 00:00:00 2001
|
||||
From: Michal Schmidt <mschmidt@redhat.com>
|
||||
Date: Thu, 6 Nov 2014 16:48:11 +0100
|
||||
Subject: [PATCH] shared: create files even if the SELinux policy has no
|
||||
context for them
|
||||
|
||||
The SELinux policy defines no context for some files. E.g.:
|
||||
$ matchpathcon /run/lock/subsys /dev/mqueue
|
||||
/run/lock/subsys <<none>>
|
||||
/dev/mqueue <<none>>
|
||||
|
||||
We still need to be able to create them.
|
||||
In this case selabel_lookup_raw() returns ENOENT. We should then skip
|
||||
setfscreatecon(), but still return success.
|
||||
It was broken since c34255bdb2 ("label: unify code to make directories,
|
||||
symlinks").
|
||||
|
||||
(cherry picked from commit 2d58aa4692e9fc47911bff5d064ba3e328c35369)
|
||||
---
|
||||
src/shared/selinux-util.c | 8 ++++++--
|
||||
1 file changed, 6 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/shared/selinux-util.c b/src/shared/selinux-util.c
|
||||
index 1eddd17d27..6bd3bf1c80 100644
|
||||
--- a/src/shared/selinux-util.c
|
||||
+++ b/src/shared/selinux-util.c
|
||||
@@ -332,9 +332,13 @@ int mac_selinux_create_file_prepare(const char *path, mode_t mode) {
|
||||
r = selabel_lookup_raw(label_hnd, &filecon, newpath, mode);
|
||||
}
|
||||
|
||||
- if (r < 0 && errno != ENOENT)
|
||||
+ /* No context specified by the policy? Proceed without setting it. */
|
||||
+ if (r < 0 && errno == ENOENT)
|
||||
+ return 0;
|
||||
+
|
||||
+ if (r < 0)
|
||||
r = -errno;
|
||||
- else if (r == 0) {
|
||||
+ else {
|
||||
r = setfscreatecon(filecon);
|
||||
if (r < 0) {
|
||||
log_enforcing("Failed to set SELinux security context %s for %s: %m", filecon, path);
|
@ -1,67 +0,0 @@
|
||||
From a59400d10830f01a5eb657d41d992df42cd8952e Mon Sep 17 00:00:00 2001
|
||||
From: Michal Schmidt <mschmidt@redhat.com>
|
||||
Date: Thu, 6 Nov 2014 22:24:13 +0100
|
||||
Subject: [PATCH] shutdown: fix arguments to /run/initramfs/shutdown
|
||||
|
||||
Our initrd interface specifies that the verb is in argv[1].
|
||||
This is where systemd passes it to systemd-shutdown, but getopt
|
||||
permutes argv[]. This confuses dracut's shutdown script:
|
||||
Shutdown called with argument '--log-level'. Rebooting!
|
||||
|
||||
getopt can be convinced to not permute argv[] by having '-' as the first
|
||||
character of optstring. Let's use it. This requires changing the way
|
||||
non-option arguments (in our case, the verb) are processed.
|
||||
|
||||
This fixes a bug where the system would reboot instead of powering off.
|
||||
|
||||
(cherry picked from commit 4b5d8d0f22ae61ceb45a25391354ba53b43ee992)
|
||||
---
|
||||
src/core/shutdown.c | 17 +++++++++++------
|
||||
1 file changed, 11 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/src/core/shutdown.c b/src/core/shutdown.c
|
||||
index 20cf526ba2..03cfddc543 100644
|
||||
--- a/src/core/shutdown.c
|
||||
+++ b/src/core/shutdown.c
|
||||
@@ -75,7 +75,9 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
assert(argc >= 1);
|
||||
assert(argv);
|
||||
|
||||
- while ((c = getopt_long(argc, argv, "", options, NULL)) >= 0)
|
||||
+ /* "-" prevents getopt from permuting argv[] and moving the verb away
|
||||
+ * from argv[1]. Our interface to initrd promises it'll be there. */
|
||||
+ while ((c = getopt_long(argc, argv, "-", options, NULL)) >= 0)
|
||||
switch (c) {
|
||||
|
||||
case ARG_LOG_LEVEL:
|
||||
@@ -113,6 +115,13 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
|
||||
break;
|
||||
|
||||
+ case '\001':
|
||||
+ if (!arg_verb)
|
||||
+ arg_verb = optarg;
|
||||
+ else
|
||||
+ log_error("Excess arguments, ignoring");
|
||||
+ break;
|
||||
+
|
||||
case '?':
|
||||
return -EINVAL;
|
||||
|
||||
@@ -120,15 +129,11 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
assert_not_reached("Unhandled option code.");
|
||||
}
|
||||
|
||||
- if (optind >= argc) {
|
||||
+ if (!arg_verb) {
|
||||
log_error("Verb argument missing.");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
- arg_verb = argv[optind];
|
||||
-
|
||||
- if (optind + 1 < argc)
|
||||
- log_error("Excess arguments, ignoring");
|
||||
return 0;
|
||||
}
|
||||
|
@ -1,45 +0,0 @@
|
||||
From 3da3e6e3eb1453a9f2ddf4a1455d1ca9dfe9ec49 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Sun, 2 Nov 2014 19:08:06 -0500
|
||||
Subject: [PATCH] Accept StartTimeout* options for compatibility
|
||||
|
||||
Assignments of 0/none are ignored, all others are warned about.
|
||||
---
|
||||
src/core/main.c | 10 ++++++++++
|
||||
1 file changed, 10 insertions(+)
|
||||
|
||||
diff --git a/src/core/main.c b/src/core/main.c
|
||||
index d48604e673..a9ca34d8cb 100644
|
||||
--- a/src/core/main.c
|
||||
+++ b/src/core/main.c
|
||||
@@ -623,6 +623,9 @@ static int config_parse_join_controllers(const char *unit,
|
||||
}
|
||||
|
||||
static int parse_config_file(void) {
|
||||
+ usec_t start_timeout_usec = 0;
|
||||
+ FailureAction start_timeout_action = FAILURE_ACTION_NONE;
|
||||
+ char *start_timeout_reboot_arg = NULL;
|
||||
|
||||
const ConfigTableItem items[] = {
|
||||
{ "Manager", "LogLevel", config_parse_level2, 0, NULL },
|
||||
@@ -670,6 +673,9 @@ static int parse_config_file(void) {
|
||||
{ "Manager", "DefaultCPUAccounting", config_parse_bool, 0, &arg_default_cpu_accounting },
|
||||
{ "Manager", "DefaultBlockIOAccounting", config_parse_bool, 0, &arg_default_blockio_accounting },
|
||||
{ "Manager", "DefaultMemoryAccounting", config_parse_bool, 0, &arg_default_memory_accounting },
|
||||
+ { "Manager", "StartTimeoutSec", config_parse_sec, 0, &start_timeout_usec },
|
||||
+ { "Manager", "StartTimeoutAction", config_parse_failure_action, 0, &start_timeout_action },
|
||||
+ { "Manager", "StartTimeoutRebootArgument",config_parse_string, 0, &start_timeout_reboot_arg },
|
||||
{}
|
||||
};
|
||||
|
||||
@@ -681,6 +687,10 @@ static int parse_config_file(void) {
|
||||
config_item_table_lookup, items,
|
||||
false, false, true, NULL);
|
||||
|
||||
+ if (start_timeout_usec != 0 || start_timeout_action != FAILURE_ACTION_NONE)
|
||||
+ log_warning("StartTimeoutSec, StartTimeoutAction, StartTimeoutRebootArgument settings have\n"
|
||||
+ "been replaced by JobTimeoutSec, JobTimeoutAction, JobTimeoutReboot, ignoring.");
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
|
@ -1,60 +0,0 @@
|
||||
From f6ba8671d83f9fce9a00045d8fa399a1c07ba7fc Mon Sep 17 00:00:00 2001
|
||||
From: Ray Strode <rstrode@redhat.com>
|
||||
Date: Wed, 5 Nov 2014 08:30:52 -0500
|
||||
Subject: [PATCH] login: rerun vconsole-setup when switching from vgacon to
|
||||
fbcon
|
||||
|
||||
The initialization performed by systemd-vconsole-setup is reset
|
||||
when changing console drivers (say from vgacon to fbcon), so we
|
||||
need to run it in that case.
|
||||
|
||||
See
|
||||
http://lists.freedesktop.org/archives/systemd-devel/2014-October/023919.html
|
||||
http://lists.freedesktop.org/archives/systemd-devel/2014-October/024423.html
|
||||
http://lists.freedesktop.org/archives/systemd-devel/2014-November/024881.html
|
||||
|
||||
This commit adds a udev rule to make systemd-vconsole-setup get run when
|
||||
the fbcon device becomes available.
|
||||
|
||||
(david: moved into new file 90-vconsole.rules instead of 71-seats.rules;
|
||||
build-failures are on me, not on Ray)
|
||||
---
|
||||
Makefile.am | 3 +++
|
||||
src/vconsole/90-vconsole.rules | 11 +++++++++++
|
||||
2 files changed, 14 insertions(+)
|
||||
create mode 100644 src/vconsole/90-vconsole.rules
|
||||
|
||||
diff --git a/Makefile.am b/Makefile.am
|
||||
index 3686103..f614b86 100644
|
||||
--- a/Makefile.am
|
||||
+++ b/Makefile.am
|
||||
@@ -4439,6 +4439,9 @@ rootlibexec_PROGRAMS += \
|
||||
nodist_systemunit_DATA += \
|
||||
units/systemd-vconsole-setup.service
|
||||
|
||||
+dist_udevrules_DATA += \
|
||||
+ src/vconsole/90-vconsole.rules
|
||||
+
|
||||
SYSINIT_TARGET_WANTS += \
|
||||
systemd-vconsole-setup.service
|
||||
endif
|
||||
diff --git a/src/vconsole/90-vconsole.rules b/src/vconsole/90-vconsole.rules
|
||||
new file mode 100644
|
||||
index 0000000..bf6a9ef
|
||||
--- /dev/null
|
||||
+++ b/src/vconsole/90-vconsole.rules
|
||||
@@ -0,0 +1,11 @@
|
||||
+# This file is part of systemd.
|
||||
+#
|
||||
+# systemd is free software; you can redistribute it and/or modify it
|
||||
+# under the terms of the GNU Lesser General Public License as published by
|
||||
+# the Free Software Foundation; either version 2.1 of the License, or
|
||||
+# (at your option) any later version.
|
||||
+
|
||||
+# Kernel resets vconsole state when changing console drivers so run
|
||||
+# systemd-vconsole-setup when fbcon loads
|
||||
+
|
||||
+ACTION=="add", SUBSYSTEM=="graphics", KERNEL=="fbcon", RUN+="/usr/lib/systemd/systemd-vconsole-setup"
|
||||
--
|
||||
1.9.3
|
||||
|
@ -1,35 +0,0 @@
|
||||
From 75836b9d2071aab978ee78d7d797126a18a32052 Mon Sep 17 00:00:00 2001
|
||||
From: Jan Synacek <jsynacek@redhat.com>
|
||||
Date: Mon, 15 Dec 2014 10:39:00 +0100
|
||||
Subject: [PATCH] systemctl: fix argument handling when invoked as
|
||||
"shutdown"
|
||||
|
||||
---
|
||||
src/systemctl/systemctl.c | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
|
||||
index 649fb5c..4c4648f 100644
|
||||
--- a/src/systemctl/systemctl.c
|
||||
+++ b/src/systemctl/systemctl.c
|
||||
@@ -6926,7 +6926,7 @@ static int shutdown_parse_argv(int argc, char *argv[]) {
|
||||
assert(argc >= 0);
|
||||
assert(argv);
|
||||
|
||||
- while ((c = getopt_long(argc, argv, "HPrhkt:afFc", options, NULL)) >= 0)
|
||||
+ while ((c = getopt_long(argc, argv, "HPrhkKt:afFc", options, NULL)) >= 0)
|
||||
switch (c) {
|
||||
|
||||
case ARG_HELP:
|
||||
@@ -6967,6 +6967,8 @@ static int shutdown_parse_argv(int argc, char *argv[]) {
|
||||
|
||||
case 't':
|
||||
case 'a':
|
||||
+ case 'f':
|
||||
+ case 'F':
|
||||
/* Compatibility nops */
|
||||
break;
|
||||
|
||||
--
|
||||
2.2.0
|
||||
|
@ -1,53 +0,0 @@
|
||||
From e6ec314b4a905e0967b08202ebc6509753f2d518 Mon Sep 17 00:00:00 2001
|
||||
From: Fedora systemd team <systemd-maint@redhat.com>
|
||||
Date: Fri, 19 Dec 2014 08:06:15 +0100
|
||||
Subject: [PATCH] nspawn: fix invocation of the raw clone() system call on s390
|
||||
and cris
|
||||
|
||||
Since the order of the first and second arguments of the raw clone() system
|
||||
call is reversed on s390 and cris it needs to be invoked differently.
|
||||
|
||||
(cherry-picked from 60e1651a31c9c0ed1caef1a63f5e3a87156b0b1e)
|
||||
---
|
||||
src/nspawn/nspawn.c | 6 +++---
|
||||
src/shared/missing.h | 10 ++++++++++
|
||||
2 files changed, 13 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
|
||||
index f332ade..e7d36bb 100644
|
||||
--- a/src/nspawn/nspawn.c
|
||||
+++ b/src/nspawn/nspawn.c
|
||||
@@ -3187,9 +3187,9 @@ int main(int argc, char *argv[]) {
|
||||
goto finish;
|
||||
}
|
||||
|
||||
- pid = syscall(__NR_clone, SIGCHLD|CLONE_NEWNS|
|
||||
- (arg_share_system ? 0 : CLONE_NEWIPC|CLONE_NEWPID|CLONE_NEWUTS)|
|
||||
- (arg_private_network ? CLONE_NEWNET : 0), NULL);
|
||||
+ pid = raw_clone(SIGCHLD|CLONE_NEWNS|
|
||||
+ (arg_share_system ? 0 : CLONE_NEWIPC|CLONE_NEWPID|CLONE_NEWUTS)|
|
||||
+ (arg_private_network ? CLONE_NEWNET : 0), NULL);
|
||||
if (pid < 0) {
|
||||
if (errno == EINVAL)
|
||||
log_error("clone() failed, do you have namespace support enabled in your kernel? (You need UTS, IPC, PID and NET namespacing built in): %m");
|
||||
diff --git a/src/shared/missing.h b/src/shared/missing.h
|
||||
index c98d027..4b4c6df 100644
|
||||
--- a/src/shared/missing.h
|
||||
+++ b/src/shared/missing.h
|
||||
@@ -595,3 +595,13 @@ static inline int setns(int fd, int nstype) {
|
||||
#ifndef LOOPBACK_IFINDEX
|
||||
#define LOOPBACK_IFINDEX 1
|
||||
#endif
|
||||
+
|
||||
+static inline long raw_clone(unsigned long flags, void *child_stack) {
|
||||
+#if defined(__s390__) || defined(__CRIS__)
|
||||
+ /* On s390 and cris the order of the first and second arguments
|
||||
+ * of the raw clone() system call is reversed. */
|
||||
+ return syscall(__NR_clone, child_stack, flags);
|
||||
+#else
|
||||
+ return syscall(__NR_clone, flags, child_stack);
|
||||
+#endif
|
||||
+}
|
||||
--
|
||||
2.2.0
|
||||
|
51
20-grubby.install
Executable file
51
20-grubby.install
Executable file
@ -0,0 +1,51 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [[ ! -x /sbin/new-kernel-pkg ]]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
COMMAND="$1"
|
||||
KERNEL_VERSION="$2"
|
||||
BOOT_DIR_ABS="$3"
|
||||
KERNEL_IMAGE="$4"
|
||||
|
||||
KERNEL_DIR="${KERNEL_IMAGE%/*}"
|
||||
[[ "$KERNEL_VERSION" == *\+* ]] && flavor=-"${KERNEL_VERSION##*+}"
|
||||
case "$COMMAND" in
|
||||
add)
|
||||
if [[ "${KERNEL_DIR}" != "/boot" ]]; then
|
||||
for i in \
|
||||
"$KERNEL_IMAGE" \
|
||||
"$KERNEL_DIR"/System.map \
|
||||
"$KERNEL_DIR"/config \
|
||||
"$KERNEL_DIR"/zImage.stub \
|
||||
"$KERNEL_DIR"/dtb \
|
||||
; do
|
||||
[[ -e "$i" ]] || continue
|
||||
cp -aT "$i" "/boot/${i##*/}-${KERNEL_VERSION}"
|
||||
command -v restorecon &>/dev/null && \
|
||||
restorecon -R "/boot/${i##*/}-${KERNEL_VERSION}"
|
||||
done
|
||||
# hmac is .vmlinuz-<version>.hmac so needs a special treatment
|
||||
i="$KERNEL_DIR/.${KERNEL_IMAGE##*/}.hmac"
|
||||
if [[ -e "$i" ]]; then
|
||||
cp -a "$i" "/boot/.${KERNEL_IMAGE##*/}-${KERNEL_VERSION}.hmac"
|
||||
command -v restorecon &>/dev/null && \
|
||||
restorecon "/boot/.${KERNEL_IMAGE##*/}-${KERNEL_VERSION}.hmac"
|
||||
fi
|
||||
fi
|
||||
/sbin/new-kernel-pkg --package "kernel${flavor}" --install "$KERNEL_VERSION" || exit $?
|
||||
/sbin/new-kernel-pkg --package "kernel${flavor}" --mkinitrd --dracut --depmod --update "$KERNEL_VERSION" || exit $?
|
||||
/sbin/new-kernel-pkg --package "kernel${flavor}" --rpmposttrans "$KERNEL_VERSION" || exit $?
|
||||
;;
|
||||
remove)
|
||||
/sbin/new-kernel-pkg --package "kernel${flavor+-$flavor}" --rminitrd --rmmoddep --remove "$KERNEL_VERSION" || exit $?
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
|
||||
# skip other installation plugins, if we can't find a boot loader spec conforming setup
|
||||
if ! [[ -d /boot/loader/entries || -L /boot/loader/entries ]]; then
|
||||
exit 77
|
||||
fi
|
42
20-yama-ptrace.conf
Normal file
42
20-yama-ptrace.conf
Normal file
@ -0,0 +1,42 @@
|
||||
# The ptrace system call is used for interprocess services,
|
||||
# communication and introspection (like synchronisation, signaling,
|
||||
# debugging, tracing and profiling) of processes.
|
||||
#
|
||||
# Usage of ptrace is restricted by normal user permissions. Normal
|
||||
# unprivileged processes cannot use ptrace on processes that they
|
||||
# cannot send signals to or processes that are running set-uid or
|
||||
# set-gid. Nevertheless, processes running under the same uid will
|
||||
# usually be able to ptrace one another.
|
||||
#
|
||||
# Fedora enables the Yama security mechanism which restricts ptrace
|
||||
# even further. Sysctl setting kernel.yama.ptrace_scope can have one
|
||||
# of the following values:
|
||||
#
|
||||
# 0 - Normal ptrace security permissions.
|
||||
# 1 - Restricted ptrace. Only child processes plus normal permissions.
|
||||
# 2 - Admin-only attach. Only executables with CAP_SYS_PTRACE.
|
||||
# 3 - No attach. No process may call ptrace at all. Irrevocable.
|
||||
#
|
||||
# For more information see Documentation/security/Yama.txt in the
|
||||
# kernel sources.
|
||||
#
|
||||
# The default is 1., which allows tracing of child processes, but
|
||||
# forbids tracing of arbitrary processes. This allows programs like
|
||||
# gdb or strace to work when the most common way of having the
|
||||
# debugger start the debuggee is used:
|
||||
# gdb /path/to/program ...
|
||||
# Attaching to already running programs is NOT allowed:
|
||||
# gdb -p ...
|
||||
# This default setting is suitable for the common case, because it
|
||||
# reduces the risk that one hacked process can be used to attack other
|
||||
# processes. (For example, a hacked firefox process in a user session
|
||||
# will not be able to ptrace the keyring process and extract passwords
|
||||
# stored only in memory.)
|
||||
#
|
||||
# Developers and administrators might want to disable those protections
|
||||
# to be able to attach debuggers to existing processes. Use
|
||||
# sysctl kernel.yama.ptrace_scope=0
|
||||
# for change the setting temporarily, or copy this file to
|
||||
# /etc/sysctl.d/20-yama-ptrace.conf to set it for future boots.
|
||||
|
||||
kernel.yama.ptrace_scope = 0
|
@ -1,11 +0,0 @@
|
||||
# We enable all display managers by default. Since only one can
|
||||
# actually be enabled at the same time the one which is installed
|
||||
# first wins
|
||||
|
||||
enable gdm.service
|
||||
enable lightdm.service
|
||||
enable slim.service
|
||||
enable lxdm.service
|
||||
enable sddm.service
|
||||
enable kdm.service
|
||||
enable xdm.service
|
@ -1,120 +0,0 @@
|
||||
# Also see:
|
||||
# https://fedoraproject.org/wiki/Starting_services_by_default
|
||||
|
||||
# On Fedora we deviate from some upstream defaults
|
||||
disable systemd-timesyncd.service
|
||||
disable systemd-networkd.service
|
||||
disable systemd-resolved.service
|
||||
|
||||
# System stuff
|
||||
enable sshd.service
|
||||
enable atd.*
|
||||
enable crond.*
|
||||
enable chronyd.service
|
||||
enable rpcbind.*
|
||||
enable NetworkManager.service
|
||||
enable NetworkManager-dispatcher.service
|
||||
enable ModemManager.service
|
||||
enable auditd.service
|
||||
enable restorecond.service
|
||||
enable bluetooth.*
|
||||
enable avahi-daemon.*
|
||||
enable cups.*
|
||||
|
||||
# The various syslog implementations
|
||||
enable rsyslog.*
|
||||
enable syslog-ng.*
|
||||
enable sysklogd.*
|
||||
|
||||
# Network facing
|
||||
enable firewalld.service
|
||||
enable libvirtd.service
|
||||
enable xinetd.service
|
||||
enable ladvd.service
|
||||
|
||||
# Storage
|
||||
enable multipathd.service
|
||||
enable libstoragemgmt.service
|
||||
enable lvm2-monitor.*
|
||||
enable lvm2-lvmetad.*
|
||||
enable dm-event.*
|
||||
enable dmraid-activation.service
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=855372
|
||||
enable mdmonitor.service
|
||||
enable mdmonitor-takeover.service
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=876237
|
||||
enable spice-vdagentd.service
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=885406
|
||||
enable qemu-guest-agent.service
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=928726
|
||||
enable dnf-makecache.timer
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=929403
|
||||
enable initial-setup-graphical.service
|
||||
enable initial-setup-text.service
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=957135
|
||||
enable vmtoolsd.service
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=976315
|
||||
enable dkms.service
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=961878
|
||||
enable ipmi.service
|
||||
enable ipmievd.service
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1039351
|
||||
enable x509watch.timer
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1060754
|
||||
enable dnssec-triggerd.service
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1095353
|
||||
enable uuidd.socket
|
||||
|
||||
# Hardware
|
||||
enable gpm.*
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1066421
|
||||
enable gpsd.socket
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1141607
|
||||
enable x2gocleansessions.service
|
||||
|
||||
enable irqbalance.service
|
||||
enable lm_sensors.service
|
||||
enable mcelog.*
|
||||
enable acpid.*
|
||||
enable smartd.service
|
||||
enable pcscd.socket
|
||||
enable rngd.service
|
||||
|
||||
# Other stuff
|
||||
enable abrtd.service
|
||||
enable abrt-ccpp.service
|
||||
enable abrt-oops.service
|
||||
enable abrt-xorg.service
|
||||
enable abrt-vmcore.service
|
||||
enable lttng-sessiond.service
|
||||
enable ksm.service
|
||||
enable ksmtuned.service
|
||||
enable rootfs-resize.service
|
||||
enable sysstat.service
|
||||
enable sysstat-collect.timer
|
||||
enable sysstat-summary.timer
|
||||
enable uuidd.service
|
||||
enable xendomains.service
|
||||
enable xenstored.service
|
||||
enable xenconsoled.service
|
||||
|
||||
# Desktop stuff
|
||||
enable accounts-daemon.service
|
||||
enable rtkit-daemon.service
|
||||
enable upower.service
|
||||
enable udisks2.service
|
||||
enable polkit.service
|
||||
enable packagekit-offline-update.service
|
@ -1 +0,0 @@
|
||||
disable *
|
@ -1,45 +0,0 @@
|
||||
From 3cd561fcf1d419fd6484ae831bced6c842453e6f Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Sun, 2 Nov 2014 19:08:06 -0500
|
||||
Subject: [PATCH] Accept StartTimeout* options for compatibility
|
||||
|
||||
Assignments of 0/none are ignored, all others are warned about.
|
||||
---
|
||||
src/core/main.c | 10 ++++++++++
|
||||
1 file changed, 10 insertions(+)
|
||||
|
||||
diff --git a/src/core/main.c b/src/core/main.c
|
||||
index d48604e673..a9ca34d8cb 100644
|
||||
--- a/src/core/main.c
|
||||
+++ b/src/core/main.c
|
||||
@@ -623,6 +623,9 @@ static int config_parse_join_controllers(const char *unit,
|
||||
}
|
||||
|
||||
static int parse_config_file(void) {
|
||||
+ usec_t start_timeout_usec = 0;
|
||||
+ FailureAction start_timeout_action = FAILURE_ACTION_NONE;
|
||||
+ char *start_timeout_reboot_arg = NULL;
|
||||
|
||||
const ConfigTableItem items[] = {
|
||||
{ "Manager", "LogLevel", config_parse_level2, 0, NULL },
|
||||
@@ -670,6 +673,9 @@ static int parse_config_file(void) {
|
||||
{ "Manager", "DefaultCPUAccounting", config_parse_bool, 0, &arg_default_cpu_accounting },
|
||||
{ "Manager", "DefaultBlockIOAccounting", config_parse_bool, 0, &arg_default_blockio_accounting },
|
||||
{ "Manager", "DefaultMemoryAccounting", config_parse_bool, 0, &arg_default_memory_accounting },
|
||||
+ { "Manager", "StartTimeoutSec", config_parse_sec, 0, &start_timeout_usec },
|
||||
+ { "Manager", "StartTimeoutAction", config_parse_failure_action, 0, &start_timeout_action },
|
||||
+ { "Manager", "StartTimeoutRebootArgument",config_parse_string, 0, &start_timeout_reboot_arg },
|
||||
{}
|
||||
};
|
||||
|
||||
@@ -681,6 +687,10 @@ static int parse_config_file(void) {
|
||||
config_item_table_lookup, items,
|
||||
false, false, true, NULL);
|
||||
|
||||
+ if (start_timeout_usec != 0 || start_timeout_action != FAILURE_ACTION_NONE)
|
||||
+ log_warning("StartTimeoutSec, StartTimeoutAction, StartTimeoutRebootArgument settings have\n"
|
||||
+ "been replaced by JobTimeoutSec, JobTimeoutAction, JobTimeoutReboot, ignoring.");
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
|
129
f58b96d3e8d1cb0dd3666bc74fa673918b586612.patch
Normal file
129
f58b96d3e8d1cb0dd3666bc74fa673918b586612.patch
Normal file
@ -0,0 +1,129 @@
|
||||
From f58b96d3e8d1cb0dd3666bc74fa673918b586612 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Mon, 14 Sep 2020 17:58:03 +0200
|
||||
Subject: [PATCH] test-mountpointutil-util: do not assert in test_mnt_id()
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1803070
|
||||
|
||||
I *think* this a kernel bug: the mnt_id as listed in /proc/self/mountinfo is different
|
||||
than the one we get from /proc/self/fdinfo/. This only matters when both statx and
|
||||
name_to_handle_at are unavailable and we hit the fallback path that goes through fdinfo:
|
||||
|
||||
(gdb) !uname -r
|
||||
5.6.19-200.fc31.ppc64le
|
||||
|
||||
(gdb) !cat /proc/self/mountinfo
|
||||
697 664 253:0 /var/lib/mock/fedora-31-ppc64le/root / rw,relatime shared:298 master:1 - xfs /dev/mapper/fedora_rh--power--vm14-root rw,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota
|
||||
698 697 253:0 /var/cache/mock/fedora-31-ppc64le/yum_cache /var/cache/yum rw,relatime shared:299 master:1 - xfs /dev/mapper/fedora_rh--power--vm14-root rw,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota
|
||||
699 697 253:0 /var/cache/mock/fedora-31-ppc64le/dnf_cache /var/cache/dnf rw,relatime shared:300 master:1 - xfs /dev/mapper/fedora_rh--power--vm14-root rw,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota
|
||||
700 697 0:32 /mock-selinux-plugin.7me9bfpi /proc/filesystems rw,nosuid,nodev shared:301 master:18 - tmpfs tmpfs rw,seclabel <==========================================================
|
||||
701 697 0:41 / /sys ro,nosuid,nodev,noexec,relatime shared:302 - sysfs sysfs ro,seclabel
|
||||
702 701 0:21 / /sys/fs/selinux ro,nosuid,nodev,noexec,relatime shared:306 master:8 - selinuxfs selinuxfs rw
|
||||
703 697 0:42 / /dev rw,nosuid shared:303 - tmpfs tmpfs rw,seclabel,mode=755
|
||||
704 703 0:43 / /dev/shm rw,nosuid,nodev shared:304 - tmpfs tmpfs rw,seclabel
|
||||
705 703 0:45 / /dev/pts rw,nosuid,noexec,relatime shared:307 - devpts devpts rw,seclabel,gid=5,mode=620,ptmxmode=666
|
||||
706 703 0:6 /btrfs-control /dev/btrfs-control rw,nosuid shared:308 master:9 - devtmpfs devtmpfs rw,seclabel,size=4107840k,nr_inodes=64185,mode=755
|
||||
707 703 0:6 /loop-control /dev/loop-control rw,nosuid shared:309 master:9 - devtmpfs devtmpfs rw,seclabel,size=4107840k,nr_inodes=64185,mode=755
|
||||
708 703 0:6 /loop0 /dev/loop0 rw,nosuid shared:310 master:9 - devtmpfs devtmpfs rw,seclabel,size=4107840k,nr_inodes=64185,mode=755
|
||||
709 703 0:6 /loop1 /dev/loop1 rw,nosuid shared:311 master:9 - devtmpfs devtmpfs rw,seclabel,size=4107840k,nr_inodes=64185,mode=755
|
||||
710 703 0:6 /loop10 /dev/loop10 rw,nosuid shared:312 master:9 - devtmpfs devtmpfs rw,seclabel,size=4107840k,nr_inodes=64185,mode=755
|
||||
711 703 0:6 /loop11 /dev/loop11 rw,nosuid shared:313 master:9 - devtmpfs devtmpfs rw,seclabel,size=4107840k,nr_inodes=64185,mode=755
|
||||
712 703 0:6 /loop2 /dev/loop2 rw,nosuid shared:314 master:9 - devtmpfs devtmpfs rw,seclabel,size=4107840k,nr_inodes=64185,mode=755
|
||||
713 703 0:6 /loop3 /dev/loop3 rw,nosuid shared:315 master:9 - devtmpfs devtmpfs rw,seclabel,size=4107840k,nr_inodes=64185,mode=755
|
||||
714 703 0:6 /loop4 /dev/loop4 rw,nosuid shared:316 master:9 - devtmpfs devtmpfs rw,seclabel,size=4107840k,nr_inodes=64185,mode=755
|
||||
715 703 0:6 /loop5 /dev/loop5 rw,nosuid shared:317 master:9 - devtmpfs devtmpfs rw,seclabel,size=4107840k,nr_inodes=64185,mode=755
|
||||
716 703 0:6 /loop6 /dev/loop6 rw,nosuid shared:318 master:9 - devtmpfs devtmpfs rw,seclabel,size=4107840k,nr_inodes=64185,mode=755
|
||||
717 703 0:6 /loop7 /dev/loop7 rw,nosuid shared:319 master:9 - devtmpfs devtmpfs rw,seclabel,size=4107840k,nr_inodes=64185,mode=755
|
||||
718 703 0:6 /loop8 /dev/loop8 rw,nosuid shared:320 master:9 - devtmpfs devtmpfs rw,seclabel,size=4107840k,nr_inodes=64185,mode=755
|
||||
719 703 0:6 /loop9 /dev/loop9 rw,nosuid shared:321 master:9 - devtmpfs devtmpfs rw,seclabel,size=4107840k,nr_inodes=64185,mode=755
|
||||
720 697 0:44 / /run rw,nosuid,nodev shared:305 - tmpfs tmpfs rw,seclabel,mode=755
|
||||
721 720 0:25 /systemd/nspawn/propagate/9cc8a155d0244558b273f773d2b92142 /run/systemd/nspawn/incoming ro master:12 - tmpfs tmpfs rw,seclabel,mode=755
|
||||
722 697 0:32 /mock-resolv.dvml91hp /etc/resolv.conf rw,nosuid,nodev shared:322 master:18 - tmpfs tmpfs rw,seclabel
|
||||
725 697 0:47 / /proc rw,nosuid,nodev,noexec,relatime shared:323 - proc proc rw
|
||||
603 725 0:47 /sys /proc/sys ro,nosuid,nodev,noexec,relatime shared:323 - proc proc rw
|
||||
604 725 0:44 /systemd/inaccessible/reg /proc/kallsyms ro,nosuid,nodev,noexec shared:305 - tmpfs tmpfs rw,seclabel,mode=755
|
||||
605 725 0:44 /systemd/inaccessible/reg /proc/kcore ro,nosuid,nodev,noexec shared:305 - tmpfs tmpfs rw,seclabel,mode=755
|
||||
606 725 0:44 /systemd/inaccessible/reg /proc/keys ro,nosuid,nodev,noexec shared:305 - tmpfs tmpfs rw,seclabel,mode=755
|
||||
607 725 0:44 /systemd/inaccessible/reg /proc/sysrq-trigger ro,nosuid,nodev,noexec shared:305 - tmpfs tmpfs rw,seclabel,mode=755
|
||||
608 725 0:44 /systemd/inaccessible/reg /proc/timer_list ro,nosuid,nodev,noexec shared:305 - tmpfs tmpfs rw,seclabel,mode=755
|
||||
609 725 0:47 /bus /proc/bus ro,nosuid,nodev,noexec,relatime shared:323 - proc proc rw
|
||||
610 725 0:47 /fs /proc/fs ro,nosuid,nodev,noexec,relatime shared:323 - proc proc rw
|
||||
611 725 0:47 /irq /proc/irq ro,nosuid,nodev,noexec,relatime shared:323 - proc proc rw
|
||||
612 725 0:47 /scsi /proc/scsi ro,nosuid,nodev,noexec,relatime shared:323 - proc proc rw
|
||||
613 703 0:46 / /dev/mqueue rw,nosuid,nodev,noexec,relatime shared:324 - mqueue mqueue rw,seclabel
|
||||
614 701 0:26 / /sys/fs/cgroup rw,nosuid,nodev,noexec,relatime shared:325 - cgroup2 cgroup rw,seclabel,nsdelegate
|
||||
615 603 0:44 /.#proc-sys-kernel-random-boot-id4fbdce67af46d1c2//deleted /proc/sys/kernel/random/boot_id ro,nosuid,nodev,noexec shared:305 - tmpfs tmpfs rw,seclabel,mode=755
|
||||
616 725 0:44 /.#proc-sys-kernel-random-boot-id4fbdce67af46d1c2//deleted /proc/sys/kernel/random/boot_id rw,nosuid,nodev shared:305 - tmpfs tmpfs rw,seclabel,mode=755
|
||||
617 725 0:44 /.#proc-kmsg5b7a8bcfe6717139//deleted /proc/kmsg rw,nosuid,nodev shared:305 - tmpfs tmpfs rw,seclabel,mode=755
|
||||
|
||||
The test process does
|
||||
name_to_handle_at("/proc/filesystems") which returns -EOPNOTSUPP, and then
|
||||
openat(AT_FDCWD, "/proc/filesystems") which returns 4, and then
|
||||
read(open("/proc/self/fdinfo/4", ...)) which gives
|
||||
"pos:\t0\nflags:\t012100000\nmnt_id:\t725\n"
|
||||
|
||||
and the "725" is clearly inconsistent with "700" in /proc/self/mountinfo.
|
||||
|
||||
We could either drop the fallback path (and fail name_to_handle_at() is not
|
||||
avaliable) or ignore the error in the test. Not sure what is better. I think
|
||||
this issue only occurs sometimes and with older kernels, so probably continuing
|
||||
with the current flaky implementation is better than ripping out the fallback.
|
||||
|
||||
Another strace:
|
||||
writev(2</dev/pts/0>, [{iov_base="mnt ids of /proc/sys is 603", iov_len=27}, {iov_base="\n", iov_len=1}], 2mnt ids of /proc/sys is 603
|
||||
) = 28
|
||||
name_to_handle_at(AT_FDCWD, "/", {handle_bytes=128 => 12, handle_type=129, f_handle=0x52748401000000008b93e20d}, [697], 0) = 0
|
||||
writev(2</dev/pts/0>, [{iov_base="mnt ids of / is 697", iov_len=19}, {iov_base="\n", iov_len=1}], 2mnt ids of / is 697
|
||||
) = 20
|
||||
name_to_handle_at(AT_FDCWD, "/proc/kcore", {handle_bytes=128 => 12, handle_type=1, f_handle=0x92ddcfcd2e802d0100000000}, [605], 0) = 0
|
||||
writev(2</dev/pts/0>, [{iov_base="mnt ids of /proc/kcore is 605", iov_len=29}, {iov_base="\n", iov_len=1}], 2mnt ids of /proc/kcore is 605
|
||||
) = 30
|
||||
name_to_handle_at(AT_FDCWD, "/dev", {handle_bytes=128 => 12, handle_type=1, f_handle=0x8ae269160c802d0100000000}, [703], 0) = 0
|
||||
writev(2</dev/pts/0>, [{iov_base="mnt ids of /dev is 703", iov_len=22}, {iov_base="\n", iov_len=1}], 2mnt ids of /dev is 703
|
||||
) = 23
|
||||
name_to_handle_at(AT_FDCWD, "/proc/filesystems", {handle_bytes=128}, 0x7fffe36ddb84, 0) = -1 EOPNOTSUPP (Operation not supported)
|
||||
openat(AT_FDCWD, "/proc/filesystems", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 4</proc/filesystems>
|
||||
openat(AT_FDCWD, "/proc/self/fdinfo/4", O_RDONLY|O_CLOEXEC) = 5</proc/20/fdinfo/4>
|
||||
fstat(5</proc/20/fdinfo/4>, {st_mode=S_IFREG|0400, st_size=0, ...}) = 0
|
||||
fstat(5</proc/20/fdinfo/4>, {st_mode=S_IFREG|0400, st_size=0, ...}) = 0
|
||||
read(5</proc/20/fdinfo/4>, "pos:\t0\nflags:\t012100000\nmnt_id:\t725\n", 2048) = 36
|
||||
read(5</proc/20/fdinfo/4>, "", 1024) = 0
|
||||
close(5</proc/20/fdinfo/4>) = 0
|
||||
close(4</proc/filesystems>) = 0
|
||||
writev(2</dev/pts/0>, [{iov_base="mnt ids of /proc/filesystems are 700, 725", iov_len=41}, {iov_base="\n", iov_len=1}], 2mnt ids of /proc/filesystems are 700, 725
|
||||
) = 42
|
||||
writev(2</dev/pts/0>, [{iov_base="the other path for mnt id 725 is /proc", iov_len=38}, {iov_base="\n", iov_len=1}], 2the other path for mnt id 725 is /proc
|
||||
) = 39
|
||||
writev(2</dev/pts/0>, [{iov_base="Assertion 'path_equal(p, t)' failed at src/test/test-mountpoint-util.c:94, function test_mnt_id(). Aborting.", iov_len=108}, {iov_base="\n", iov_len=1}], 2Assertion 'path_equal(p, t)' failed at src/test/test-mountpoint-util.c:94, function test_mnt_id(). Aborting.
|
||||
) = 109
|
||||
rt_sigprocmask(SIG_UNBLOCK, [ABRT], NULL, 8) = 0
|
||||
rt_sigprocmask(SIG_BLOCK, ~[RTMIN RT_1], [], 8) = 0
|
||||
getpid() = 20
|
||||
gettid() = 20
|
||||
tgkill(20, 20, SIGABRT) = 0
|
||||
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
|
||||
--- SIGABRT {si_signo=SIGABRT, si_code=SI_TKILL, si_pid=20, si_uid=0} ---
|
||||
+++ killed by SIGABRT (core dumped) +++
|
||||
---
|
||||
src/test/test-mountpoint-util.c | 8 ++++++--
|
||||
1 file changed, 6 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/test/test-mountpoint-util.c b/src/test/test-mountpoint-util.c
|
||||
index 30b00ae4d8b..ffe5144b04a 100644
|
||||
--- a/src/test/test-mountpoint-util.c
|
||||
+++ b/src/test/test-mountpoint-util.c
|
||||
@@ -89,8 +89,12 @@ static void test_mnt_id(void) {
|
||||
/* The ids don't match? If so, then there are two mounts on the same path, let's check if
|
||||
* that's really the case */
|
||||
char *t = hashmap_get(h, INT_TO_PTR(mnt_id2));
|
||||
- log_debug("the other path for mnt id %i is %s\n", mnt_id2, t);
|
||||
- assert_se(path_equal(p, t));
|
||||
+ log_debug("Path for mnt id %i from /proc/self/mountinfo is %s\n", mnt_id2, t);
|
||||
+
|
||||
+ if (!path_equal(p, t))
|
||||
+ /* Apparent kernel bug in /proc/self/fdinfo */
|
||||
+ log_warning("Bad mount id given for %s: %d, should be %d",
|
||||
+ p, mnt_id2, mnt_id);
|
||||
}
|
||||
}
|
||||
|
@ -1,87 +0,0 @@
|
||||
From 30353eb466fe1ef768dc7bc1ccc1239b97dab70c Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Tue, 7 Oct 2014 01:49:10 -0400
|
||||
Subject: [PATCH] fedora: add bridge sysctl configuration
|
||||
|
||||
Udev rule is added to load those settings when the bridge
|
||||
module is loaded.
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=634736
|
||||
---
|
||||
Makefile.am | 8 ++++++--
|
||||
rules/.gitignore | 1 +
|
||||
rules/99-bridge.rules.in | 9 +++++++++
|
||||
sysctl.d/50-bridge.conf | 4 ++++
|
||||
4 files changed, 20 insertions(+), 2 deletions(-)
|
||||
create mode 100644 rules/99-bridge.rules.in
|
||||
create mode 100644 sysctl.d/50-bridge.conf
|
||||
|
||||
diff --git a/Makefile.am b/Makefile.am
|
||||
index e52db1793b..41e94575ef 100644
|
||||
--- a/Makefile.am
|
||||
+++ b/Makefile.am
|
||||
@@ -445,7 +445,8 @@ CLEANFILES += \
|
||||
$(nodist_zshcompletion_DATA)
|
||||
|
||||
dist_sysctl_DATA = \
|
||||
- sysctl.d/50-default.conf
|
||||
+ sysctl.d/50-default.conf \
|
||||
+ sysctl.d/50-bridge.conf
|
||||
|
||||
dist_systemunit_DATA = \
|
||||
units/graphical.target \
|
||||
@@ -3281,7 +3282,8 @@ dist_udevrules_DATA += \
|
||||
rules/95-udev-late.rules
|
||||
|
||||
nodist_udevrules_DATA += \
|
||||
- rules/99-systemd.rules
|
||||
+ rules/99-systemd.rules \
|
||||
+ rules/99-bridge.rules
|
||||
|
||||
dist_udevhwdb_DATA = \
|
||||
hwdb/20-pci-vendor-model.hwdb \
|
||||
@@ -3306,10 +3308,12 @@ sharepkgconfig_DATA = \
|
||||
|
||||
EXTRA_DIST += \
|
||||
rules/99-systemd.rules.in \
|
||||
+ rules/99-bridge.rules.in \
|
||||
src/udev/udev.pc.in
|
||||
|
||||
CLEANFILES += \
|
||||
rules/99-systemd.rules \
|
||||
+ rules/99-bridge.rules \
|
||||
src/udev/udev.pc
|
||||
|
||||
EXTRA_DIST += \
|
||||
diff --git a/rules/.gitignore b/rules/.gitignore
|
||||
index 93a50ddd80..46c7f3ce91 100644
|
||||
--- a/rules/.gitignore
|
||||
+++ b/rules/.gitignore
|
||||
@@ -1 +1,2 @@
|
||||
/99-systemd.rules
|
||||
+/99-bridge.rules
|
||||
diff --git a/rules/99-bridge.rules.in b/rules/99-bridge.rules.in
|
||||
new file mode 100644
|
||||
index 0000000000..f46f96bd2e
|
||||
--- /dev/null
|
||||
+++ b/rules/99-bridge.rules.in
|
||||
@@ -0,0 +1,9 @@
|
||||
+# This file is part of systemd.
|
||||
+#
|
||||
+# systemd is free software; you can redistribute it and/or modify it
|
||||
+# under the terms of the GNU Lesser General Public License as published by
|
||||
+# the Free Software Foundation; either version 2.1 of the License, or
|
||||
+# (at your option) any later version.
|
||||
+
|
||||
+# Apply sysctl settings to bridges
|
||||
+ACTION=="add", SUBSYSTEM=="module", KERNEL=="bridge", RUN+="@rootlibexecdir@/systemd-sysctl --prefix=/net/bridge"
|
||||
diff --git a/sysctl.d/50-bridge.conf b/sysctl.d/50-bridge.conf
|
||||
new file mode 100644
|
||||
index 0000000000..b586bf15fa
|
||||
--- /dev/null
|
||||
+++ b/sysctl.d/50-bridge.conf
|
||||
@@ -0,0 +1,4 @@
|
||||
+# Disable netfilter on bridges.
|
||||
+net.bridge.bridge-nf-call-ip6tables = 0
|
||||
+net.bridge.bridge-nf-call-iptables = 0
|
||||
+net.bridge.bridge-nf-call-arptables = 0
|
@ -1,22 +0,0 @@
|
||||
From 6da80d4bbfaa3d8a2a8952995a108d6dbd6a1e3f Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Fri, 3 Oct 2014 21:34:14 -0400
|
||||
Subject: [PATCH] fedora: disable resolv.conf symlink
|
||||
|
||||
---
|
||||
tmpfiles.d/etc.conf.m4 | 3 ---
|
||||
1 file changed, 3 deletions(-)
|
||||
|
||||
diff --git a/tmpfiles.d/etc.conf.m4 b/tmpfiles.d/etc.conf.m4
|
||||
index f567c8d6ea..125d6e0a17 100644
|
||||
--- a/tmpfiles.d/etc.conf.m4
|
||||
+++ b/tmpfiles.d/etc.conf.m4
|
||||
@@ -10,8 +10,5 @@
|
||||
L /etc/os-release - - - - ../usr/lib/os-release
|
||||
L /etc/localtime - - - - ../usr/share/zoneinfo/UTC
|
||||
L+ /etc/mtab - - - - ../proc/self/mounts
|
||||
-m4_ifdef(`ENABLE_RESOLVED',
|
||||
-L /etc/resolv.conf - - - - ../run/systemd/resolve/resolv.conf
|
||||
-)
|
||||
C /etc/nsswitch.conf - - - -
|
||||
C /etc/pam.d - - - -
|
@ -1,42 +0,0 @@
|
||||
From 0fe97bc02e3108efdb844feb1b367a89ba995d83 Mon Sep 17 00:00:00 2001
|
||||
From: Harald Hoyer <harald@redhat.com>
|
||||
Date: Tue, 14 Jan 2014 17:48:08 -0500
|
||||
Subject: [PATCH] kernel-install: add fedora specific callouts to
|
||||
new-kernel-pkg
|
||||
|
||||
---
|
||||
src/kernel-install/kernel-install | 21 +++++++++++++++++++++
|
||||
1 file changed, 21 insertions(+)
|
||||
|
||||
diff --git a/src/kernel-install/kernel-install b/src/kernel-install/kernel-install
|
||||
index 3ae1d77..3a2ac56 100644
|
||||
--- a/src/kernel-install/kernel-install
|
||||
+++ b/src/kernel-install/kernel-install
|
||||
@@ -19,6 +19,27 @@
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with systemd; If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
+if [[ -x /sbin/new-kernel-pkg ]]; then
|
||||
+ [[ "$2" == *\+* ]] && flavor=-"${2##*+}"
|
||||
+ case "$1" in
|
||||
+ add)
|
||||
+ /sbin/new-kernel-pkg --package "kernel${flavor}" --install "$2" || exit $?
|
||||
+ /sbin/new-kernel-pkg --package "kernel${flavor}" --mkinitrd --dracut --depmod --update "$2" || exit $?
|
||||
+ /sbin/new-kernel-pkg --package "kernel${flavor}" --rpmposttrans "$2" || exit $?
|
||||
+ ;;
|
||||
+ remove)
|
||||
+ /sbin/new-kernel-pkg --package "kernel${flavor+-$flavor}" --rminitrd --rmmoddep --remove "$2" || exit $?
|
||||
+ ;;
|
||||
+ *)
|
||||
+ ;;
|
||||
+ esac
|
||||
+
|
||||
+ # exit, if we can't find a boot loader spec conforming setup
|
||||
+ if ! [[ -d /boot/loader/entries || -L /boot/loader/entries ]]; then
|
||||
+ exit 0
|
||||
+ fi
|
||||
+fi
|
||||
+
|
||||
usage()
|
||||
{
|
||||
echo "Usage:"
|
3
libsystemd-shared.abignore
Normal file
3
libsystemd-shared.abignore
Normal file
@ -0,0 +1,3 @@
|
||||
[suppress_file]
|
||||
# This shared object is private to systemd
|
||||
file_name_regexp=libsystemd-shared-.*.so
|
@ -1 +0,0 @@
|
||||
$SystemLogSocketName /run/systemd/journal/syslog
|
10
macros.sysusers
Normal file
10
macros.sysusers
Normal file
@ -0,0 +1,10 @@
|
||||
# RPM macros for packages creating system accounts
|
||||
#
|
||||
# Turn a sysusers.d file into macros specified by
|
||||
# https://docs.fedoraproject.org/en-US/packaging-guidelines/UsersAndGroups/#_dynamic_allocation
|
||||
|
||||
%sysusers_requires_compat Requires(pre): shadow-utils
|
||||
|
||||
%sysusers_create_compat() \
|
||||
%(%{_rpmconfigdir}/sysusers.generate-pre.sh %{?*}) \
|
||||
%{nil}
|
@ -1,29 +0,0 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
NAME=systemd
|
||||
UPSTREAM=git://anongit.freedesktop.org/systemd/systemd
|
||||
REFDIR="$HOME/git/systemd" # for faster cloning, if available
|
||||
|
||||
|
||||
[ -n "$1" ] && HEAD="$1" || HEAD="HEAD"
|
||||
|
||||
WORKDIR="$(mktemp -d --tmpdir "$NAME.XXXXXXXXXX")"
|
||||
trap 'rm -rf $WORKDIR' exit
|
||||
|
||||
[ -d "$REFDIR" ] && REFERENCE="--reference $REFDIR"
|
||||
git clone $REFERENCE "$UPSTREAM" "$WORKDIR"
|
||||
|
||||
pushd "$WORKDIR" > /dev/null
|
||||
git branch to-archive $HEAD
|
||||
read COMMIT_SHORTID COMMIT_TITLE <<EOGIT
|
||||
$(git log to-archive^..to-archive --pretty='format:%h %s')
|
||||
EOGIT
|
||||
popd > /dev/null
|
||||
|
||||
echo "Making git snapshot using commit: $COMMIT_SHORTID $COMMIT_TITLE"
|
||||
|
||||
DIRNAME="$NAME-git$COMMIT_SHORTID"
|
||||
git archive --remote="$WORKDIR" --format=tar --prefix="$DIRNAME/" to-archive | xz -9 > "$DIRNAME.tar.xz"
|
||||
|
||||
echo "Written $DIRNAME.tar.xz"
|
101
purge-nobody-user
Executable file
101
purge-nobody-user
Executable file
@ -0,0 +1,101 @@
|
||||
#!/bin/bash -eu
|
||||
|
||||
if [ $UID -ne 0 ]; then
|
||||
echo "WARNING: This script needs to run as root to be effective"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
export SYSTEMD_NSS_BYPASS_SYNTHETIC=1
|
||||
|
||||
if [ "${1:-}" = "--ignore-journal" ]; then
|
||||
shift
|
||||
ignore_journal=1
|
||||
else
|
||||
ignore_journal=0
|
||||
fi
|
||||
|
||||
echo "Checking processes..."
|
||||
if ps h -u 99 | grep .; then
|
||||
echo "ERROR: ps reports processes with UID 99!"
|
||||
exit 2
|
||||
fi
|
||||
echo "... not found"
|
||||
|
||||
echo "Checking UTMP..."
|
||||
if w -h 199 | grep . ; then
|
||||
echo "ERROR: w reports UID 99 as active!"
|
||||
exit 2
|
||||
fi
|
||||
if w -h nobody | grep . ; then
|
||||
echo "ERROR: w reports user nobody as active!"
|
||||
exit 2
|
||||
fi
|
||||
echo "... not found"
|
||||
|
||||
echo "Checking the journal..."
|
||||
if [ "$ignore_journal" = 0 ] && journalctl -q -b -n10 _UID=99 | grep . ; then
|
||||
echo "ERROR: journalctl reports messages from UID 99 in current boot!"
|
||||
exit 2
|
||||
fi
|
||||
echo "... not found"
|
||||
|
||||
echo "Looking for files in /etc, /run, /tmp, and /var..."
|
||||
if find /etc /run /tmp /var -uid 99 -print | grep -m 10 . ; then
|
||||
echo "ERROR: found files belonging to UID 99"
|
||||
exit 2
|
||||
fi
|
||||
echo "... not found"
|
||||
|
||||
echo "Checking if nobody is defined correctly..."
|
||||
if getent passwd nobody |
|
||||
grep '^nobody:[x*]:65534:65534:.*:/:/sbin/nologin';
|
||||
then
|
||||
echo "OK, nothing to do."
|
||||
exit 0
|
||||
else
|
||||
echo "NOTICE: User nobody is not defined correctly"
|
||||
fi
|
||||
|
||||
echo "Checking if nfsnobody or something else is using the uid..."
|
||||
if getent passwd 65534 | grep . ; then
|
||||
echo "NOTICE: will have to remove this user"
|
||||
else
|
||||
echo "... not found"
|
||||
fi
|
||||
|
||||
if [ "${1:-}" = "-x" ]; then
|
||||
if getent passwd nobody >/dev/null; then
|
||||
# this will remove both the user and the group.
|
||||
( set -x
|
||||
userdel nobody
|
||||
)
|
||||
fi
|
||||
|
||||
if getent passwd 65534 >/dev/null; then
|
||||
# Make sure the uid is unused. This should free gid too.
|
||||
name="$(getent passwd 65534 | cut -d: -f1)"
|
||||
( set -x
|
||||
userdel "$name"
|
||||
)
|
||||
fi
|
||||
|
||||
if grep -qE '^(passwd|group):.*\bsss\b' /etc/nsswitch.conf; then
|
||||
echo "Sleeping, so sss can catch up"
|
||||
sleep 3
|
||||
fi
|
||||
|
||||
if getent group 65534; then
|
||||
# Make sure the gid is unused, even if uid wasn't.
|
||||
name="$(getent group 65534 | cut -d: -f1)"
|
||||
( set -x
|
||||
groupdel "$name"
|
||||
)
|
||||
fi
|
||||
|
||||
# systemd-sysusers uses the same gid and uid
|
||||
( set -x
|
||||
systemd-sysusers --inline 'u nobody 65534 "Kernel Overflow User" / /sbin/nologin'
|
||||
)
|
||||
else
|
||||
echo "Pass '-x' to perform changes"
|
||||
fi
|
2
sources
2
sources
@ -1 +1 @@
|
||||
e68dbff3cc19f66e341572d9fb2ffa89 systemd-217.tar.xz
|
||||
SHA512 (systemd-247.1.tar.gz) = 2a737afcee4409c2be073d8cb650c3465a25c101b3c3072ea6e6a0614d06e3ed7ae55c84f9ae60555915ad1480b3a13aa72fef4b9210139afe6b0d7a7629385a
|
||||
|
143
split-files.py
Normal file
143
split-files.py
Normal file
@ -0,0 +1,143 @@
|
||||
import re, sys, os, collections
|
||||
|
||||
buildroot = sys.argv[1]
|
||||
known_files = sys.stdin.read().splitlines()
|
||||
known_files = {line.split()[-1]:line for line in known_files}
|
||||
|
||||
def files(root):
|
||||
os.chdir(root)
|
||||
todo = collections.deque(['.'])
|
||||
while todo:
|
||||
n = todo.pop()
|
||||
files = os.scandir(n)
|
||||
for file in files:
|
||||
yield file
|
||||
if file.is_dir() and not file.is_symlink():
|
||||
todo.append(file)
|
||||
|
||||
o_libs = open('.file-list-libs', 'w')
|
||||
o_udev = open('.file-list-udev', 'w')
|
||||
o_pam = open('.file-list-pam', 'w')
|
||||
o_rpm_macros = open('.file-list-rpm-macros', 'w')
|
||||
o_devel = open('.file-list-devel', 'w')
|
||||
o_container = open('.file-list-container', 'w')
|
||||
o_networkd = open('.file-list-networkd', 'w')
|
||||
o_remote = open('.file-list-remote', 'w')
|
||||
o_tests = open('.file-list-tests', 'w')
|
||||
o_standalone_tmpfiles = open('.file-list-standalone-tmpfiles', 'w')
|
||||
o_standalone_sysusers = open('.file-list-standalone-sysusers', 'w')
|
||||
o_rest = open('.file-list-rest', 'w')
|
||||
for file in files(buildroot):
|
||||
n = file.path[1:]
|
||||
if re.match(r'''/usr/(share|include)$|
|
||||
/usr/share/man(/man.|)$|
|
||||
/usr/share/zsh(/site-functions|)$|
|
||||
/usr/share/dbus-1$|
|
||||
/usr/share/dbus-1/system.d$|
|
||||
/usr/share/dbus-1/(system-|)services$|
|
||||
/usr/share/polkit-1(/actions|/rules.d|)$|
|
||||
/usr/share/pkgconfig$|
|
||||
/usr/share/bash-completion(/completions|)$|
|
||||
/usr(/lib|/lib64|/bin|/sbin|)$|
|
||||
/usr/lib.*/(security|pkgconfig)$|
|
||||
/usr/lib/rpm(/macros.d|)$|
|
||||
/usr/lib/firewalld(/services|)$|
|
||||
/usr/share/(locale|licenses|doc)| # no $
|
||||
/etc(/pam\.d|/xdg|/X11|/X11/xinit|/X11.*\.d|)$|
|
||||
/etc/(dnf|dnf/protected.d)$|
|
||||
/usr/(src|lib/debug)| # no $
|
||||
/run$|
|
||||
/var(/cache|/log|/lib|/run|)$
|
||||
''', n, re.X):
|
||||
continue
|
||||
if '/security/pam_' in n or '/man8/pam_' in n:
|
||||
o = o_pam
|
||||
elif '/rpm/' in n:
|
||||
o = o_rpm_macros
|
||||
elif '/usr/lib/systemd/tests' in n:
|
||||
o = o_tests
|
||||
elif re.search(r'/lib.*\.pc|/man3/|/usr/include|(?<!/libsystemd-shared-...).so$', n):
|
||||
o = o_devel
|
||||
elif re.search(r'''journal-(remote|gateway|upload)|
|
||||
systemd-remote\.conf|
|
||||
/usr/share/systemd/gatewayd|
|
||||
/var/log/journal/remote
|
||||
''', n, re.X):
|
||||
o = o_remote
|
||||
elif re.search(r'''mymachines|
|
||||
machinectl|
|
||||
systemd-nspawn|
|
||||
import-pubring.gpg|
|
||||
systemd-(machined|import|pull)|
|
||||
/machine.slice|
|
||||
/machines.target|
|
||||
var-lib-machines.mount|
|
||||
org.freedesktop.(import|machine)1
|
||||
''', n, re.X):
|
||||
o = o_container
|
||||
elif re.search(r'''/usr/lib/systemd/network/80-|
|
||||
networkd|
|
||||
networkctl|
|
||||
org.freedesktop.network1
|
||||
''', n, re.X):
|
||||
o = o_networkd
|
||||
elif '.so.' in n:
|
||||
o = o_libs
|
||||
elif re.search(r'''udev(?!\.pc)|
|
||||
hwdb|
|
||||
bootctl|
|
||||
sd-boot|systemd-boot\.|loader.conf|
|
||||
bless-boot|
|
||||
boot-system-token|
|
||||
kernel-install|
|
||||
vconsole|
|
||||
backlight|
|
||||
rfkill|
|
||||
random-seed|
|
||||
modules-load|
|
||||
timesync|
|
||||
cryptsetup|
|
||||
kmod|
|
||||
quota|
|
||||
pstore|
|
||||
sleep|suspend|hibernate|
|
||||
systemd-tmpfiles-setup-dev|
|
||||
network/99-default.link|
|
||||
growfs|makefs|makeswap|mkswap|
|
||||
fsck|
|
||||
repart|
|
||||
gpt-auto|
|
||||
volatile-root|
|
||||
verity-setup|
|
||||
remount-fs|
|
||||
/boot$|
|
||||
/boot/efi|
|
||||
/kernel/|
|
||||
/kernel$|
|
||||
/modprobe.d
|
||||
''', n, re.X):
|
||||
o = o_udev
|
||||
elif n.endswith('.standalone'):
|
||||
if 'tmpfiles' in n:
|
||||
o = o_standalone_tmpfiles
|
||||
elif 'sysusers' in n:
|
||||
o = o_standalone_sysusers
|
||||
else:
|
||||
assert False, 'Found .standalone not belonging to known packages'
|
||||
else:
|
||||
o = o_rest
|
||||
|
||||
if n in known_files:
|
||||
prefix = ' '.join(known_files[n].split()[:-1])
|
||||
if prefix:
|
||||
prefix += ' '
|
||||
elif file.is_dir() and not file.is_symlink():
|
||||
prefix = '%dir '
|
||||
elif n.startswith('/etc'):
|
||||
prefix = '%config(noreplace) '
|
||||
else:
|
||||
prefix = ''
|
||||
|
||||
suffix = '*' if '/man/' in n else ''
|
||||
|
||||
print(f'{prefix}{n}{suffix}', file=o)
|
6
systemd-journal-gatewayd.xml
Normal file
6
systemd-journal-gatewayd.xml
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<service>
|
||||
<short>systemd-journal-gatewayd</short>
|
||||
<description>Journal Gateway Service</description>
|
||||
<port protocol="tcp" port="19531"/>
|
||||
</service>
|
6
systemd-journal-remote.xml
Normal file
6
systemd-journal-remote.xml
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<service>
|
||||
<short>systemd-journal-remote</short>
|
||||
<description>Journal Remote Sink</description>
|
||||
<port protocol="tcp" port="19532"/>
|
||||
</service>
|
3
systemd-udev-trigger-no-reload.conf
Normal file
3
systemd-udev-trigger-no-reload.conf
Normal file
@ -0,0 +1,3 @@
|
||||
[Unit]
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1378974#c17
|
||||
RefuseManualStop=true
|
10
systemd-user
Normal file
10
systemd-user
Normal file
@ -0,0 +1,10 @@
|
||||
# This file is part of systemd.
|
||||
#
|
||||
# Used by systemd --user instances.
|
||||
|
||||
account include system-auth
|
||||
|
||||
session required pam_selinux.so close
|
||||
session required pam_selinux.so nottys open
|
||||
session required pam_loginuid.so
|
||||
session include system-auth
|
50
systemd.rpmlintrc
Normal file
50
systemd.rpmlintrc
Normal file
@ -0,0 +1,50 @@
|
||||
# Just kill all warnings about README being wrong in every possible way
|
||||
addFilter(r'README')
|
||||
|
||||
addFilter(r'missing-call-to-(chdir-with-chroot|setgroups-before-setuid)')
|
||||
|
||||
addFilter(r'executable-marked-as-config-file /etc/X11/xinit/xinitrc.d/50-systemd-user.sh')
|
||||
|
||||
addFilter(r'non-readable /etc/crypttab')
|
||||
|
||||
addFilter(r'non-conffile-in-etc /etc/inittab')
|
||||
|
||||
addFilter(r'systemd-unit-in-etc /etc/systemd/.*\.wants')
|
||||
|
||||
addFilter(r'dangling-relative-symlink /usr/lib/environment.d/99-environment.conf ../../../etc/environment')
|
||||
|
||||
addFilter(r'devel-file-in-non-devel-package /usr/share/pkgconfig/(systemd|udev).pc')
|
||||
|
||||
addFilter(r'non-standard-dir-perm /var/cache/private 700')
|
||||
|
||||
addFilter(r'non-root-group-log-file /var/log/btmp utmp')
|
||||
|
||||
addFilter(r'non-standard-dir-perm /var/log/private 700')
|
||||
|
||||
addFilter(r'non-root-group-log-file /var/log/wtmp utmp')
|
||||
|
||||
addFilter(r'dangerous-command-in-')
|
||||
|
||||
addFilter(r'summary-not-capitalized C systemd')
|
||||
|
||||
addFilter(r'obsolete-not-provided')
|
||||
|
||||
addFilter(r'postin-without-ldconfig')
|
||||
|
||||
addFilter(r'systemd-rpm-macros.noarch: W: only-non-binary-in-usr-lib')
|
||||
|
||||
addFilter(r'systemd-rpm-macros.noarch: W: no-documentation')
|
||||
|
||||
addFilter(r'systemd-tests\..*: W: no-documentation')
|
||||
|
||||
addFilter(r'systemd-tests.*: E: zero-length /usr/lib/systemd/tests/testdata/test-umount/empty.mountinfo')
|
||||
|
||||
addFilter(r'hardcoded-library-path in.*(firewalld|install.d|lib/systemd)')
|
||||
|
||||
# everybody does it this way: systemd, syslog-ng, rsyslog
|
||||
addFilter(r'unversioned-explicit-provides syslog')
|
||||
|
||||
# systemd-machine-id-setup requires libssl
|
||||
addFilter(r'explicit-lib-dependency openssl-libs')
|
||||
|
||||
addFilter(r'systemd.src:.*strange-permission')
|
2508
systemd.spec
2508
systemd.spec
File diff suppressed because it is too large
Load Diff
2
sysusers.attr
Normal file
2
sysusers.attr
Normal file
@ -0,0 +1,2 @@
|
||||
%__sysusers_provides %{_rpmconfigdir}/sysusers.prov
|
||||
%__sysusers_path ^%{_sysusersdir}/.*\\.conf$
|
79
sysusers.generate-pre.sh
Executable file
79
sysusers.generate-pre.sh
Executable file
@ -0,0 +1,79 @@
|
||||
#!/bin/bash
|
||||
|
||||
# This script turns sysuser.d files into scriptlets mandated by Fedora
|
||||
# packaging guidelines. The general idea is to define users using the
|
||||
# declarative syntax but to turn this into traditional scriptlets.
|
||||
|
||||
user() {
|
||||
user="$1"
|
||||
uid="$2"
|
||||
desc="$3"
|
||||
group="$4"
|
||||
home="$5"
|
||||
shell="$6"
|
||||
|
||||
[ "$desc" = '-' ] && desc=
|
||||
[ "$home" = '-' -o "$home" = '' ] && home=/
|
||||
[ "$shell" = '-' -o "$shell" = '' ] && shell=/sbin/nologin
|
||||
|
||||
if [ "$uid" = '-' -o "$uid" = '' ]; then
|
||||
cat <<EOF
|
||||
getent passwd '$user' >/dev/null || \\
|
||||
useradd -r -g '$group' -d '$home' -s '$shell' -c '$desc' '$user'
|
||||
EOF
|
||||
else
|
||||
cat <<EOF
|
||||
if ! getent passwd '$user' >/dev/null ; then
|
||||
if ! getent passwd '$uid' >/dev/null ; then
|
||||
useradd -r -u '$uid' -g '$group' -d '$home' -s /sbin/nologin -c '$desc' '$user'
|
||||
else
|
||||
useradd -r -g '$group' -d '$home' -s /sbin/nologin -c '$desc' '$user'
|
||||
fi
|
||||
fi
|
||||
|
||||
EOF
|
||||
fi
|
||||
}
|
||||
|
||||
group() {
|
||||
group="$1"
|
||||
gid="$2"
|
||||
if [ "$gid" = '-' ]; then
|
||||
cat <<EOF
|
||||
getent group '$group' >/dev/null || groupadd -r '$group'
|
||||
EOF
|
||||
else
|
||||
cat <<EOF
|
||||
getent group '$group' >/dev/null || groupadd -f -g '$gid' -r '$group'
|
||||
EOF
|
||||
fi
|
||||
}
|
||||
|
||||
parse() {
|
||||
while read line || [ "$line" ]; do
|
||||
[ "${line:0:1}" = '#' -o "${line:0:1}" = ';' ] && continue
|
||||
line="${line## *}"
|
||||
[ -z "$line" ] && continue
|
||||
eval arr=( $line )
|
||||
case "${arr[0]}" in
|
||||
('u')
|
||||
group "${arr[1]}" "${arr[2]}"
|
||||
user "${arr[1]}" "${arr[2]}" "${arr[3]}" "${arr[1]}" "${arr[4]}" "${arr[5]}"
|
||||
# TODO: user:group support
|
||||
;;
|
||||
('g')
|
||||
group "${arr[1]}" "${arr[2]}"
|
||||
;;
|
||||
('m')
|
||||
group "${arr[2]}" "-"
|
||||
user "${arr[1]}" "-" "" "${arr[2]}"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
for fn in "$@"; do
|
||||
[ -e "$fn" ] || continue
|
||||
echo "# generated from $(basename $fn)"
|
||||
parse < "$fn"
|
||||
done
|
28
sysusers.prov
Executable file
28
sysusers.prov
Executable file
@ -0,0 +1,28 @@
|
||||
#!/bin/bash
|
||||
|
||||
parse() {
|
||||
while read line; do
|
||||
[ "${line:0:1}" = '#' -o "${line:0:1}" = ';' ] && continue
|
||||
line="${line## *}"
|
||||
[ -z "$line" ] && continue
|
||||
set -- $line
|
||||
case "$1" in
|
||||
('u')
|
||||
echo "user($2)"
|
||||
echo "group($2)"
|
||||
# TODO: user:group support
|
||||
;;
|
||||
('g')
|
||||
echo "group($2)"
|
||||
;;
|
||||
('m')
|
||||
echo "user($2)"
|
||||
echo "group($3)"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
while read fn; do
|
||||
parse < "$fn"
|
||||
done
|
50
tests/tests-reboot.yml
Normal file
50
tests/tests-reboot.yml
Normal file
@ -0,0 +1,50 @@
|
||||
---
|
||||
- hosts: localhost
|
||||
vars:
|
||||
- artifacts: "{{ lookup('env', 'TEST_ARTIFACTS')|default('./artifacts', true) }}"
|
||||
tags:
|
||||
- classic
|
||||
tasks:
|
||||
# switch SELinux to permissive mode
|
||||
- name: Get default kernel
|
||||
command: "grubby --default-kernel"
|
||||
register: default_kernel
|
||||
- debug: msg="{{ default_kernel.stdout }}"
|
||||
- name: Set permissive mode
|
||||
command: "grubby --args=enforcing=0 --update-kernel {{ default_kernel.stdout }}"
|
||||
|
||||
- name: reboot
|
||||
block:
|
||||
- name: restart host
|
||||
shell: sleep 2 && shutdown -r now "Ansible updates triggered"
|
||||
async: 1
|
||||
poll: 0
|
||||
ignore_errors: true
|
||||
|
||||
- name: wait for host to come back
|
||||
wait_for_connection:
|
||||
delay: 10
|
||||
timeout: 300
|
||||
|
||||
- name: Re-create /tmp/artifacts
|
||||
command: mkdir /tmp/artifacts
|
||||
|
||||
- name: Gather SELinux denials since boot
|
||||
shell: |
|
||||
result=pass
|
||||
dmesg | grep -i -e type=1300 -e type=1400 > /tmp/avc.log && result=fail
|
||||
ausearch -m avc -m selinux_err -m user_avc -ts boot &>> /tmp/avc.log
|
||||
grep -q '<no matches>' /tmp/avc.log || result=fail
|
||||
echo -e "\nresults:\n- test: reboot and collect AVC\n result: $result\n logs:\n - avc.log\n\n" > /tmp/results.yml
|
||||
( [ $result = "pass" ] && echo PASS test-reboot || echo FAIL test-reboot ) > /tmp/test.log
|
||||
|
||||
always:
|
||||
- name: Pull out the artifacts
|
||||
fetch:
|
||||
dest: "{{ artifacts }}/"
|
||||
src: "{{ item }}"
|
||||
flat: yes
|
||||
with_items:
|
||||
- /tmp/test.log
|
||||
- /tmp/avc.log
|
||||
- /tmp/results.yml
|
111
triggers.systemd
Normal file
111
triggers.systemd
Normal file
@ -0,0 +1,111 @@
|
||||
# -*- Mode: rpm-spec; indent-tabs-mode: nil -*- */
|
||||
# SPDX-License-Identifier: LGPL-2.1+
|
||||
#
|
||||
# This file is part of systemd.
|
||||
#
|
||||
# Copyright 2015 Zbigniew Jędrzejewski-Szmek
|
||||
# Copyright 2018 Neal Gompa
|
||||
#
|
||||
# systemd is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU Lesser General Public License as published by
|
||||
# the Free Software Foundation; either version 2.1 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# systemd is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with systemd; If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# The contents of this are an example to be copied into systemd.spec.
|
||||
#
|
||||
# Minimum rpm version supported: 4.13.0
|
||||
|
||||
%transfiletriggerin -P 900900 -- /usr/lib/systemd/system /etc/systemd/system
|
||||
# This script will run after any package is initially installed or
|
||||
# upgraded. We care about the case where a package is initially
|
||||
# installed, because other cases are covered by the *un scriptlets,
|
||||
# so sometimes we will reload needlessly.
|
||||
if test -d /run/systemd/system; then
|
||||
%{_bindir}/systemctl daemon-reload
|
||||
fi
|
||||
|
||||
%transfiletriggerun -- /usr/lib/systemd/system /etc/systemd/system
|
||||
# On removal, we need to run daemon-reload after any units have been
|
||||
# removed. %transfiletriggerpostun would be ideal, but it does not get
|
||||
# executed for some reason.
|
||||
# On upgrade, we need to run daemon-reload after any new unit files
|
||||
# have been installed, but before %postun scripts in packages get
|
||||
# executed. %transfiletriggerun gets the right list of files
|
||||
# but it is invoked too early (before changes happen).
|
||||
# %filetriggerpostun happens at the right time, but it fires for
|
||||
# every package.
|
||||
# To execute the reload at the right time, we create a state
|
||||
# file in %transfiletriggerun and execute the daemon-reload in
|
||||
# the first %filetriggerpostun.
|
||||
|
||||
if test -d "/run/systemd/system"; then
|
||||
mkdir -p "%{_localstatedir}/lib/rpm-state/systemd"
|
||||
touch "%{_localstatedir}/lib/rpm-state/systemd/needs-reload"
|
||||
fi
|
||||
|
||||
%filetriggerpostun -P 1000100 -- /usr/lib/systemd/system /etc/systemd/system
|
||||
if test -f "%{_localstatedir}/lib/rpm-state/systemd/needs-reload"; then
|
||||
rm -rf "%{_localstatedir}/lib/rpm-state/systemd"
|
||||
%{_bindir}/systemctl daemon-reload
|
||||
fi
|
||||
|
||||
%transfiletriggerin -P 100700 -- /usr/lib/sysusers.d
|
||||
# This script will process files installed in /usr/lib/sysusers.d to create
|
||||
# specified users automatically. The priority is set such that it
|
||||
# will run before the tmpfiles file trigger.
|
||||
if test -d /run/systemd/system; then
|
||||
%{_bindir}/systemd-sysusers || :
|
||||
fi
|
||||
|
||||
%transfiletriggerin -P 100500 -- /usr/lib/tmpfiles.d
|
||||
# This script will process files installed in /usr/lib/tmpfiles.d to create
|
||||
# tmpfiles automatically. The priority is set such that it will run
|
||||
# after the sysusers file trigger, but before any other triggers.
|
||||
if test -d /run/systemd/system; then
|
||||
%{_bindir}/systemd-tmpfiles --create || :
|
||||
fi
|
||||
|
||||
%transfiletriggerin udev -- /usr/lib/udev/hwdb.d
|
||||
# This script will automatically invoke hwdb update if files have been
|
||||
# installed or updated in /usr/lib/udev/hwdb.d.
|
||||
if test -d /run/systemd/system; then
|
||||
%{_bindir}/systemd-hwdb update || :
|
||||
fi
|
||||
|
||||
%transfiletriggerin -- /usr/lib/systemd/catalog
|
||||
# This script will automatically invoke journal catalog update if files
|
||||
# have been installed or updated in /usr/lib/systemd/catalog.
|
||||
if test -d /run/systemd/system; then
|
||||
%{_bindir}/journalctl --update-catalog || :
|
||||
fi
|
||||
|
||||
%transfiletriggerin udev -- /usr/lib/udev/rules.d
|
||||
# This script will automatically update udev with new rules if files
|
||||
# have been installed or updated in /usr/lib/udev/rules.d.
|
||||
if test -e /run/udev/control; then
|
||||
%{_bindir}/udevadm control --reload || :
|
||||
fi
|
||||
|
||||
%transfiletriggerin -- /usr/lib/sysctl.d
|
||||
# This script will automatically apply sysctl rules if files have been
|
||||
# installed or updated in /usr/lib/sysctl.d.
|
||||
if test -d /run/systemd/system; then
|
||||
/usr/lib/systemd/systemd-sysctl || :
|
||||
fi
|
||||
|
||||
%transfiletriggerin -- /usr/lib/binfmt.d
|
||||
# This script will automatically apply binfmt rules if files have been
|
||||
# installed or updated in /usr/lib/binfmt.d.
|
||||
if test -d /run/systemd/system; then
|
||||
# systemd-binfmt might fail if binfmt_misc kernel module is not loaded
|
||||
# during install
|
||||
/usr/lib/systemd/systemd-binfmt || :
|
||||
fi
|
@ -1,58 +0,0 @@
|
||||
From 3c6a000d5c291f998dba2eb4c8e351f4603ca985 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Sun, 2 Nov 2014 11:39:17 -0500
|
||||
Subject: [PATCH] unit: do not order timers.target before basic.target
|
||||
|
||||
Since commit 19f8d037833f2 'timer: order OnCalendar units after
|
||||
timer-sync.target if DefaultDependencies=no' timers might get a
|
||||
dependency on time-sync.target, which does not really belong in early
|
||||
boot. If ntp is enabled, time-sync.target might be delayed until a
|
||||
network connection is established.
|
||||
|
||||
It turns out that majority of timer units found in the wild do not
|
||||
need to be started in early boot. Out of the timer units available in
|
||||
Fedora 21, only systemd-readahead-done.timer and mdadm-last-resort@.timer
|
||||
should be started early, but they both have DefaultDependencies=no,
|
||||
so are not part of timers.target anyway. All the rest look like they
|
||||
will be fine with being started a bit later (and the majority even
|
||||
much later, since they run daily or weekly).
|
||||
|
||||
Let timers.target be pulled in by basic.target, but without the
|
||||
temporal dependency. This means timer units are started on a "best
|
||||
effort" schedule.
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1158206
|
||||
(cherry picked from commit 3b0217036040a6013faeab4eb9da7469e3bbcfb3)
|
||||
|
||||
Conflicts:
|
||||
units/basic.target
|
||||
---
|
||||
units/basic.target | 4 +++-
|
||||
units/timers.target | 3 +++
|
||||
2 files changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/units/basic.target b/units/basic.target
|
||||
index b890d48bbc..abb63ec560 100644
|
||||
--- a/units/basic.target
|
||||
+++ b/units/basic.target
|
||||
@@ -8,6 +8,8 @@
|
||||
[Unit]
|
||||
Description=Basic System
|
||||
Documentation=man:systemd.special(7)
|
||||
+
|
||||
Requires=sysinit.target
|
||||
+After=sysinit.target
|
||||
Wants=sockets.target timers.target paths.target slices.target
|
||||
-After=sysinit.target sockets.target timers.target paths.target slices.target
|
||||
+After=sockets.target paths.target slices.target
|
||||
diff --git a/units/timers.target b/units/timers.target
|
||||
index 07fda3d9d0..251fa68065 100644
|
||||
--- a/units/timers.target
|
||||
+++ b/units/timers.target
|
||||
@@ -8,3 +8,6 @@
|
||||
[Unit]
|
||||
Description=Timers
|
||||
Documentation=man:systemd.special(7)
|
||||
+
|
||||
+DefaultDependencies=no
|
||||
+Conflicts=shutdown.target
|
@ -1,26 +0,0 @@
|
||||
From fd2b2627c5fa463a9a4bf557d9e0980b727cf007 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Thu, 16 Oct 2014 19:16:00 -0500
|
||||
Subject: [PATCH] units: remove /dev/log to always create symlink
|
||||
|
||||
When upgrading from older systemds, /dev/log would
|
||||
exist and we wouldn't be able to create the symlink successfully.
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1099299
|
||||
---
|
||||
units/systemd-journald-dev-log.socket | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/units/systemd-journald-dev-log.socket b/units/systemd-journald-dev-log.socket
|
||||
index ffd44bb507..0950424163 100644
|
||||
--- a/units/systemd-journald-dev-log.socket
|
||||
+++ b/units/systemd-journald-dev-log.socket
|
||||
@@ -17,6 +17,8 @@ Before=sockets.target
|
||||
IgnoreOnIsolate=yes
|
||||
|
||||
[Socket]
|
||||
+ExecStartPre=-/bin/rm -f /dev/log
|
||||
+
|
||||
Service=systemd-journald.service
|
||||
ListenDatagram=/run/systemd/journal/dev-log
|
||||
Symlinks=/dev/log
|
40
use-bfq-scheduler.patch
Normal file
40
use-bfq-scheduler.patch
Normal file
@ -0,0 +1,40 @@
|
||||
From 223ea50950f97ed4e67311dfcffed7ffc27a7cd3 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Wed, 14 Aug 2019 15:57:42 +0200
|
||||
Subject: [PATCH] udev: use bfq as the default scheduler
|
||||
|
||||
As requested in https://bugzilla.redhat.com/show_bug.cgi?id=1738828.
|
||||
Test results are that bfq seems to behave better and more consistently on
|
||||
typical hardware. The kernel does not have a configuration option to set
|
||||
the default scheduler, and it currently needs to be set by userspace.
|
||||
|
||||
See the bug for more discussion and links.
|
||||
---
|
||||
rules.d/60-block-scheduler.rules | 5 +++++
|
||||
rules.d/meson.build | 1 +
|
||||
2 files changed, 6 insertions(+)
|
||||
create mode 100644 rules.d/60-block-scheduler.rules
|
||||
|
||||
diff --git a/rules.d/60-block-scheduler.rules b/rules.d/60-block-scheduler.rules
|
||||
new file mode 100644
|
||||
index 0000000000..480b941761
|
||||
--- /dev/null
|
||||
+++ b/rules.d/60-block-scheduler.rules
|
||||
@@ -0,0 +1,5 @@
|
||||
+# do not edit this file, it will be overwritten on update
|
||||
+
|
||||
+ACTION=="add", SUBSYSTEM=="block", \
|
||||
+ KERNEL=="mmcblk*[0-9]|msblk*[0-9]|mspblk*[0-9]|sd*[!0-9]|sr*", \
|
||||
+ ATTR{queue/scheduler}="bfq"
|
||||
diff --git a/rules.d/meson.build b/rules.d/meson.build
|
||||
index ca4445d774..38d6aa6970 100644
|
||||
--- a/rules.d/meson.build
|
||||
+++ b/rules.d/meson.build
|
||||
@@ -3,6 +3,7 @@
|
||||
rules = files('''
|
||||
60-autosuspend.rules
|
||||
60-block.rules
|
||||
+ 60-block-scheduler.rules
|
||||
60-cdrom_id.rules
|
||||
60-drm.rules
|
||||
60-evdev.rules
|
@ -1 +1,2 @@
|
||||
systemd
|
||||
systemd-udev
|
||||
|
Loading…
Reference in New Issue
Block a user