1
0
mirror of https://github.com/systemd/systemd.git synced 2024-11-06 16:59:03 +03:00
The systemd System and Service Manager
Go to file
Lennart Poettering 96d4d0244b journal-file: we can't use a chain cache entry if we don't know where it starts (#8542)
It might happen that we try to bisect through a chain of offset arrays in the
journal whose last element was just allocated but no item yet written
to. In that case that array will be all NUL, but it might still end up
in our array chain cache. If it does, we cannot use it for bisection,
since for bisection we need to know the value of the first entry in that
array, but if it's uninitialized it does not have a first value. Hence,
as a simple fix, in this unlikely case, simply ignore the chain cache.

This is supposed to fix the issue pointed out in #8432, but in a more
permissive way, as this case isn't strictly a badly formatted journal
but actually a valid state (though one within a very short time window),
and we should make the best of it, and handle it gracefully.

Background: in each journal file entries are linked up in large arrays
of offsets. In each array the entries are strictly ordered by the
offsets of the entries, which permits search by bisection. These arrays
are allocated with a fixed size and then filled up as entries are added
to the journal file. If an array is fully filled up, a new array
(double in size as the old one) is appended to the journal file, and
linked up. This means, the journal file will contain a series of chained
up arrays, each time doubling in size, and strictly ordered. When
looking for an entry we maintain a "chain cache", which allows us to
bypass traversing the chain in full if we look for entries close to each
other in a short time. With the fix above we make sure we don't
erroneously use a chain cache item that doesn't carry enough information
for this bisection to work.

Original issue identified (with patch) by @Kxuan.

Replaces: #8432
2018-03-27 09:36:49 +02:00
.github doc: add a new doc/ directory, and move two markdown docs into them 2018-02-27 19:59:09 +01:00
.mkosi mkosi: remove intltool from deps 2018-02-16 13:01:12 +01:00
catalog catalog: update french translation 2017-12-22 15:34:51 +01:00
coccinelle run-coccinelle.sh: use set -x for showing command line of "spatch" 2018-03-23 15:46:12 +01:00
doc HACKING: small umask tweak for the rootpw (#8541) 2018-03-22 15:36:01 +01:00
docs Add license headers and SPDX identifiers to meson.build files 2017-11-19 19:08:15 +01:00
factory/etc factory: remove broken pam_limits 2014-07-30 15:21:54 +02:00
hwdb Fix for alphabetical ordering (#8581) 2018-03-26 17:50:35 +02:00
man Merge pull request #8562 from keszybz/docs 2018-03-26 15:34:39 +02:00
modprobe.d Add SPDX license headers to various assorted files 2017-11-19 19:08:15 +01:00
network Add license headers and SPDX identifiers to meson.build files 2017-11-19 19:08:15 +01:00
po po: Updated Indonesian translation (#8348) 2018-03-04 21:15:21 +09:00
presets Hook up systemd-tmpfiles as user units 2017-12-06 10:19:35 +01:00
rules rules: skip btrfs check if devices are not ready in 64-btrfs.rules (#8304) 2018-02-28 10:36:06 +01:00
shell-completion zsh-completion: add calendar to systemd-analyze (#8438) 2018-03-13 09:41:07 +01:00
src journal-file: we can't use a chain cache entry if we don't know where it starts (#8542) 2018-03-27 09:36:49 +02:00
sysctl.d coredump: accept hostname on command line (#8033) 2018-02-15 12:12:46 +01:00
sysusers.d sysusers: use NOBODY_USER_NAME 2017-12-07 17:12:13 +09:00
test run-integration-tests: show number of tests run 2018-03-23 15:46:11 +01:00
tmpfiles.d nologin: extend the /run/nologin descriptions a bit (#8244) 2018-02-22 14:21:30 +01:00
tools tools/oss-fuzz: add clang library dir using -L 2018-03-12 15:59:25 +01:00
travis-ci Integration of Travis CI and Coverity Scan Analysis (#7691) 2018-01-11 11:41:35 +01:00
units units: document why systemd-time-wait-sync.service conditions on CAP_SYS_TIME (#8555) 2018-03-22 23:41:54 +03:00
xorg login: avoid external process call 2018-01-12 18:02:57 +01:00
.dir-locals.el meson: also indent scripts with 8 spaces 2017-04-25 08:49:16 -04:00
.editorconfig editorconfig: add rule for meson.build files (#6671) 2017-08-28 16:37:23 +02:00
.gitattributes git: indicate that tabs are never OK in the systemd tree 2013-10-30 02:25:38 +01:00
.gitignore Add mkosi.output/ to .gitignore 2017-11-29 14:33:56 +01:00
.mailmap mailmap: one more person 2018-03-05 17:21:09 +01:00
.travis.yml Rename scripts/coverity.sh to tools/coverity.sh 2018-03-12 15:39:21 +01:00
.vimrc vimrc: fix indentation logic for our docbook xml files 2016-04-29 12:23:34 +02:00
.ycm_extra_conf.py ycm: add doc string for all the functions in configuration file 2017-11-29 13:21:49 -07:00
configure build-sys: add basic support for ./configure && make && make install 2017-07-18 10:05:06 -04:00
LICENSE.GPL2 relicense to LGPLv2.1 (with exceptions) 2012-04-12 00:24:39 +02:00
LICENSE.LGPL2.1 licence: remove references to old FSF address 2012-12-17 11:41:31 +01:00
Makefile build-sys: Fix Makefile wrapper for install target (#6548) 2017-08-07 11:29:20 +02:00
meson_options.txt Merge pull request #8323 from xyproto/ok_color 2018-03-02 13:00:07 +01:00
meson.build tests: skip udev-test when perl is not installed 2018-03-22 15:57:56 +01:00
mkosi.build mkosi: set file permissions in copy of source tree (#8370) 2018-03-20 17:21:36 +01:00
mkosi.default mkosi: create .mkosi directory 2016-10-06 11:53:58 -04:00
NEWS NEWS: fix typos in v238 section (#8369) 2018-03-06 17:35:47 +09:00
README README: fix context for CONFIG_DEVPTS_MULTIPLE_INSTANCES 2018-01-17 18:04:27 +00:00
README.md doc: add a new doc/ directory, and move two markdown docs into them 2018-02-27 19:59:09 +01:00
TODO Merge pull request #8368 from yuwata/nss-systemd-getpwent 2018-03-21 12:36:47 +01:00
zanata.xml po: add basic fedora.zanata.org configuration 2018-02-19 13:56:57 +01:00

systemd - System and Service Manager

Count of open issues over time Count of open pull requests over time Build Status
Coverity Scan Status
CII Best Practices

Details

General information about systemd can be found in the systemd Wiki.

Information about build requirements are provided in the README file.

Consult our NEWS file for information about what's new in the most recent systemd versions.

Please see the HACKING file for information how to hack on systemd and test your modifications.

Please see our Contribution Guidelines for more information about filing GitHub Issues and posting GitHub Pull Requests.

When preparing patches for systemd, please follow our Coding Style Guidelines.

If you are looking for support, please contact our mailing list or join our IRC channel.