summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2015-10-23test-compress-benchmark: properly initialize bufferZbigniew Jędrzejewski-Szmek
We were compressing unitialized memory, which should not result in any problems, but is inelegant.
2015-10-23test-compress-benchmark: limit default runtime to 2 seconds per subtestZbigniew Jędrzejewski-Szmek
If both lz4 and xz are enabled, this results in a limit of 2×3×2 s ~= 12 s runtime. Previous implementation started with really small buffer sizes. When combined with a short time limit this resulteded in abysmal results for xz. It seems that the initialization overead is really significant for small buffers. Since xz will not be used by default anymore, this does not seem worth fixing. Instead buffer sizes are changed to run a pseudo-random non-repeating pattern. This should allow reasonable testing for all buffer sizes. For testing, both runtime and the buffer size seed can be specified on the command line. Sufficiently large runtime allows all buffer sizes up to 1MB to be tested.
2015-10-14build-sys: enable lz4 by default if availableZbigniew Jędrzejewski-Szmek
--enable-lz4 can be used to force lz4 requirement, --disable-lz4 can be used to skip lz4 support even if available. Also, make surrounding checks for bzip2, xz, and zlib similar in structure. This fixes the check for requested but missing bzip2.
2015-10-14compress: return errors without logging, do not fake errnoZbigniew Jędrzejewski-Szmek
Logging for compression and decompression is assymetrical on purpose: if compiled without some type of compression, those compression code paths should never be invoked. OTOH, it is possible to encounter unsupported format on decompression, so leave those log_debug statements in, to make it easier to diagnose stuff.
2015-10-14compress: fix mmap error handlingZbigniew Jędrzejewski-Szmek
2015-10-10test-compress-benchmark: test three cases (zeros, simple, semi-random)Zbigniew Jędrzejewski-Szmek
Existing test would use highly-compressible repeatable input. Two types of input are added: - zeros - random blocks interspersed with zeros The idea is to get more information about behaviour in various cases. On Intel Xeon the results are: % ./test-compress-benchmark XZ/zeros: compressed & decompressed 2535301373 bytes in 32.56s (74.26MiB/s), mean compresion 99.96%, skipped 3160 bytes LZ4/zeros: compressed & decompressed 2535304362 bytes in 1.16s (2088.69MiB/s), mean compresion 99.60%, skipped 171 bytes XZ/simple: compressed & decompressed 2535300963 bytes in 30.42s (79.48MiB/s), mean compresion 99.95%, skipped 3570 bytes LZ4/simple: compressed & decompressed 2535303543 bytes in 1.22s (1978.86MiB/s), mean compresion 99.60%, skipped 990 bytes XZ/random: compressed & decompressed 381756649 bytes in 60.02s (6.07MiB/s), mean compresion 39.64%, skipped 27813723 bytes LZ4/random: compressed & decompressed 2507385036 bytes in 0.97s (2477.52MiB/s), mean compresion 54.77%, skipped 27919497 bytes If someone has ideas for more realistic test cases, they can be easily added to this framework.
2015-10-10coredump: use lz4frame api to compress coredumpsZbigniew Jędrzejewski-Szmek
This converts the stream compression to use the new lz4frame api, compatible with lz4cat. Previous code used custom headers, so the compressed file was not compatible with lz4 command line tools. I considered this the last blocker to using lz4 by default. Speed seems to be reasonable, although a bit (a few percent) slower than the lz4 binary, even though compression is the same. I don't consider this important. It could be caused by the overhead of library calls, but is probably caused by slightly different buffer sizes or such. The code in this patch uses mmap, since since this allows the buffer to be reused while not making the code more complicated at all. In my testing, this version is noticably faster (~20%) than a naive single-buffered version. mmap can cause the program to be killed with SIGBUS, if the underlying file is truncated or a disk error occurs. We only use this from within coredump and coredumpctl, so I don't consider this an issue. Old decompression code is retained and is used if the new code fails indicating a format error. There have been reports of various smaller distributions using previous lz4 code, i.e. the old format, and it is nice to provide backwards compatibility. We can remove the legacy code in a few versions. The way that blobs are compressed in the journal is not affected.
2015-10-10build-sys: use pkgconfig and lz4 and bump versionZbigniew Jędrzejewski-Szmek
The new frame api was released in v. 125.
2015-09-10tree-wide: never use the off_t unless glibc makes us use itLennart Poettering
off_t is a really weird type as it is usually 64bit these days (at least in sane programs), but could theoretically be 32bit. We don't support off_t as 32bit builds though, but still constantly deal with safely converting from off_t to other types and back for no point. Hence, never use the type anymore. Always use uint64_t instead. This has various benefits, including that we can expose these values directly as D-Bus properties, and also that the values parse the same in all cases.
2015-09-10Merge pull request #1226 from poettering/coccinelle-fixes3Daniel Mack
Third round of Coccinelle fixes
2015-09-10Merge pull request #1234 from medhefgo/masterLennart Poettering
cryptsetup-generator: Properly check return code
2015-09-10cryptsetup-generator: Properly check return codeJan Janssen
2015-09-10Merge pull request #1230 from swem/masterMartin Pitt
Add microphone mute keymap for Dell Precision
2015-09-10Add microphone mute keymap for Dell PrecisionChen-Han Hsiao (Stanley)
2015-09-09Merge pull request #1225 from mbiebl/remove-sphinx-leftover2Lennart Poettering
README: remove obsolete instructions regarding python-systemd/sphinx
2015-09-09tree-wide: take benefit of the fact that hashmap_free() returns NULLLennart Poettering
And set_free() too. Another Coccinelle patch.
2015-09-09README: remove obsolete instructions regarding python-systemd/sphinxMichael Biebl
2015-09-09tree-wide: make use of the fact that strv_free() returns NULLLennart Poettering
Another Coccinelle patch.
2015-09-09Makefile: fix gardel targetLennart Poettering
2015-09-09Merge pull request #1220 from zonque/logind-dry-runLennart Poettering
logind: make dry run command line arguments work again (v2)
2015-09-09systemctl: add dry-run support for scheduled shutdownsDaniel Mack
Prefix the action parameter with "dry-" in case the --dry-run command line switch was passed.
2015-09-09logind: allow dry run variants for scheduled shutdownsDaniel Mack
Allow passing a "dry-" prefix to the action parameter passed to .ScheduleShutdown(). When strings with this prefix are passed, the scheduled action will not take place. Instead, an info message is logged.
2015-09-09Merge pull request #1213 from evverx/systemd-notify-logLennart Poettering
notify: log error when sd_pid_notify() == 0
2015-09-09Merge pull request #1218 from poettering/safe-fcloseDaniel Mack
util: introduce safe_fclose() and port everything over to it
2015-09-09README: document new /etc/mtab requirementDaniel Mack
2015-09-09util: introduce safe_fclose() and port everything over to itLennart Poettering
Adds a coccinelle script to port things over automatically.
2015-09-09Merge pull request #1217 from zonque/free-and-replaceLennart Poettering
locale: kill free_and_replace()
2015-09-09locale: kill free_and_replace()Daniel Mack
That function really makes little sense, as the open-coded variant is much more readable. Also, if the 2nd argument is NULL, mfree() is a much better candidate. Convert the only users of this function in localed, and then remove it entirely.
2015-09-09Merge pull request #1216 from poettering/coccinelle-fixes-2Daniel Mack
Coccinelle fixes 2
2015-09-09tree-wide: replace while(1) by for(;;) everywhereLennart Poettering
Another Coccinelle script.
2015-09-09tree-wide: update empty-if coccinelle script to cover empty-while and moreLennart Poettering
Let's also clean up single-line while and for blocks.
2015-09-09tree-wide: make use of log_error_errno() return value in more casesLennart Poettering
The previous coccinelle semantic patch that improved usage of log_error_errno()'s return value, only looked for log_error_errno() invocations with a single parameter after the error parameter. Update the patch to handle arbitrary numbers of additional arguments.
2015-09-09sd-bus: drop weird empty linesDavid Herrmann
We should never put empty lines between `if` and `else if`, unless we use braces.
2015-09-09Merge pull request #1215 from maciejaszek/fds_pass_fixesLennart Poettering
sd_pid_notify_with_fds: fix computing msg_controllen
2015-09-09Merge pull request #1214 from zonque/mtabLennart Poettering
core: freeze execution if /etc/mtab exists
2015-09-09sd_pid_notify_with_fds: fix computing msg_controllenMaciej Wereski
CMSG_SPACE(0) may return value other than 0. This caused sendmsg to fail with EINVAL, when have_pid or n_fds was 0.
2015-09-09Merge pull request #1212 from again4you/devel/fix_smack_label_#3Lennart Poettering
Wrong smack label of the symlink in CGROUP root directory when enabling '--with-smack-run-label' (v3)
2015-09-09core: freeze execution if /etc/mtab existsDaniel Mack
The mount monitor that was added to libmount v2.27 requires /etc/mtab to be non-existant. As systemd now uses that functionality, we cannot monitor any mounts anymore, and hence not support .mount units. Systems that have /etc/mtab around as regular file are unsupported by systemd since a long time. This patch makes that condition fatal, so we do not boot up with non-working mount monitor support.
2015-09-09notify: log error when sd_pid_notify() == 0Evgeny Vereshchagin
2015-09-09smack: bugfix the smack label of symlink when '--with-smack-run-label' is setSangjung Woo
Even though systemd has its own smack label since '--with-smack-run-label' configuration is set, the smack label of each CGROUP root directory should have the star (i.e. *) label. This is mainly because current Linux Kernel set the label in this way. (Refer to smack_d_instantiate() in security/smack/smack_lsm.c) However, if systemd has its own smack label and arg_join_controllers is explicitly set or initialized by initialize_join_controllers() function, current systemd creates the symlink in CGROUP root directory with its own smack label as below. lrwxrwxrwx. 1 root root System 11 Dec 31 16:00 cpu -> cpu,cpuacct dr-xr-xr-x. 4 root root * 0 Dec 31 16:01 cpu,cpuacct lrwxrwxrwx. 1 root root System 11 Dec 31 16:00 cpuacct -> cpu,cpuacct This patch fixes that bug by copying the smack label from the origin.
2015-09-09smack: introduce new mac_smack_copy() functionSangjung Woo
This adds a new mac_smack_copy() function in order to read the smack label from the source and apply it to the destination.
2015-09-09importd: fix typosDaniel Mack
2015-09-09Merge pull request #1210 from poettering/import-fixesDaniel Mack
cgroup fix, nspawn fix, plus change to download .nspawn files in importd
2015-09-09Merge pull request #1207 from poettering/coccinelle-fixesDaniel Mack
Coccinelle fixes
2015-09-09nspawn: add missing comma to gperf fileLennart Poettering
2015-09-09Merge pull request #1180 from evverx/dot-from-to-alias-handlingLennart Poettering
analyze: add alias handling for --{from,to}-pattern options of the dot command
2015-09-09tree-wide: drop {} from one-line if blocksLennart Poettering
Patch via coccinelle.
2015-09-09tree-wide: make use of log_error_errno() return valueLennart Poettering
Turns this: r = -errno; log_error_errno(errno, "foo"); into this: r = log_error_errno(errno, "foo"); and this: r = log_error_errno(errno, "foo"); return r; into this: return log_error_errno(errno, "foo");
2015-09-09tree-wide: don't do assignments within if checksLennart Poettering
Turn this: if ((r = foo()) < 0) { ... into this: r = foo(); if (r < 0) { ...
2015-09-09tree-wide: drop redundant if checks before safe_close()Lennart Poettering
Replace this: if (fd >= 0) safe_close(fd); by this: safe_close(fd);