Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

coredump: add zstandard support for coredumps #15422

Merged
merged 2 commits into from
May 4, 2020

Conversation

nolange
Copy link
Contributor

@nolange nolange commented Apr 13, 2020

This adds support for coredumps being compressed (and decompressed) with zstd. It steals parts from #8207, particularly the meson bits.

I tested compression/decompression of coredumps on a live system.

The other PR also added zstd support for journals, but for me this leaves too many questions open (first and foremost if this actually makes a useful difference).

@nolange
Copy link
Contributor Author

nolange commented Apr 14, 2020

Reading through the previous PR compression, seems like zstd compression for the journal itself was compressed.
So this will be some critism/questions about the journal format and implementation in general, mixed with some specifics of zstd. Probably should end into multiple Issues or TODO list.

Compressed data in the Journal

  • The journal format itself seems rather unfit to tack on compression. Likely alot better results can be archived if the FS just does compression transparently.
  • the key is in the compressed data (?!?), and decompress_startswith will be repeatedly called until the right key is found.
  • if found, the decompression is restarted from scratch.

To address the above:
The decompression context is not that cheap to throw it away (LZ4 might be different). Ideally one would reuse a context atleast through the whole search. Thats of course not that easy if by now there are 3 formats that could all appear in one journal.
Easier would be to save the context between decompress_startswith/decompress_blob. Quite frankly just use the "streaming decompression" used for external files instead. The uncompressed size is stored in the journal data too, so that's no loss in information.

Avoiding dependencies to now 3 additional dso's

Might make sense to dlopen the fitting library only if is going to be used. In my case this would be just for compressing/decompressing coredumps.
Or, even crazier, allow adding a script in (/etc,/run,/lib)/systemd/coredump/storage. if existing,
it will be passed the open fd and called with storage -o /proc/self/fd/N.
Might need to figure out a way to report back a fitting file-extension (just dump it on stdout after successfully compressing?)

Decompression would be similar with storage -d -o /proc/self/fd/N

(Of course that's nothing you want to do for data embedded in the journal)

Supporting sparse files

coredumps are a whole bunch of zeros, using sparse files gives insane savings here. My single test involved uncompressing a zstd compressed coredump with the zstd tool. the file was 1.2GB in size, but took up only ~60MB on disk.

not storing the coredump before compressing

Currently the uncompressed coredump will be used to create a stacktrace.
Skipping that, and feeding the stream directly into the compressor would preferable IMHO, as the stacktrace can be recreated later (potentially after fetching debug info, on another system).
Even if not, would it be possible to create the stacktrace from still existing mappings from the /proc filesystem?

On that note, since coredump does access the /proc directory of the deceased procress..
Is it taken into account, that this might not work?

Quote about /proc/sys/kernel/core_pipe_limit from the manpage:

A value of 0 in this file is special. It indicates that unlimited
processes may be captured in parallel, but that no waiting will take
place (i.e., the collecting program is not guaranteed access to
/proc/). The default value for this file is 0.

Copy link
Member

@keszybz keszybz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks quite nice. I think that with the mmap calls gone, the code will be pleasantly simpler.

I was wary of adding another dependency, but since this is opt-in at compile time, it is OK. Some distributions might choose not to enable it.

src/journal/compress.c Outdated Show resolved Hide resolved
src/journal/compress.c Outdated Show resolved Hide resolved
src/journal/compress.c Outdated Show resolved Hide resolved
src/journal/compress.c Outdated Show resolved Hide resolved
src/journal/compress.c Outdated Show resolved Hide resolved
src/journal/compress.c Outdated Show resolved Hide resolved
src/journal/compress.c Outdated Show resolved Hide resolved
@nolange nolange force-pushed the add_zstd_coredump branch 2 times, most recently from 73bd441 to 50fd3c1 Compare April 22, 2020 09:22
@nolange
Copy link
Contributor Author

nolange commented Apr 22, 2020

@keszybz Also tested the revised patch, works fine here. Build failures seem unrelated.

Generally I have a problem though with everything in systemd now depending on libzstd, when only two tools use it (coredumpd and coredumpctl). What would be your direction to go?

IMHO, the de(compression) stuff should be put into src/basic, and libraries be dlopened on demand.

src/coredump/coredumpctl.c Outdated Show resolved Hide resolved
src/journal/compress.c Outdated Show resolved Hide resolved
src/journal/compress.c Outdated Show resolved Hide resolved
src/journal/compress.c Outdated Show resolved Hide resolved
src/journal/compress.c Outdated Show resolved Hide resolved
src/journal/compress.c Show resolved Hide resolved
src/journal/compress.c Outdated Show resolved Hide resolved
src/journal/compress.c Outdated Show resolved Hide resolved
src/journal/compress.c Outdated Show resolved Hide resolved
src/journal/compress.c Outdated Show resolved Hide resolved
@poettering poettering added the reviewed/needs-rework 🔨 PR has been reviewed and needs another round of reworks label Apr 23, 2020
@nolange nolange force-pushed the add_zstd_coredump branch 3 times, most recently from 8985a28 to c06ddb9 Compare April 26, 2020 21:34
@nolange
Copy link
Contributor Author

nolange commented Apr 26, 2020

added a line in README for the libzstd dependency,
and guessed the lines in the mkosi files in another commit.

Copy link
Member

@poettering poettering left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks pretty good, just some nitpicks

src/journal/compress.c Show resolved Hide resolved
src/journal/compress.c Outdated Show resolved Hide resolved
src/journal/compress.c Outdated Show resolved Hide resolved
src/journal/compress.c Outdated Show resolved Hide resolved
src/journal/compress.c Show resolved Hide resolved
src/journal/compress.c Outdated Show resolved Hide resolved
src/journal/compress.c Show resolved Hide resolved
@evverx
Copy link
Member

evverx commented Apr 27, 2020

@nolange as far as I can tell, neither compress_stream_zstd nor decompress_stream_zstd is tested anywhere. Could you update src/journal/test-compress.c (where test_compress_stream is used to make sure at least the basic stuff is covered).

@terrelln I linked a fuzzer against libzstd I built with ASan+UBsan and fuzzer-no-link. It failed as soon as it started with

legacy/zstd_v07.c:4056:47: runtime error: addition of unsigned offset to 0x61d000003280 overflowed to 0x61d00000326c
    #0 0x7f5eeb892707 in ZSTDv07_decompressContinue (/home/vagrant/zstd/lib/libzstd.so.1+0x76e707)
    #1 0x7f5eeb898343 in ZBUFFv07_decompressContinue (/home/vagrant/zstd/lib/libzstd.so.1+0x774343)
    #2 0x7f5eeb79c097 in ZSTD_decompressLegacyStream (/home/vagrant/zstd/lib/libzstd.so.1+0x678097)
    #3 0x7f5eeb79a482 in ZSTD_decompressStream (/home/vagrant/zstd/lib/libzstd.so.1+0x676482)
    #4 0x7f5eecc18acf in decompress_stream_zstd /home/vagrant/systemd/build/../src/journal/compress.c:853:39
    #5 0x536c04 in LLVMFuzzerTestOneInput /home/vagrant/systemd/build/../src/fuzz/fuzz-compress.c:36:16
    #6 0x441988 in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) (/home/vagrant/systemd/out/fuzz-compress+0x441988)
    #7 0x4425b0 in fuzzer::Fuzzer::RunOne(unsigned char const*, unsigned long, bool, fuzzer::InputInfo*, bool*) (/home/vagrant/systemd/out/fuzz-compress+0x4425b0)
    #8 0x44367e in fuzzer::Fuzzer::ReadAndExecuteSeedCorpora(std::vector<fuzzer::SizedFile, fuzzer::fuzzer_allocator<fuzzer::SizedFile> >&) (/home/vagrant/systemd/out/fuzz-compress+0x44367e)
    #9 0x44510c in fuzzer::Fuzzer::Loop(std::vector<fuzzer::SizedFile, fuzzer::fuzzer_allocator<fuzzer::SizedFile> >&) (/home/vagrant/systemd/out/fuzz-compress+0x44510c)
    #10 0x42fabb in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) (/home/vagrant/systemd/out/fuzz-compress+0x42fabb)
    #11 0x41fa46 in main (/home/vagrant/systemd/out/fuzz-compress+0x41fa46)
    #12 0x7f5eebba71a2 in __libc_start_main (/lib64/libc.so.6+0x271a2)
    #13 0x41fa9d in _start (/home/vagrant/systemd/out/fuzz-compress+0x41fa9d)

As far as I can see, pointer-overflows are ignored (unless ubsan_pointer_overflow is passed explicitly) and I can't seem to figure out why. Are you planning to fix this and https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&q=proj%3Azstd%20pointer-overflow&can=1 eventually?

@evverx
Copy link
Member

evverx commented Apr 27, 2020

Other than that systemd seems to be failing to compile on Debian Buster with

7@@journal-client@sta/compress.c.o' -MF 'src/journal/da05bd7@@journal-client@sta/compress.c.o.d' -o 'src/journal/da05bd7@@journal-client@sta/compress.c.o' -c ../src/journal/compress.c
../src/journal/compress.c: In function ‘compress_stream_zstd’:
../src/journal/compress.c:720:21: error: implicit declaration of function ‘ZSTD_CCtx_setPledgedSrcSize’ [-Werror=implicit-function-declaration]
                 z = ZSTD_CCtx_setPledgedSrcSize(cctx, in_totalsize);
                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/journal/compress.c:720:21: error: nested extern declaration of ‘ZSTD_CCtx_setPledgedSrcSize’ [-Werror=nested-externs]
../src/journal/compress.c:725:13: error: implicit declaration of function ‘ZSTD_CCtx_setParameter’ [-Werror=implicit-function-declaration]
         z = ZSTD_CCtx_setParameter(cctx, ZSTD_c_checksumFlag, 1);
             ^~~~~~~~~~~~~~~~~~~~~~
../src/journal/compress.c:725:13: error: nested extern declaration of ‘ZSTD_CCtx_setParameter’ [-Werror=nested-externs]
../src/journal/compress.c:725:42: error: ‘ZSTD_c_checksumFlag’ undeclared (first use in this function); did you mean ‘ZSTD_error_checksum_wrong’?
         z = ZSTD_CCtx_setParameter(cctx, ZSTD_c_checksumFlag, 1);
                                          ^~~~~~~~~~~~~~~~~~~
                                          ZSTD_error_checksum_wrong
../src/journal/compress.c:725:42: note: each undeclared identifier is reported only once for each function it appears in
../src/journal/compress.c:755:37: error: implicit declaration of function ‘ZSTD_compressStream2’; did you mean ‘ZSTD_compressStream’? [-Werror=implicit-function-declaration]
                         remaining = ZSTD_compressStream2(
                                     ^~~~~~~~~~~~~~~~~~~~
                                     ZSTD_compressStream
../src/journal/compress.c:755:37: error: nested extern declaration of ‘ZSTD_compressStream2’ [-Werror=nested-externs]
../src/journal/compress.c:756:72: error: ‘ZSTD_e_end’ undeclared (first use in this function); did you mean ‘ZSTD_DDict’?
                                 cctx, &output, &input, is_last_chunk ? ZSTD_e_end : ZSTD_e_continue);
                                                                        ^~~~~~~~~~
                                                                        ZSTD_DDict
../src/journal/compress.c:756:85: error: ‘ZSTD_e_continue’ undeclared (first use in this function)
                                 cctx, &output, &input, is_last_chunk ? ZSTD_e_end : ZSTD_e_continue);
                                                                                     ^~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
