summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2013-06-10journal: letting (interleaved) seqnums goZbigniew Jędrzejewski-Szmek
In the following scenario: server creates system.journal server creates user-1000.journal both journals share the same seqnum_id. Then server writes to user-1000.journal first, and server writes to system.journal a bit later, and everything is fine. The server then terminates (crash, reboot, rsyslog testing, whatever), and user-1000.journal has entries which end with a lower seqnum than system.journal. Now server is restarted server opens user-1000.journal and writes entries to it... BAM! duplicate seqnums for the same seqnum_id. Now, we usually don't see that happen, because system.journal is closed last, and opened first. Since usually at least one message is written during boot and lands in the system.journal, the seqnum is initialized from it, and is set to a number higher than than anything found in user journals. Nevertheless, if system.journal is corrupted and is rotated, it can happen that an entry is written to the user journal with a seqnum that is a duplicate with an entry found in the corrupted system.journal~. When browsing the journal, journalctl can fall into a loop where it tries to follow the seqnums, and tries to go the next location by seqnum, and is transported back in time to to the older duplicate seqnum. There is not way to find out the maximum seqnum used in a multiple files, without actually looking at all of them. But we don't want to do that because it would be slow, and actually it isn't really possible, because a file might e.g. be temporarily unaccessible. Fix the problem by using different seqnum series for user journals. Using the same seqnum series for rotated journals is still fine, because we know that nothing will write to the rotated journal anymore. Likely related: https://bugs.freedesktop.org/show_bug.cgi?id=64566 https://bugs.freedesktop.org/show_bug.cgi?id=59856 https://bugs.freedesktop.org/show_bug.cgi?id=64296 https://bugs.archlinux.org/task/35581 https://bugzilla.novell.com/show_bug.cgi?id=817778 Possibly related: https://bugs.freedesktop.org/show_bug.cgi?id=64293
2013-06-10tests: add testcase for duplicate seqnumsZbigniew Jędrzejewski-Szmek
2013-06-10tests: add testcase for skipping-entries-on-direction-change-bugMarius Vollmer
This test case failed until a3e6f050de8. Taken from https://bugs.freedesktop.org/show_bug.cgi?id=65255.
2013-06-10journal: change direction tests to use the same convention (cp </> np)Zbigniew Jędrzejewski-Szmek
The order was different in various places, which makes it harder to read to code. Also consistently use ternany for all direction checks. Remove one free(NULL).
2013-06-10journal: remember last direction of search and keep offset cacheZbigniew Jędrzejewski-Szmek
The fields in JournalFile are moved around to avoid wasting 7 bytes because of alignment.
2013-06-10journalctl: allow the user to specify the file(s) to useZbigniew Jędrzejewski-Szmek
This is useful for debugging and feels pretty natural. For example answering the question "is this big .journal file worth keeping?" is made easier.
2013-06-10journal: add sd_journal_open_filesZbigniew Jędrzejewski-Szmek
This allows the caller to explicitly specify which journal files should be opened. The same functionality could be achieved before by creating a directory and playing around with symlinks. It is useful to debug stuff and explore the journal, and has been requested before. Waiting is supported, the journal will notice modifications on the files supplied when opening the journal, but will not add any new files.
2013-06-10tests: add test for empty journal filesZbigniew Jędrzejewski-Szmek
The headers are currently not printed properly: some "(null)"s appear.
2013-06-10journalctl: print monotonic timestamp in --headerZbigniew Jędrzejewski-Szmek
2013-06-10journalctl: print proper IDs with --headerZbigniew Jędrzejewski-Szmek
The same buffer was used for two different IDs, messing up the output.
2013-06-10Use stdint.h macros instead of casts to print uint64_t valuesZbigniew Jędrzejewski-Szmek
Casts are visually heavy, and can obscure unwanted truncations.
2013-06-10Properly check for overflow in offsetsZbigniew Jędrzejewski-Szmek
2013-06-10journalctl: no color for --reboot-- when not on ttyZbigniew Jędrzejewski-Szmek
2013-06-10journal: loop less in MATCH_AND_TERM conditionalsZbigniew Jędrzejewski-Szmek
AND term usually don't have many subterms (4 seems to be the maximum sensible number, e.g. _BOOT_ID && _SYSTEMD_UNIT && _PID && MESSAGE_ID). Nevertheless, the cost of checking each subterm can be relatively high, especially when the nested terms are compound, and it makes sense to minimize the number of checks. Instead of looping to the end and then again over the whole list once again after at least one term changed the offset, start the loop at the term which caused the change. This way ½ terms in the AND match are not checked unnecessarily again.
2013-06-10journalctl: add --system/--user flagsZbigniew Jędrzejewski-Szmek
--user basically gives messages from your own systemd --user services. --system basically gives messages from PID 1, kernel, and --system services. Those two options are not exahustive, because a priviledged user might be able to see messages from other users, and they will not be shown with either or both of those flags.
2013-06-10journal: add ability to filter by current userZbigniew Jędrzejewski-Szmek
This is the just the library part. SD_JOURNAL_CURRENT_USER flags is added to sd_j_open(), to open files from current user. SD_JOURNAL_SYSTEM_ONLY is renamed to SD_JOURNAL_SYSTEM, and changed to mean to (also) open system files. This way various flags can be combined, which gives them nicer semantics, especially if other ones are added later. Backwards compatibility is kept, because SD_JOURNAL_SYSTEM_ONLY is equivalent to SD_JOURNAL_SYSTEM if used alone, and before there we no other flags.
2013-06-10journal: simplify match_free_if_emptyZbigniew Jędrzejewski-Szmek
2013-06-10dev-setup: do not create a dangling /proc/kcore symlinkZbigniew Jędrzejewski-Szmek
https://bugs.freedesktop.org/show_bug.cgi?id=65382 https://bugs.gentoo.org/472060?id=472060
2013-06-09journalctl: fix verbose output when no logs are foundZbigniew Jędrzejewski-Szmek
$ journalctl -o verbose _EXE=/quiet/binary -f -- Logs begin at Sun 2013-03-17 17:28:22 EDT. -- Failed to get realtime timestamp: Cannot assign requested address JOURNAL_FOREACH_DATA_RETVAL is added, which allows the caller to get the return value from sd_journal_enumerate_data. I think we might want to expose this macro like SD_JOURNAL_FOREACH_DATA, but for now it is in journal-internal.h. There's a change in behaviour for output_*, not only in output_verbose, that errors in sd_j_enumerate_data are not silently ignored anymore. https://bugs.freedesktop.org/show_bug.cgi?id=56459
2013-06-09service: don't report alien child as alive when it's notRoss Lagerwall
When a sigchld is received from an alien child, main_pid is set to 0 then service_enter_running calls main_pid_good to check if the child is running. This incorrectly returned true because kill(main_pid, 0) would return >= 0. This fixes an error where a service would die and the cgroup would become empty but the service would still report as active (running).
2013-06-09Allow for the use of @ in remote host callsDaniel Wallace
Without this you have to use %40 with the -H flag because dbus doesn't like the @ sign being unescaped.
2013-06-09systemctl: remove extra padding from status outputZbigniew Jędrzejewski-Szmek
In 131601349 'systemctl: align all status fields to common column', padding was calculated for 'ListenStream: ...', etc. Later on in 45a4f7233 'systemctl: tweak output of Listen: fields a bit' output was changed to 'Listen: ... (stream)', but calculation didn't change. Just remove the calculation, since now the result will be always 8, and it it more important to have everything aligned to the widest field ("Main-PID"), than to save a few columns, usually at most two (e.g. "Listen"). Note: strlen is more natural, and is optimized to sizeof even with -O0.
2013-06-09logs-show: print multiline messagesZbigniew Jędrzejewski-Szmek
[ 0.019862] fedora kernel: CPU0: Thermal monitoring enabled (TM1) [ 0.019900] fedora kernel: Last level iTLB entries: 4KB 512, 2MB 0, 4MB 0 Last level dTLB entries: 4KB 512, 2MB 32, 4MB 32 tlb_flushall_shift: 5 [ 0.020118] fedora kernel: Freeing SMP alternatives: 24k freed
2013-06-06cgroup: the "tasks" attribute is obsolete, cgroup.procs is the new replacementLennart Poettering
2013-06-06service: execute ExecStopPost= commands when the watchdog timeout hitsLennart Poettering
We can assume that a service for which a watchdog timeout was triggered is unresponsive to a clean shutdown. However, it still makes sense to execute the post-stop cleanup commands that can be configured with ExecStopPost=. Hence, when the timeout is hit enter STOP_SIGKILL rather than FINAL_SIGKILL.
2013-06-06manager: Do not handle SIGKILL since we can notChengwei Yang
This is a minor fix because it's not a major issue, this fix just avoid to get EINVAL error from sigaction(2). There are two signals can not handled at user space, SIGKILL and SIGSTOP even we're PID 1, trying to handle these two signals will get EINVAL error. There are two kinds of systemd instance, running as system manager or user session manager, apparently, the latter is a general user space process which can not handle SIGKILL. The special pid 1 also can not do that refer to kernel/signal.c:do_sigaction(). However, pid 1 is unkillable because the kernel did attach SIGNAL_UNKILLABLE to it at system boot up, refer to init/main.c:start_kernel() --> rest_init() --> kernel_thread() --> kernel_init() --> init_post() current->signal->flags |= SIGNAL_UNKILLABLE
2013-06-05libsystemd-bus/bus-kernel.h: set MEMFD_MIN_SIZE to 128kHarald Hoyer
2013-06-05test-bus-kernel-benchmark: corrected output for memfd bisectHarald Hoyer
2013-06-05bus: benchmark - adjust printf and MAX_SIZEKay Sievers
2013-06-04keymap: add some more Asus laptop keysPierre Neidhardt
With Linux 3.9 (commit a935eaecef2b209ad661dadabb4e32b7c9a9b924), the Asus keyboard driver has changed to be more compliant to the symbol signification. This has led to some issues with udev. In particular, the XF86TouchpadToggle (a Fn key) does not work anymore on Asus X52J. I found another similar patch which does not seem to have been ever submitted/merged: https://launchpadlibrarian.net/73337842/95-keymap.rules.patch Find enclosed the patch containing both the launchpad patch and mine into one file. https://bugs.freedesktop.org/show_bug.cgi?id=65375
2013-06-04bus: unmap memfd retrieved from the memfd cacheKay Sievers
2013-06-04bus-benchmark: add performance data output modeKay Sievers
- for now, comment out munmap() check to enable memfd passing - print tab-separated values and header - add memcpy() to fill the memfd, to produce real-world results $ ./test-bus-kernel-benchmark SIZE COPY MEMFD 4194304 370 370 2097152 810 810 1048576 2130 2130 524288 4090 4090 262144 7080 7080 131072 11380 11380 65536 17140 17140 98304 13930 13930 114688 12890 12890 122880 12350 12350 126976 12150 12150 129024 12170 12170 130048 12040 12040 130560 12080 12080 130816 12010 12010 130944 12020 12020 131008 12040 12040 131040 12050 12050 131056 12010 12010 131064 12060 12060 131068 12040 12040 131070 11310 11310 131069 11420 11420 Copying/memfd are equally fast at 131068 bytes $ ./test-bus-kernel-benchmark chart SIZE COPY MEMFD 1 35570 23690 2 36470 23680 4 36160 23520 8 36600 22220 16 33900 20830 32 33990 21360 64 33480 21280 128 34050 20910 256 32950 21750 512 34730 21900 1024 33810 22890 2048 36280 23110 4096 30790 21610 8192 29380 21100 16384 26880 19820 32768 22510 17980 65536 17270 15180 131072 11400 11420 262144 7140 8270 524288 4090 5050 1048576 2110 2780 2097152 800 1140 4194304 350 580
2013-06-04systemctl: add missing verbs to helpZbigniew Jędrzejewski-Szmek
2013-06-04systemctl: limit logs in status to current bootZbigniew Jędrzejewski-Szmek
Also reworded a few debug messages for brevity, and added a log statement which prints out the filter at debug level: Journal filter: (((UNIT=sys-module-configfs.device AND _PID=1) OR (COREDUMP_UNIT=sys-module-configfs.device AND MESSAGE_ID=fc2e22bc6ee647b6b90729ab34a250b1) OR _SYSTEMD_UNIT=sys-module-configfs.device) AND _BOOT_ID=4e3c518ab0474c12ac8de7896fe6b154)
2013-06-04bus-benchmark: lower loop time to 100ms by default, to ensure "make check" ↵Lennart Poettering
finishes more quickly To get useful results you should however specify a much longer time on the command line.
2013-06-04test: determine number of transactions per second rather than time per ↵Lennart Poettering
transaction This way the measurements are not skewed by twoo short total measurement times, and results become stabler.
2013-06-03systemctl,core: allow nuking of symlinks to removed unitsZbigniew Jędrzejewski-Szmek
Before, one the unit file was deleted, install_context_for_removal() would refuse to look for symlinks. But we can remove dangling symlinks anyway. In principle, package installation/deinstallation scripts should do that before the unit is uninstalled, but they don't always do. Also, a user might have added additional symlinks manually. https://bugs.freedesktop.org/show_bug.cgi?id=62395
2013-06-02analyze: fix font size on plotThomas Hindoe Paaboel Andersen
The font-size was missing a unit so they were ignored. This patch sets the unit to 'px' and adjusts the sizes a bit as the text got very small.
2013-06-02analyze: show unit file loading on plotThomas Hindoe Paaboel Andersen
This will add another color to the legend called "Loading unit files" Like the generators it will mark a part of the systemd bar indicating the time spent while loading unit files.
2013-06-02analyze: show generators on plotUmut Tezduyar
2013-06-01journal: take KeepFree into account when reporting maximum sizeDaniel Albers
When reporting the maximum journal size add a hint if it's limited by KeepFree.
2013-05-31bus: update for kdbus changesKay Sievers
2013-05-30systemctl: suggest 'systemctl daemon-reload' without --systemZbigniew Jędrzejewski-Szmek
--system is default anyway, and some poor user might type 9 characters without needing to.
2013-05-30systemctl: add command set-log-levelVáclav Pavlín
Command changes current log level
2013-05-30systemctl: add commands set-default and get-defaultVáclav Pavlín
systemctl set-default NAME links the default.target to the given unit, get-default prints out the path to the currently set default target.
2013-05-30core: read "debug" from kernel commandline and set log levelLukas Nykryn
2013-05-30journald: DO recalculate the ACL mask, but only if it doesn't existJan Alexander Steffens (heftig)
Since 11ec7ce, journald isn't setting the ACLs properly anymore if the files had no ACLs to begin with: acl_set_fd fails with EINVAL. An ACL with ACL_USER or ACL_GROUP entries but no ACL_MASK entry is invalid, so make sure a mask exists before trying to set the ACL.
2013-05-30core: use the same test as upstart for apparmorNirbheek Chauhan
Lennart: > Hmm, I just noticed this patch: > > https://code.launchpad.net/~mdeslaur/upstart/apparmor-support/+merge/164169 > > It contains a different check for AppArmor. Basically something like this: > > /sys/module/apparmor/parameters/enabled == 'Y' > > I'd prefer if we could change our code to do the same, given that > the Ubuntu guys are guys are upstream for apparmor. https://bugs.freedesktop.org/show_bug.cgi?id=63312
2013-05-30Fix CPUShares configuration optionEelco Dolstra
This fixes the error message "Unknown or unsupported cgroup attribute CPUShares".
2013-05-30bus: update for kdbus changesKay Sievers