[206/1596] Compiling C object 'src/journal/da05bd7@@journal-client@sta/catalog.c.o'.
ninja: build stopped: subcommand failed.
make: *** [Makefile:2: all] Error 1
$ dpkg -s libzstd-dev
Package: libzstd-dev
Status: install ok installed
Priority: optional
Section: libdevel
Installed-Size: 924
Maintainer: Debian Med Packaging Team <debian-med-packaging@lists.alioth.debian.org>
Architecture: i386
Multi-Arch: same
Source: libzstd
Version: 1.3.8+dfsg-3
Depends: libzstd1 (= 1.3.8+dfsg-3)
Description: fast lossless compression algorithm -- development files
 Zstd, short for Zstandard, is a fast lossless compression algorithm, targeting
 real-time compression scenarios at zlib-level compression ratio.
 .
 This package contains the headers and static library.
Homepage: https://github.com/facebook/zstd

@terrelln
Copy link

As far as I can see, pointer-overflows are ignored (unless ubsan_pointer_overflow is passed explicitly) and I can't seem to figure out why. Are you planning to fix this and https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&q=proj%3Azstd%20pointer-overflow&can=1 eventually?

No, zstd uses pointer arithmetic for efficiency, and that can occasionally overflow. All platforms that we've tested support wrapping arithmetic for pointers. This is heavily baked into the code.

The alternative would be to do pointer -> cast to uintptr_t -> do arithmitic & validation -> cast to pointer -> dereference. But that is also undefined behavior, since you can't do arithmetic on uintptr_t and cast back to a pointer and dereference.

If you can demonstrate a platform that breaks because of this, please report a bug.

However, this should be the only type of UB that we ignore, and we never ignore any ASAN/MSAN bugs. So if you see other types of errors, please let us know!

@nolange nolange force-pushed the add_zstd_coredump branch 2 times, most recently from fa17f3d to 7acf348 Compare April 27, 2020 20:31
@nolange
Copy link
Contributor Author

nolange commented Apr 27, 2020

@evverx I did not know those were recent additions (or recently moved to stable). I provide 1.3.x compatibility with another commit, raising the dependency if of course the easiest/cleanest option.

For Debian Buster, libzstd-dev is at version 1.4.4 in the backports, so that would not be a showstopper.

I only tested compilation with 1.3.1 so far. Would test some more, if that's the preferred solution.

@terrelln You would need to find a cpu with something different than 2-complement integers. Maybe there are some obscure DSPs around, but you would run in alot other issues before you will be able to run zstd or systemd on them ;)

@evverx
Copy link
Member

evverx commented Apr 27, 2020

@terrelln

All platforms that we've tested support wrapping arithmetic for pointers. This is heavily baked into the code.

It seems it isn't baked into the build system though. The "usan" and "uasan" targets (I looked at to figure out how libzstd should be built to avoid known issues) pass "CC=clang MOREFLAGS="-g -fno-sanitize-recover=all -fsanitize-recover=signed-integer-overflow -fsanitize=undefined -Werror"" as far as I can see.

@nolange

I only tested compilation with 1.3.1 so far. Would test some more, if that's the preferred solution.

I'm not sure whether it's necessary to support 1.3.*. I'm fine with just bumping libzstd in meson.build. Though I'd wait for someone else to chime in :-)

What's more important I think is that the new functions are still untested in the sense they aren't covered by the testsuite automatically. I think it would be great to update src/journal/test-compress.c.

@evverx
Copy link
Member

evverx commented Apr 27, 2020

FWIW now it's failing to compile on Debian Buster with

../src/journal/compress.c:81:20: error: redundant redeclaration of ‘ZSTD_compressStream’ [-Werror=redundant-decls]
 ZSTDLIB_API size_t ZSTD_compressStream(ZSTD_CStream *zcs, ZSTD_outBuffer *output, ZSTD_inBuffer *input);
                    ^~~~~~~~~~~~~~~~~~~
In file included from ../src/journal/compress.c:20:
/usr/include/zstd.h:351:20: note: previous declaration of ‘ZSTD_compressStream’ was here
 ZSTDLIB_API size_t ZSTD_compressStream(ZSTD_CStream* zcs, ZSTD_outBuffer* output, ZSTD_inBuffer* input);
                    ^~~~~~~~~~~~~~~~~~~
../src/journal/compress.c:82:20: error: redundant redeclaration of ‘ZSTD_flushStream’ [-Werror=redundant-decls]
 ZSTDLIB_API size_t ZSTD_flushStream(ZSTD_CStream *zcs, ZSTD_outBuffer *output);
                    ^~~~~~~~~~~~~~~~
In file included from ../src/journal/compress.c:20:
/usr/include/zstd.h:352:20: note: previous declaration of ‘ZSTD_flushStream’ was here
 ZSTDLIB_API size_t ZSTD_flushStream(ZSTD_CStream* zcs, ZSTD_outBuffer* output);
                    ^~~~~~~~~~~~~~~~
../src/journal/compress.c:83:20: error: redundant redeclaration of ‘ZSTD_endStream’ [-Werror=redundant-decls]
 ZSTDLIB_API size_t ZSTD_endStream(ZSTD_CStream *zcs, ZSTD_outBuffer *output);
                    ^~~~~~~~~~~~~~
In file included from ../src/journal/compress.c:20:
/usr/include/zstd.h:353:20: note: previous declaration of ‘ZSTD_endStream’ was here
 ZSTDLIB_API size_t ZSTD_endStream(ZSTD_CStream* zcs, ZSTD_outBuffer* output);
                    ^~~~~~~~~~~~~~
cc1: all warnings being treated as errors
[207/1596] Compiling C object 'src/journal/da05bd7@@journal-client@sta/journal-file.c.o'.
ninja: build stopped: subcommand failed.
make: *** [Makefile:2: all] Error 1

As far as I know, Debian Buster is still used on Semaphore CI so to catch this automatically (and to make sure it's gone once it's fixed) could you add libzstd-dev to the list of dependencies installed there:

diff --git a/semaphoreci/semaphore-runner.sh b/semaphoreci/semaphore-runner.sh
index 04f6ee2605..b15c043847 100755
--- a/semaphoreci/semaphore-runner.sh
+++ b/semaphoreci/semaphore-runner.sh
@@ -36,7 +36,7 @@ apt-get -q --allow-releaseinfo-change update
 apt-get -y dist-upgrade
 apt-get install -y eatmydata
 # The following four are needed as long as these deps are not covered by Debian's own packaging
-apt-get install -y libfdisk-dev libp11-kit-dev libssl-dev libpwquality-dev
+apt-get install -y libfdisk-dev libp11-kit-dev libssl-dev libpwquality-dev libzstd-dev
 apt-get purge --auto-remove -y unattended-upgrades
 systemctl unmask systemd-networkd
 systemctl enable systemd-networkd

?

@evverx
Copy link
Member

evverx commented Apr 27, 2020

It would be interesting to see how it fares on Ubuntu CI because it's the only CI where non-amd64 architectures are covered. @ddstreet would it be possible to install libzstd-dev there at least temporarily?

src/journal/compress.c Outdated Show resolved Hide resolved
@nolange
Copy link
Contributor Author

nolange commented Apr 28, 2020

Lotsa changes... rebase because of formatting in meson.build, +-ZSTDwill be displayed in the features, added ZSTD to test-compress, fixed test-compress to build without warning if LZ4 is disabled, check returnvalue of ZSTD_CCtx_setParameter with ZSTD_isError, fixed for 1.3.x (tested coredump with 1.3.1), added libstd-dev for the CI builds

@nolange
Copy link
Contributor Author

nolange commented Apr 28, 2020

Any comments on the 2nds post meanwhile? Those are the bigger things IMHO.

  1. lots of tools depend on liblz4, libxz, .... I guess this is for static linking, as meson wont handle transitive dependencies?
    Currently only coredumpd and coredumpctl would really need libzstd.
  2. What about using dlopen to resolve the compression libraries when needed?
  3. Perhaps allow [true, false, dlopen, auto] as option for compressors?
  4. Those compressors would be better moved out of the journal into basic (or shared)

src/basic/macro.h Outdated Show resolved Hide resolved
src/journal/compress.c Show resolved Hide resolved
src/journal/compress.c Outdated Show resolved Hide resolved
src/journal/compress.c Outdated Show resolved Hide resolved
src/journal/compress.c Outdated Show resolved Hide resolved
@shawnl
Copy link
Contributor

shawnl commented Apr 30, 2020

not storing the coredump before compressing

I looked into this, and I get the feeling that coredumps are done very quite silly by the kernel. As long as everything is PIE we can just launch the coredump handler in the same address space as the program was in----all inside of the signal handler (which is safe because we never return from a core dump triggering signal handler), and this would make the kernel's job much easier too.

@nolange
Copy link
Contributor Author

nolange commented Apr 30, 2020

not storing the coredump before compressing

I looked into this, and I get the feeling that coredumps are done very quite silly by the kernel. As long as everything is PIE we can just launch the coredump handler in the same address space as the program was in----all inside of the signal handler (which is safe because we never return from a core dump triggering signal handler), and this would make the kernel's job much easier too.

"As long as everything is PIE"... that's already a steep requirement.
What I would expect is taking the code from elfutils, doing the same as eu-stack -p PID would do (uses PTRACE, so that capability is necessary).

ie.:

  • use the /proc filesystem for stacktraces (fork a process to guard against crashes)
  • store the coredump either compressed or uncompressed (sparse!). Or not at all.

@ddstreet
Copy link
Contributor

@ddstreet thank you! Could you also install zstd there? I didn't know at the time that the test is skipped if zstdcat isn't installed. Sorry about that.

sure, just added 'zstd' to the list of packages to install for the 'upstream' and 'root-unittests' autopkgtests, as well as build-time deps, since the tests are run at build time too.

meson.build Outdated Show resolved Hide resolved
@evverx
Copy link
Member

evverx commented May 1, 2020

Looks like https://github.com/systemd/systemd/pull/8207/files#diff-969b60ad3d206fd45c208e266ccfed38L3106-L3111 got lost along the way. @nolange could you bring it back?

@evverx
Copy link
Member

evverx commented May 1, 2020

Interestingly, test-compress fails with

/* testing ZSTD compression */
/* create source from /dev/fd/63 */
/* test compression */
ZSTD compression finished (0 -> 13 bytes, inf%)
/* test decompression */
ZSTD decompression finished (13 -> 0 bytes, 0.0%)
/* test faulty decompression */
ZSTD decoder failed: Unknown frame descriptor
ZSTD decompression finished (13 -> 0 bytes, 0.0%)
Assertion 'r == -EFBIG' failed at src/journal/test-compress.c:223, function test_compress_stream(). Aborting.
Aborted (core dumped)

if an empty file is passed to it. I'm not sure whether it has anything to do with this PR though.

@nolange
Copy link
Contributor Author

nolange commented May 3, 2020

if an empty file is passed to it. I'm not sure whether it has anything to do with this PR though.

Faulty testcase (with file len 0), max_size will wrap to a huge number (max of size_t).

        r = decompress(dst, dst2, st.st_size - 1);
        assert_se(r == -EFBIG);

@nolange
Copy link
Contributor Author

nolange commented May 3, 2020

rebased verson pushed, support for zstd 1.3.x was kicked out. Please either give me concrete information for adding further CI stuff or handle this in another PR/commit, playing ping/pong to get this done ain't an efficient use of anyones time.

@evverx
Copy link
Member

evverx commented May 3, 2020

playing ping/pong to get this done ain't an efficient use of anyones time.

I'm not sure what "ping/pong" is in this context. Based on one of your comments my understanding was that you knew how to install libzstd-1.4* on Debian Buster and I refrained from giving detailed instructions. I seem to have misread that comment. Sorry about that.

Please either give me concrete information for adding further CI stuff or handle this in another PR/commit

I'll fix it later.

@nolange
Copy link
Contributor Author

nolange commented May 3, 2020

playing ping/pong to get this done ain't an efficient use of anyones time.

I'm not sure what "ping/pong" is in this context. Based on one of your comments my understanding was that you knew how to install libzstd-1.4* on Debian Buster and I refrained from giving detailed instructions. I seem to have misread that comment. Sorry about that.

I know how to do it in Buster, I dont know what happens in semaphore (which also drops all debian repos later and hooks in ubuntu ppas).
I dont know how I would test it either, other than pushing a commit so Id get a response someday tomorrow.

@evverx
Copy link
Member

evverx commented May 4, 2020

In case you're interested https://github.com/systemd/systemd/blob/master/semaphoreci/semaphore-runner.sh controls what happens on Semaphore CI. The idea was to put the 100-line bash script in the repository and keep it here so that anyone could read and edit it should the need arise. It appears it can get mixed up with Ubuntu CI. I'll try to add more comments there to make it clear that it has nothing to with Ubuntu CI.

Copy link
Member

@poettering poettering left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks excellent, one typo though

README Outdated Show resolved Hide resolved
@poettering poettering added good-to-merge/with-minor-suggestions and removed reviewed/needs-rework 🔨 PR has been reviewed and needs another round of reworks labels May 4, 2020
this will hook libzstd into coredump,
using this format as default.
@poettering poettering added good-to-merge/waiting-for-ci 👍 PR is good to merge, but CI hasn't passed at time of review. Please merge if you see CI has passed and removed good-to-merge/with-minor-suggestions labels May 4, 2020
@evverx
Copy link
Member

evverx commented May 4, 2020

The unit tests passed on Ubuntu CI before the typo was fixed so it looks like it should be good to go.

@evverx evverx merged commit 80cf501 into systemd:master May 4, 2020
@nolange nolange deleted the add_zstd_coredump branch May 4, 2020 20:39
jackpot51 pushed a commit to pop-os/systemd that referenced this pull request Sep 4, 2020
steve-pexip pushed a commit to pexip/os-systemd that referenced this pull request Feb 17, 2021
systemd (247.3-1) unstable; urgency=medium

  [ Michael Biebl ]
  * New upstream version 247.3
  * Rebase patches

  [ Ioanna Alifieraki ]
  * systemctl: return error code when scheduled shutdown fails

systemd (247.2-5) unstable; urgency=medium

  [ Matthias Klumpp ]
  * Configure localed to run locale-gen to generate missing locale.
    This applies an (upstreamed) patch to permit systemd-localed to run
    locale-gen to generate missing locale when requested to switch the
    system locale.
    This makes localectl usable on Debian for changing locale without
    breaking system localization or even prevent certain applications from
    running at all after switching to a non-generated locale.

  [ Michael Biebl ]
  * systemctl: do not shutdown immediately on scheduled shutdown.
    When, for whatever reason, a scheduled shutdown fails to be set, systemd
    will proceed with immediate shutdown without allowing the user to react.
    This is counterintuitive because when a scheduled shutdown is issued,
    it means the user wants to shutdown at a specified time in the future,
    not immediately. (Closes: #931235)
  * test: disable DnsmasqClientTest.test_resolved_etc_hosts in
    networkd-test.py.
    This test appears to be flaky.
    See: #979716
  * Bump Standards-Version to 4.5.1
  * Set upstream metadata fields: Bug-Submit, Bug-Database, Repository,
    Repository-Browse

systemd (247.2-4) unstable; urgency=medium

  * Move libraries and NSS modules from /lib to /usr/lib.
    Keep libpam_systemd.so installed in /lib, as PAM doesn't support
    loading PAM modules from /usr/lib on a split-usr system.

systemd (247.2-3) unstable; urgency=medium

  * test: use modern qemu numa arguments
    This fixes TEST-36-NUMAPOLICY from the upstream autopkgtest when using
    qemu >= 5.2.
  * Increase timeout when running unit tests.
    The default timeout for individual unit tests is 30s. On slower
    architectures and environments like reproducible-builds, this sometimes
    is not enough.
    Instead of fine-tuning the timeout for each individual test, we instead
    increase the timeouts by a factor of 10.
  * init-functions, getty-static.service: Don't hard-code path to systemctl
    binary.
    This should simplify an eventual move of systemctl from /bin to
    /usr/bin.
  * getty-static.service: Skip if dbus-broker is installed.
    Check for the binary in /usr/bin as this makes it easier to move the
    service files from /lib/systemd to /usr/lib/systemd.

systemd (247.2-2) unstable; urgency=medium

  * Switch to "unified" cgroup hierarchy (i.e. cgroupv2) (Closes: #943981)

systemd (247.2-1) unstable; urgency=medium

  [ Balint Reczey ]
  * debian/systemd.NEWS: Mention udev rules changes in 247

  [ Michael Biebl ]
  * New upstream version 247.2
  * Rebase patches
  * test: fix fd_is_mount_point() check

systemd (247.1-4) unstable; urgency=medium

  [ наб ]
  * debian/extra/kernel-install.d/85-initrd.install: Don't install initrd when
    an explicit path was passed (Closes: #970213)
  * debian/extra/kernel-install.d/85-initrd.install: Match initrd installation
    messages and uninstallation to 90-loaderentry.install

  [ Michael Biebl ]
  * sd-device: keep escaped strings in DEVLINK= property (Closes: #976699)

systemd (247.1-3) unstable; urgency=medium

  * d/t/timedated: Ignore return code of dbus-monitor in wait_mon()
    We are not really interested in the return code and error messages from
    dbus-monitor after killing it, so ignore them to avoid undesired
    autopkgtest failures.

systemd (247.1-2) unstable; urgency=medium

  [ Michael Biebl ]
  * Upload to unstable
  * Revert "d/t/timedated: use /bin/bash to work around job handling issue in
    dash"

  [ Balint Reczey ]
  * debian/tests/timedated: Wait for the killed child only.
    There may be other children of the script due to autopkgtest machinery
    and they exit after the script exited. (LP: #1904406)

systemd (247.1-1) experimental; urgency=medium

  * New upstream version 247.1

systemd (247-1) experimental; urgency=medium

  * New upstream version 247
  * Rebase patches
  * Update symbol versions for the v247 release

systemd (247~rc2-3) experimental; urgency=medium

  * Merge changes from unstable
  * sd-device: make sd_device_has_current_tag() compatible with udev database
    generated by older udevd
    (Closes: #974730)
  * Add Breaks: udev (<< 247~) to systemd.
    This ensures that udev is upgraded alongside systemd and both support
    the new udev tags concept introduced in v247. (Closes: #975554)

systemd (247~rc2-2) experimental; urgency=medium

  * missing: define several syscall numbers for MIPS arch (Closes: #974619)

systemd (247~rc2-1) experimental; urgency=medium

  [ Michael Biebl ]
  * New upstream version 247~rc2
    - tmpfiles: Handle filesystems without ACL support in more cases
      (Closes: #972135)
  * Rebase patches
  * Explicitly disable oomd
  * Use -Dmode=release as we want a release, not developer, build
  * Update symbols file for libudev1 and libsystemd0

  [ Luca Boccassi ]
  * systemd-container: install systemd-dissect binary.
    Required for TEST-50-DISSECT since:
    systemd/systemd#16046
  * d/t/control: install squashfs-tools for upstream test.
    Required by TEST-50-DISSECT since upstream PR:
    systemd/systemd#16046

  [ Dan Streetman ]
  * d/control: update meson minimum version
    systemd/systemd#13842 (comment)
  * d/t/upstream: convert 'blacklist' term to 'deny-list'
    Support transition for upstream-ci from
    systemd/systemd#16262

systemd (246.6-5) unstable; urgency=medium

  * Drop non-functional DefaultTasksMax patch.
    This patch was supposed to remove the DefaultTasksMax limit, but lost
    its actual logic over 4 years ago, when the patches were rebased for the
    v231 release. Since nobody has complained so far, we can assume it is
    safe to drop this patch. (Closes: #975335)
  * test-seccomp: accept ENOSYS from sysctl(2) too.
    It seems that kernel 5.9 started returning that.
  * test/test-functions: copy /usr/lib/pam.d into $initdir.
    The systemd-user file has been moved from /etc/pam.d into /usr/lib/pam.d,
    so test-functions needs to copy it from /usr/lib/pam.d instead.

systemd (246.6-4) unstable; urgency=medium

  * Revert "Trigger a systemctl daemon-reload when init scripts are installed
    or removed"
    Remove the dpkg file trigger which called systemctl daemon-reload whenever
    a SysV init script was installed. We have proper support in debhelper
    nowadays which makes this superfluous and we want to avoid unnecessary
    systemctl daemon-reload calls.

systemd (246.6-3) unstable; urgency=medium

  * pam: include pam_keyinit session module in systemd-user.
    We want that systemd --user gets its own keyring, not the basic keyring
    set up by systemd --system.
  * pam: move systemd-user PAM config from /etc/pam.d to /usr/lib/pam.d.
    This is supported since PAM 1.2 and we want as little files in /etc as
    possible.
  * init-functions: update LSB hook to not use ignore-dependencies
    job-mode=ignore-dependencies, as currently used in the LSB hook during
    bootup and shutdown, can have undesired side-effects, like changing the
    ordering of services and ultimately causing them to fail, due to unmet
    dependencies.
    So simplify that, and only apply --no-block on reload requests during
    bootup and shutdown. (Closes: #960594)
  * d/t/timedated: use /bin/bash to work around job handling issue in dash.
    See: #975010

systemd (246.6-2) unstable; urgency=medium

  * XDG autostart improvements
    - Add support for Path= in XDG Desktop File
    - Ignore more common XDG Desktop Entry fields
    - Lower most info messages to debug level (Closes: #968116)
  * Re-enable seccomp support on riscv64.
    This should be safe now, as the code has fallbacks for systems with
    older libseccomp versions.
  * Move sysusers.d/sysctl.d/binfmt.d/modules-load.d back to /usr.
    In Debian, late mounting of /usr is no longer supported, so it is safe
    to install those files in /usr.
    We want those facilities in /usr, not /, as this will make an eventual
    switch to a merged-usr setup easier. (Closes: #971282)
  * units: update serial-getty@.service to support 57600 baud rate
    (Closes: #969144)
  * bootspec: don't fail with EIO if searching for ESP and finding one without
    an enveloping partition table
    (Closes: #970534)

systemd (246.6-1) unstable; urgency=medium

  * New upstream version 246.6
  * Rebase patches

systemd (246.5-1) unstable; urgency=medium

  * New upstream version 246.5
    - network: fix NDisc handling for the case when multiple routers exist
      (Closes: #969599)
    - core/socket: we may get ENOTCONN from socket_instantiate_service()
      (Closes: #970156)
  * Rebase patches

systemd (246.4-1) unstable; urgency=medium

  * New upstream version 246.4
  * Rebase patches

systemd (246.3-1) unstable; urgency=medium

  * New upstream version 246.3
  * Rebase patches

systemd (246.2-2) unstable; urgency=medium

  [ Balint Reczey ]
  * debian/systemd.postinst: Restart systemd-networkd.socket on incompatible
    change.
    PassCredentials=yes is replaced with PassPacketInfo=yes and extra padding is
    dropped, too.
    (Closes: #968589, LP: #1891716)

  [ Michael Biebl ]
  * Fix restart of systemd-networkd.socket.
    We can't restart the socket while systemd-networkd.service is still
    active. Instead we stop the socket and ensure, that a try-restart of
    systemd-networkd.service also starts the socket.
  * seccomp: Add support for riscv64 (Closes: #954312)
  * Support missing conditions/asserts everywhere (Closes: #968612)
  * path: Skip directories when finalising $PATH search (Closes: #969006)

systemd (246.2-1) unstable; urgency=medium

  * New upstream version 246.2
  * Remove resolvconf.conf drop-in, resolved integration moved to resolvconf
    package
  * Rebase patches
  * Add versioned Breaks against resolvconf (<< 1.83~) to systemd.
    The PathExists= directive was changed in v246 to match the documented
    behaviour but now causes resolvconf-pull-resolved.service to be
    continuously triggered by resolvconf-pull-resolved.path.
    This requires a fix in the resolvconf package, see #968015.
    (Closes: #967906)
  * Keep journal files compatible with older versions.
    Disable the KEYED-HASH journal feature by default and keep LZ4 (instead
    of ZSTD) as default compression for new journal files. Otherwise journal
    files are incompatible and can't be read by older journalctl
    implementations.
    This patch can be dropped in bullseye+1, as journalctl from bullseye
    will then be able to read journal files with those features.
    (Closes: #968055)

systemd (246.1-1) unstable; urgency=medium

  * New upstream version 246.1
  * Rebase patches

systemd (246-2) unstable; urgency=medium

  * Upload to unstable

systemd (246-1) experimental; urgency=medium

  * New upstream version 246
  * Rebase patches
  * Update symbols file for libsystemd0
  * Bump libapparmor-dev Build-Depends to (>= 2.13)
  * Disable libfido2 support.
    This is only used by homed which we don't enable.

systemd (245.7-1) unstable; urgency=medium

  [ Michael Biebl ]
  * New upstream version 245.7
    - resolve: enable RES_TRUSTAD towards the 127.0.0.53 stub resolver
      (Closes: #965371)
    - basic/cap-list: parse/print numerical capabilities
      (Closes: #964926)
  * Rebase patches

  [ Dan Streetman ]
  * Add libzstd-dev and zstd as build and test deps.
    systemd/systemd#15422

systemd (245.6-3) unstable; urgency=medium

  [ Dan Streetman ]
  * d/t/upstream: capture new merged 'system.journal' from tests.
    systemd/systemd#15281
  * d/t/upstream: use --directory or --file param for journalctl.
    Properly tell journalctl if the journal to parse is a dir or file.
  * d/t/storage: check for ext2 or ext4 fs when using crypttab 'tmp' option.
    systemd/systemd#15853

  [ Martin Pitt ]
  * debian/tests/localed-locale: Fix for environments without en_US.UTF-8.
    Unconditionally back up/restore locale configuration files and generate
    en_US.UTF-8. Previously the test failed in environments which have some
    locale other than en_US.UTF-8 in /etc/default/locale.
    Also fix the assertion of /etc/locale.conf not being present after
    localectl. This only applies to Debian/Ubuntu tests, not upstream ones.

  [ Dimitri John Ledkov ]
  * Enable EFI/bootctl on armhf.

systemd (245.6-2) unstable; urgency=medium

  [ Dan Streetman ]
  * 40-vm-hotadd.rules: check offline before onlining memory/cpus.
    The kernel will return EINVAL if the memory or cpu is already online,
    which is harmless, but adds a confusing error to the log. Avoid the error
    message by only onlining if the memory or cpu is currently offline.
    (LP: #1876018)

  [ Michael Biebl ]
  * d/t/boot-and-services: use canonical name for NetworkManager service
  * Fix build with libmicrohttpd 0.9.71.
    The return type of callbacks was changed from int to an enum.

  [ Youfu Zhang ]
  * fsckd: avoid useless CR displayed on console (LP: #1692353)

  [ Balint Reczey ]
  * dhclient-exit-hooks.d/timesyncd: Act only when systemd-timesyncd is available.
    Otherwise the hook script might trigger an error if the
    systemd-timesyncd package is uninstalled but not purged. (LP: #1873031)

systemd (245.6-1) unstable; urgency=medium

  [ Michael Biebl ]
  * New upstream version 245.6
  * Rebase patches

  [ Balint Reczey ]
  * debian/tests/boot-and-services: Handle missing fstab (LP: #1877078)

systemd (245.5-3) unstable; urgency=medium

  [ Michael Biebl ]
  * Bump priority of libnss-systemd to standard
  * logind: avoid shadow lookups when doing userdb client side
  * Disable DNSSEC support by default in resolved.
    The upstream default, DNSSEC=allow-downgrade can lead to compatibility
    issues with certain network access points. Previously, DNSSEC support
    was only turned off when built for a stable Debian release, but it is
    safer and more consistent to just generally change the default to
    DNSSEC=no. (Closes: #959996)
  * Bump debhelper compatibility level to 13.
    Use the debhelper-compat package to declare the compatibility level and
    drop debian/compat.
  * Convert to dh_installsystemd and disable dh_installsystemduser
  * Drop custom initramfs update code.
    Now handled by dh_installinitramfs which is enabled by default in compat
    level 12 and above.

  [ Dan Streetman ]
  * Cherry-pick fix from upstream master to adjust UseGateway= default
    - network: change UseGateway= default to UseRoutes= setting
    - network: honor SetDNSRoutes= even if UseGateway=False
    (LP: #1867375)

  [ Topi Miettinen ]
  * Delete empty lines at end of file.
    Upstream commit hooks don't allow empty lines and of course they serve no
    purpose.

systemd (245.5-2) unstable; urgency=medium

  * Cherry-pick various fixes from upstream master
    - network: add a flag to ignore gateway provided by DHCP server
    - userdb: when doing client-side NSS look-ups optionally avoid shadow
      look-ups
    - nss-systemd: don't synthesize root/nobody when iterating
    - core: make sure we don't get confused when setting TERM for a tty fd
    - core: make sure to restore the control command id, too
  * Install 60-block.rules in udev-udeb and initramfs-tools.
    The block device rules were split out from 60-persistent-storage.rules
    into its own rules file in v220. Those rules ensure that change events
    are emitted and the udev db is updated after metadata changes.
    Thanks to Pascal Hambourg (Closes: #958397)

systemd (245.5-1) unstable; urgency=medium

  [ Michael Biebl ]
  * New upstream version 245.5
  * Rebase patches

  [ Dan Streetman ]
  * Follow symlinks when finding link files to copy into initramfs.
    If the /{etc,lib}/systemd/network directory itself is a symlink, the find
    command will not actually find any of the files in the dir it links to.
    Use the find -L param to follow symlinks.
    (LP: #1868892)
  * Remove Ubuntu-specific ondemand.service.
    New processors handle scaling/throttling in internal firmware
    (e.g. intel_pstate), and do not require OS config.
    Additionally, nobody else does this, not even Debian.

systemd (245.4-4) unstable; urgency=medium

  * Drop Conflicts: virtualbox-guest-utils from systemd-timesyncd.
    Otherwise this could lead to virtualbox-guest-utils being uninstalled on
    upgrades which is not intended. (Closes: #956436)
  * pid1: automatically generate systemd-remount-fs.service deps, plus enable
    systemd-pstore from sysinit.target
  * Fix systemd-pstore.service enablement symlink on upgrades.
    It is now started via sysinit.target. Also clean up the symlink on
    purge.

systemd (245.4-3) unstable; urgency=medium

  [ Dan Streetman ]
  * d/rules: in dh_auto_test, include meson param --print-errorlogs.
    Also, don't cat testlog.txt; it's noisy and not very helpful.
    Upstream request:
    systemd/systemd#14338 (comment)

  [ Michael Biebl ]
  * pid1: by default make user units inherit their umask from the user manager
    (Closes: #945000)
  * user-util: rework how we validate user names.
    This reworks the user validation infrastructure. There are now two
    modes. In regular mode we are strict and test against a strict set of
    valid chars. And in "relaxed" mode we just filter out some really
    obvious, dangerous stuff. i.e. strict is whitelisting what is OK, but
    "relaxed" is blacklisting what is really not OK.
    The idea is that we use strict mode whenever we allocate a new user,
    while "relaxed" mode is used when we process users registered elsewhere.
    (Closes: #955541)

systemd (245.4-2) unstable; urgency=medium

  [ Balint Reczey ]
  * Ship systemd-timesyncd in a separate package.
    The new systemd-timesyncd package conflicting with other NTP-related
    packages resolves the problems arising when running systemd-timesyncd
    and other NTP servers on the same system.
    (LP: #1849156, Closes: #805927, #947936)

systemd (245.4-1) unstable; urgency=medium

  [ Michael Biebl ]
  * New upstream version 245.4
    - Allow names starting with a digit (Closes: #954174)
    - Recognize davfs as network file system (Closes: #954755)
  * Enable systemd-pstore.service by default on new installs and upgrades
    (Closes: #952767)
  * Revert "Enable seccomp support on riscv64"
    This requires further changes to the source code and a newer, not yet
    officially released, libseccomp. Since this complicates backports revert
    this change for the time being.

  [ Dan Streetman ]
  * d/t/logind: use grep -s when checking /sys/power/state.
    Some kernels in Ubuntu (e.g. linux-kvm) do not enable CONFIG_PM, which
    results in stderr output when the logind test tries to grep the power
    state file, causing the test to fail.  The test already handles skipping
    the test if suspend isn't supported, so just use -s to suppress grep
    from printing to stderr if the file doesn't exist.

systemd (245.2-1) unstable; urgency=medium

  * New upstream version 245.2
  * Rebase patches
  * Enable seccomp support on riscv64 (Closes: #954077)
  * Drop migration code for the switch from DynamicUser=yes to no.
    This code is no longer needed as it only affected systems between 239-1
    and 239-5, i.e. it never affected a stable release.

systemd (245-2) unstable; urgency=medium

  * Revert "job: Don't mark as redundant if deps are relevant"
    This change negatively affects plymouth which was no longer properly
    stopped after the system has completed booting. The running plymouth
    daemon can trigger a VT switch (to tty1). (Closes: #953670)

systemd (245-1) unstable; urgency=medium

  [ Balint Reczey ]
  * New upstream version 245
  * Refresh patches
  * Update symbols

  [ Michael Biebl ]
  * Disable repart, userdb, homed, fdisk, pwquality, p11kit feature.
    Those are new features which drag in new dependencies and need further
    review first.
  * analyze: Fix table time output
  * execute: Fix migration from DynamicUser=yes to no
  * Drop manual clean up of /var/lib/private/systemd/timesync.
    This is now done properly by systemd itself when a service switches from
    DynamicUser=yes to no.

systemd (244.3-1) unstable; urgency=medium

  * New upstream version 244.3
    - Revert "Support Plugable UD-PRO8 dock"
      Unfortunately the same usb hub is used in other places, and causes
      numerous regressions. (Closes: #951330)

systemd (244.2-1) unstable; urgency=medium

  [ Michael Biebl ]
  * New upstream version 244.2
    - polkit: when authorizing via PolicyKit re-resolve callback/userdata
      instead of caching it (CVE-2020-1712, Closes: #950732)
  * Rebase patches
  * Bump Standards-Version to 4.5.0

  [ Balint Reczey ]
  * Remove empty /var/log/journal/ on purge

systemd (244.1-3) unstable; urgency=medium

  * Update documentation regarding network interface naming.
    Document that 73-usb-net-by-mac.link needs to be masked together with
    99-default.link if one wants to disable the systemd naming scheme and keep
    the kernel-provided names. (Closes: #946196)
  * Update debian/rules clean target to remove all Python bytecode
  * Update systemd package description.
    Recommend init=/lib/systemd/systemd instead of init=/bin/systemd.
    The latter is just a compat symlink which might go away eventually.
  * shared/dropin: fix assert for invalid drop-in.
    Fixes an assertion when running systemctl cat on inexistent
    unit templates. (Closes: #950489)
  * core: call dynamic_user_acquire() only when 'group' is non-null.
    Fixes an assertion in systemd which could happen if a unit is reloaded
    and the unit is in bad-setting state. (Closes: #950409)
  * Don't fail upgrade if /proc is not mounted.
    Applying ACLs on /var/log/journal via systemd-tmpfiles requires a
    mounted /proc. Skip this step if /proc is not available, e.g. in a
    chroot. (Closes: #950533)

systemd (244.1-2) unstable; urgency=medium

  * Report status of libpam-systemd and libnss-systemd in systemd reportbug
    template.
    Since the libpam-systemd Recommends was moved from systemd to
    systemd-sysv we no longer get this information automatically, so request
    it explicitly.
  * Drop btrfs-progs Recommends from systemd-container.
    Upstream has dropped the logic of setting up /var/lib/machines as btrfs
    loopback mount so this Recommends is no longer necessary.
  * Fix processing of dpkg triggers in systemd.
    We need to use $@ instead of "$@" so we can iterate through the
    individual trigger names which are passed as a space separated list in
    the second argument.
  * Fix cleanup of timesyncd state directory
  * Enable persistent journal.
    Create /var/log/journal on upgrades and new installs. This enables
    persistent journal in auto mode. (Closes: #717388)

systemd (244.1-1) unstable; urgency=medium

  [ Michael Biebl ]
  * New upstream version 244.1
    - network: fix segfault in parsing SendOption= (Closes: #946475)
  * core: don't allow perpetual units to be masked (Closes: #948710)

  [ Balint Reczey ]
  * debian/watch: Switch to watch tags at github.com/systemd/systemd-stable.
    Upstream point releases appear there.

  [ Helmut Grohne ]
  * Add basic support for the noinsttest build profile
  * Annotate dbus build dependency with <!noinsttest>
    The dbus library is needed for building tests. As such it must be
    present unless we disable both build time and installed tests.
    Previously, building with the nocheck profile worked, but it didn't
    reproduce a regular build.

systemd (244-3) unstable; urgency=medium

  * Update udev-udeb to use 73-usb-net-by-mac.link

systemd (244-2) unstable; urgency=medium

  * Add lintian override for udev.
    60-autosuspend-chromiumos.rules triggers a udev-rule-missing-subsystem
    warning. This is a false positive, as SUBSYSTEM is tested at the
    beginning of the rules file.
  * Add lintian override for systemd-container
    systemd-nspawn@.service triggers a
    systemd-service-file-refers-to-unusual-wantedby-target warning but
    nspawn containers are supposed to be started via machines.target.
  * Make it easier to override MAC based name policy for USB network adapters.
    Replace 73-usb-net-by-mac.rules with 73-usb-net-by-mac.link. The .link
    file provides the same functionality but makes it easier to set a custom
    name for USB network adapters via the systemd.link mechanism.
    Thanks to Benjamin Poirier (Closes: #941636)
  * Move libpam-systemd Recommends from systemd to systemd-sysv.
    libpam-systemd is only really useful if systemd is PID 1 and the systemd
    package should be installable without affecting another installed init
    system. (Closes: #926316)
  * Upload to unstable

systemd (244-1) experimental; urgency=medium

  * New upstream version 244
    - udev: do not propagate error when executing PROGRAM and IMPORT{program}
      (Closes: #944675)
    - sd-event: don't invalidate source type on disconnect
      (Closes: #945332)
  * Rebase patches

systemd (243-9) unstable; urgency=medium

  [ Daniel Kahn Gillmor ]
  * resolved: fix connection failures with TLS 1.3 and GnuTLS (Closes: #945507)

systemd (243-8) unstable; urgency=medium

  * udevadm: ignore EROFS and return earlier.
    Fixes failures of "udevadm trigger" in containers with a readonly /sys.
    (Closes: #944860)
  * udev: silence warning about PROGRAM+= or IMPORT+= rules (Closes: #944917)
  * man: add entry about SpeedMeter= (Closes: #944597)
  * udev: drop SystemCallArchitectures=native from systemd-udevd.service.
    We can't really control what helper programs are run from other udev
    rules. E.g. running i386 binaries under amd64 is a valid use case and
    should not trigger a SIGSYS failure. (Closes: #869719)

systemd (243-7) unstable; urgency=medium

  * Fix build failure on arm64 with libseccomp >= 2.4.2

systemd (243-6) unstable; urgency=medium

  * Revert "sysusers: properly mark generated accounts as locked"
    We shouldn't lock the accounts because people actually need to use them, and
    if they are locked, various tools will refuse.
  * udev: ignore error caused by device disconnection.
    During an add or change event, the device may be disconnected.
    (Closes: #944586)
  * udev: do not append newline when writing attributes

systemd (243-5) unstable; urgency=medium

  * Switch default hierarchy (back) to hybrid.
    Since v243, the new upstream default is unified, but this still causes
    regressions in important packages, like LXC or Docker, so switch the
    default back to hybrid for now.
  * Drop masks for SysV init scripts that have been dropped
  * Drop masks for SysV init scripts provided by initscripts and bootlogd
  * logind: fix emission of PropertiesChanged signal for users and seats
  * Bump Standards Version to 4.4.1
  * Upload to unstable

systemd (243-4) experimental; urgency=medium

   * Merge changes from unstable branch

systemd (243-3) experimental; urgency=medium

  * Import patches from v243-stable branch (up to ef677436aa)

systemd (243-2) experimental; urgency=medium

  * Import patches from v243-stable branch (up to fab6f010ac)

systemd (243-1) experimental; urgency=medium

  * New upstream version 243
  * Merge changes from unstable branch

systemd (243~rc2-1) experimental; urgency=medium

  * New upstream version 243~rc2
    - man: document that "systemd-analyze blame/critical-chain" is not useful
      to track down job latency. (Closes: #920234)
    - systemctl: process all units matched by a glob in the cat verb by
      default. (Closes: #904913)
    - units: automatically revert to /run logging on shutdown if necessary.
      Prevents /var staying busy on shutdown due to journald.
      (Closes: #851402)
    - bash-completion: don't sort syslog priorities. (Closes: #913222)
    - man: add example for setting multiple properties at once.
      (Closes: #807464)
  * Rebase patches
  * Update symbols file for libsystemd0
  * core: stop removing non-existent and duplicate lookup paths
  * Install static-nodes-permissions.conf tmpfile in udev

systemd (242-8) unstable; urgency=medium

  [ Dan Streetman ]
  * d/extra/rules/73-special-net-names.rules: use $$ instead of $ in PROGRAM=
    value.
    Fixes incorrect variable substitution.
  * Rework and improve blacklist handling in debian/tests/upstream

  [ Balint Reczey ]
  * Various improvements to debian/extra/checkout-upstream making it more
    straightforward to override the default behaviour
  * Use package version as systemd's reported version (LP: #1849158)

  [ Michael Biebl]
  * debiant/tests/udev: replace deprecated ADTTMP with AUTOPKGTEST_TMP

systemd (242-7) unstable; urgency=medium

  * sleep: properly pass verb to sleep script
  * core: factor root_directory application out of apply_working_directory.
    Fixes RootDirectory not working when used in combination with User.
    (Closes: #939408)
  * shared/bus-util: drop trusted annotation from
    bus_open_system_watch_bind_with_description().
    This ensures that access controls on systemd-resolved's D-Bus interface
    are enforced properly.
    (CVE-2019-15718, Closes: #939353)

systemd (242-6) unstable; urgency=medium

  [ Dan Streetman ]
  * d/t/control: upstream test requires qemu-system-ppc on ppc64el
  * d/t/control: install seabios for upstream test.
    Some archs (at least arm64) qemu implementation require the vga bios.

  [ Michael Biebl ]
  * Drop unused lintian override
  * network: fix ListenPort= in [WireGuard] section (Closes: #936198)
  * d/e/r/73-usb-net-by-mac.rules: import net.ifnames only for network devices
    (Closes: #934589)
  * d/e/r/73-usb-net-by-mac.rules: skip if iface name was provided by
    user-space
  * Drop dbus activation stub service.
    Since dbus 1.11.0, a dbus-daemon that is run with --systemd-activation
    automatically assumes that o.fd.systemd1 is an activatable service.
    As a result, with a new enough dbus version,
    /usr/share/dbus-1/services/org.freedesktop.systemd1.service and
    /usr/share/dbus-1/system-services/org.freedesktop.systemd1.service
    become unnecessary and can be removed. (Closes: #914015)
  * Revert "core: check start limit on condition checks too"
    If a unit was referenced too often, it hit the restart limit and the
    unit was marked as failed. Fixes a regression introduced in v242.
    (Closes: #935829)

  [ Michael Prokop ]
  * README.Debian: document KillUserProcesses behavior in Debian

systemd (242-5) unstable; urgency=medium

  [ Dan Streetman ]
  * d/rules: add CONFFGLAGS_UPSTREAM to dh_auto_configure -- params

  [ Michael Biebl ]
  * core: never propagate reload failure to service result.
    Fixes a regression introduced in v239 where the main process of a
    service unit gets killed on reload if ExecReload fails. (Closes: #936032)
  * shared/seccomp: add sync_file_range2.
    Some architectures need the arguments to be reordered because of alignment
    issues. Otherwise, it's the same as sync_file_range.
    Fixes sync_file_range failures in nspawn containers on arm, ppc.
    (Closes: #935091)
  * bash-completion: don't sort syslog priorities.
    By default, the available completions are sorted alphabetically, which
    is counterproductive in case of syslog priorities. Override the default
    behavior using the `nosort` option. (Closes: #913222)
  * test-bpf: skip test when run inside containers

systemd (242-4) unstable; urgency=medium

  * Upload to unstable

systemd (242-3) experimental; urgency=medium

  [ Dan Streetman ]
  * d/t/boot-and-services: fix test_failing()
  * d/t/boot-and-services: check for any kernel message, not just first kernel
    message (Closes: #929730)
  * d/t/upstream: add TEST-30, TEST-34 to blacklist
  * d/t/timedated: replace systemctl is-active with systemctl show
  * d/t/control: root-unittests can break networking, add breaks-testbed
  * d/t/control: mark udev test skippable
  * d/t/upstream: always cleanup after (and before) each test
  * d/t/control: upstream test requires dmeventd
  * d/e/checkout-upstream: don't remove .git
  * d/e/checkout-upstream: move change to debian/ files above other changes
  * d/e/checkout-upstream: add UPSTREAM_KEEP_CHANGELOG param
  * d/e/checkout-upstream: create git commits for each change
  * d/e/checkout-upstream: switch from 'quilt' to 'native' format
  * d/e/checkout-upstream: set user.name, user.email if unset
  * d/t/storage: change plaintext_name to include testname
  * d/t/storage: increase wait for plaintext_dev from 5 to 30 seconds
  * d/t/storage: wait for service to start, only stop if active
  * d/t/storage: don't search for 'scsi_debug' in ask_password
  * d/t/storage: manage scsi_debug using add_hosts (Closes: #929728)
  * d/t/storage: use short timeout waiting for scsi_debug block dev to appear
  * d/t/storage: convert password agent into normal Thread
  * d/t/storage: fail if socket info not in ask_password contents
  * d/t/boot-smoke: pass failure reason to fail() to print instead of separate
    echo
  * d/t/boot-smoke: in fail() set +e so errors are ignored while gathering
    data
  * d/t/boot-smoke: gather still running jobs in fail()
  * d/t/boot-smoke: wait for is-system-running
  * d/t/boot-smoke: call fail if pidof polkitd fails
  * d/t/boot-smoke: remove check for running jobs

  [ Michael Biebl ]
  * d/t/boot-smoke: check for NetworkManager instead of D-Bus activated
    polkitd (Closes: #934992)

systemd (242-2) experimental; urgency=medium

  [ Michael Biebl ]
  * Drop dependency on lsb-base.
    It is only needed when booting with sysvinit and initscripts, but
    initscripts already Depends on lsb-base (see #864999).
  * Stop removing enablement symlinks in /etc/systemd/system.
    With v242 this is no longer necessary as `ninja install` will no longer
    create those symlinks.
  * Replace manual removal of halt-local.service with upstream patch

  [ Dimitri John Ledkov ]
  * Build manpages in .deb variant.
    Upstream snapshots are switching to building manpages off by default.

  [ Luca Boccassi ]
  * Enable portabled and install related files in systemd-container.
    Keep disabled for the udeb profile. (Closes: #918606)

systemd (242-1) experimental; urgency=medium

  * New upstream version 242
    - Change ownership/mode of the execution directories also for static users
      (Closes: #919231)
    - A new boolean sandboxing option RestrictSUIDSGID= has been added that is
      built on seccomp. When turned on, creation of SUID/SGID files is
      prohibited. The NoNewPrivileges= and the new RestrictSUIDSGID= options
      are now implied if DynamicUser= is turned on for a service.
      (Closes: #928102, CVE-2019-3843, CVE-2019-3844)
  * Drop Revert-udev-network-device-renaming-immediately-give.patch.
    This patch needs ongoing maintenance work to be adapted to new releases
    and fails to apply with v242. Instead of investing more time into it we
    are going to drop the patch as it was a hack anyway.
  * Rebase patches
  * Drop pre-stretch migration code
  * Drop /sbin/udevadm compat symlink (Closes: #852580)
  * socket-util: Make sure flush_accept() doesn't hang on unexpected
    EOPNOTSUPP
  * Enable regexp matching support in journalctl using pcre2 (Closes: #898892)
  * Switch from libidn to libidn2 (Closes: #928615)

systemd (241-7) unstable; urgency=medium

  [ Michael Biebl ]
  * network: Fix failure to bring up interface with Linux kernel 5.2.
    Backport two patches from systemd master in order to fix a bug with 5.2
    kernels where the network interface fails to come up with the following
    error: "enp3s0: Could not bring up interface: Invalid argument"
    (Closes: #931636)
  * Use /usr/sbin/nologin as nologin shell.
    In Debian the nologin shell is installed in /usr/sbin, not /sbin.
    (Closes: #931850)

  [ Mert Dirik ]
  * 40-systemd: Don't fail if SysV init script uses set -u and $1 is unset
    (Closes: #931719)
@trentbuck
Copy link

  • The journal format itself seems rather unfit to tack on compression. Likely alot better results can be archived if the FS just does compression transparently.

FYI, here's some actual numbers for the current status quo, since I didn't see anyone else posting them.

The systemd-journal is running with its default settings as at Debian 12 / systemd 252. The parent /var/log dataset is traditional text/plain log files generated by rsyslogd, nginx, &c. A single system.journal shows 40MiB uncompressed / 9MiB compressed. Most other datasets see compressratio of 1.01x (movies, photos) to 2.00x (OS, office docs, SQL DBs). collectd/rrdtool databases can go as high as 12.00x.

IIRC systemd-journal compresses per-journal-event, whereas filesystem-level transparent compression compresses per-filesystem-block. So it makes sense that OS-level compression will always show much better compression ratios.

cyber@obese:~$ zfs list -o compression,compressratio,referenced,logicalreferenced,name | sed -n '1p; /log/p'
COMPRESS        RATIO     REFER  LREFER  NAME
zstd            8.07x     1.47G   14.5G  obese/heavy/var/log
zstd            6.69x     58.2M    453M  obese/heavy/var/log/journal
zstd            4.97x     26.0M   92.4M  obese/light/var/log
zstd            5.08x      737M   2.56G  obese/light/var/log/journal
zstd            5.12x     6.09M   17.6M  obese/obese/var/log
zstd            5.24x      410M   2.12G  obese/obese/var/log/journal

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
coredump good-to-merge/waiting-for-ci 👍 PR is good to merge, but CI hasn't passed at time of review. Please merge if you see CI has passed
Development

Successfully merging this pull request may close these issues.

None yet

9 participants