1
0
mirror of https://github.com/systemd/systemd.git synced 2024-11-01 17:51:22 +03:00
Commit Graph

33874 Commits

Author SHA1 Message Date
Lennart Poettering
5b65ae15d2 core: comment verbosely what the difference betweem set_manager_settings() and set_manager_defaults() is 2018-06-06 14:39:15 +02:00
Lennart Poettering
3130fca5a7 util: add new write_string_filef() helper
This new helper combines asprintf() and write_string_file() in one,
which is useful at various places to shorten the code a bit.
2018-06-06 14:39:15 +02:00
Lennart Poettering
9264cc39ce main: split out reading of /proc/sys/fs/nr_open into its own function
This doesn't really reduce the code size over all, but it does make main.c
shorter and more readable, and that's always a good thing.
2018-06-06 14:39:15 +02:00
Zbigniew Jędrzejewski-Szmek
0e37c169fb man: add example for sd_event_add_inotify 2018-06-06 13:09:36 +02:00
Zbigniew Jędrzejewski-Szmek
5c1701dd6d
Merge pull request #9210 from poettering/use-delete-trailing-chars
make use of delete_trailing_chars() more
2018-06-06 12:43:47 +02:00
Zbigniew Jędrzejewski-Szmek
6585f72c08
Merge pull request #9121 from poettering/sd-event-inotify
add "sd_event_add_inotify()" and use it for making PID 1 rescheduler .timer units properly on timezone change
2018-06-06 12:38:55 +02:00
Zbigniew Jędrzejewski-Szmek
ce55bd5e4a NEWS: add note about --runtime 2018-06-06 12:38:44 +02:00
Yu Watanabe
60091993a9 locale: add _unused_ attribute for dummy variable
This suppresses the following warning by clang:
```
[588/1179] Compiling C object 'systemd-localed@exe/src_locale_localed.c.o'.
../src/locale/localed.c:271:39: warning: unused variable 'dummy' [-Wunused-variable]
        _cleanup_(locale_free) char **dummy = new_locale;
                                      ^
```
2018-06-06 12:27:52 +02:00
rubensa
2b3df1963c hwdb: add accel mount settings for Cube i7 Stylus I8L Model (#9207)
There are different Cube i7 Stylus generations.

Those are identified with the printed serial code sticker on motherboard (Printed serial code on casing is not always true)

Order of Model (Old - New):

    W
    WA
    WWA
    WN(I8WN)
    I8L(With W on casing)

I own a I8L generation so the hw identification for my model does not work.

# cat /sys/class/dmi/id/sys_vendor
Cube
# сat /sys/class/dmi/id/product_name
i8-L
2018-06-06 12:02:35 +02:00
Lennart Poettering
0a6ffc5c9b string-util: put together strstrip() from skip_leading_chars() and delete_trailing_chars() 2018-06-06 11:58:38 +02:00
Lennart Poettering
af8974940d process-util: make use of delete_trailing_chars() in get_process_cmdline() 2018-06-06 11:58:18 +02:00
Lennart Poettering
1627069766 update TODO 2018-06-06 11:44:58 +02:00
Lennart Poettering
b2ad25d388 test: turn off the kernel's passive agressive /dev/kmsg ratelimit for our tests 2018-06-06 11:24:34 +02:00
Lennart Poettering
efd0b6ccca test: make sure output of test TEST-03 test service ends up on console 2018-06-06 11:24:34 +02:00
Lennart Poettering
3edc0c590d test: disable QEMU based testing for TEST-16-EXTEND-TIMEOUT
The test is heavily dependent on timeouts, and if we are run in
potentially very slow QEMU instances there's a good chance we'll miss
some which we normally wouldn't miss. Hence, let's test this one in
nspawn only. Given that the test is purely in service management it
shouldn't matter whether it runs in nspawn or qemu, hence keep running
it in nspawn, but don't bother with qemu.

Similar, do this for TEST-03-JOBS, too, which operates with relatively
short sleep times internally.

Fixes: #9123
2018-06-06 11:24:09 +02:00
Lennart Poettering
cd710e6ab9 update TODO 2018-06-06 10:55:45 +02:00
Lennart Poettering
d08eb1fabd sd-event: use structure initialization instead of new0() where possible 2018-06-06 10:55:45 +02:00
Lennart Poettering
a5cc7e5ac1 core: schedule time and timezone change events a bit before .timer elapsation events
We really should make sure that .timer units are dispatched while taking
the newest time/timezone data into account.
2018-06-06 10:55:45 +02:00
Lennart Poettering
4f811d27d6 time-util: introduce common implementation of TFD_TIMER_CANCEL_ON_SET client code
We now use pretty much the same code at three places, let's unify that.
2018-06-06 10:55:45 +02:00
Lennart Poettering
bbf5fd8e41 core: subscribe to /etc/localtime timezone changes and update timer elapsation accordingly
Fixes: #8233

This is our first real-life usecase for the new sd_event_add_inotify()
calls we just added.
2018-06-06 10:53:56 +02:00
Lennart Poettering
7feedd18fa core: move destruction of old time event sources to manager_setup_time_change()
It's a bit prettier that day as the function won't silently overwrite
any possibly pre-initialized field, and destroy it right before we
allocate a new event source.
2018-06-06 10:53:56 +02:00
Lennart Poettering
1eb54dc645 man: document the new sd_event_add_inotify() call 2018-06-06 10:53:56 +02:00
Lennart Poettering
41e09d62c5 sd-event: add test for the new sd_event_add_inotify() API
This tests a couple of corner cases of the sd-event API including
changing priorities of existing event sources, as well as overflow
conditions of the inotify queue.
2018-06-06 10:53:56 +02:00
Lennart Poettering
97ef539169 sd-event: add new API for subscribing to inotify events
This adds a new call sd_event_add_inotify() which allows watching for
inotify events on specified paths.

sd-event will try to minimize the number of inotify fds allocated, and
will try to add file watches to the same inotify fd objects as far as
that's possible. Doing this kind of inotify object should optimize
behaviour in programs that watch a limited set of mostly independent
files as in most cases a single inotify object will suffice for watching
all files.

Traditionally, this kind of coalescing logic (i.e. that multiple event
sources are implemented on top of a single inotify object) was very hard
to do, as the inotify API had serious limitations: it only allowed
adding watches by path, and would implicitly merge watches installed on
the same node via different path, without letting the caller know about
whether such merging took place or not.

With the advent of O_PATH this issue can be dealt with to some point:
instead of adding a path to watch to an inotify object with
inotify_add_watch() right away, we can open the path with O_PATH first,
call fstat() on the fd, and check the .st_dev/.st_ino fields of that
against a list of watches we already have in place. If we find one we
know that the inotify_add_watch() will update the watch mask of the
existing watch, otherwise it will create a new watch. To make this
race-free we use inotify_add_watch() on the /proc/self/fd/ path of the
O_PATH fd, instead of the original path, so that we do the checking and
watch updating with guaranteed the same inode.

This approach let's us deal safely with inodes that may appear under
various different paths (due to symlinks, hardlinks, bind mounts, fs
namespaces). However it's not a perfect solution: currently the kernel
has no API for changing the watch mask of an existing watch -- unless
you have a path or fd to the original inode. This means we can "merge"
the watches of the same inode of multiple event sources correctly, but
we cannot "unmerge" it again correctly in many cases, as access to the
original inode might have been lost, due to renames, mount/unmount, or
deletions. We could in theory always keep open an O_PATH fd of the inode
to watch so that we can change the mask anytime we want, but this is
highly problematics, as it would consume too many fds (and in fact the
scarcity of fds is the reason why watch descriptors are a separate
concepts from fds) and would keep the backing mounts busy (wds do not
keep mounts busy, fds do). The current implemented approach to all this:
filter in userspace and accept that the watch mask on some inode might
be higher than necessary due to earlier installed event sources that
might have ceased to exist. This approach while ugly shouldn't be too
bad for most cases as the same inodes are probably wacthed for the same
masks in most implementations.

In order to implement priorities correctly a seperate inotify object is
allocated for each priority that is used. This way we get separate
per-priority event queues, of which we never dequeue more than a few
events at a time.

Fixes: #3982
2018-06-06 10:53:56 +02:00
Lennart Poettering
cc59d29054 sd-event: voidify more things 2018-06-06 10:23:12 +02:00
Lennart Poettering
2a0dc6cd04 sd-event: propagate errors from source_set_pending() in all cases 2018-06-06 10:23:12 +02:00
Lennart Poettering
ac989a783a sd-event: drop pending events when we turn off/on an event source 2018-06-06 10:23:12 +02:00
Lennart Poettering
de05913d06 sd-event: use symbolic name for normal priority 2018-06-06 10:23:12 +02:00
Lennart Poettering
a82f89aa9e sd-event: use structure initialization for epoll_event 2018-06-06 10:23:12 +02:00
Lennart Poettering
cc4338e435 tests: tighten check for TEST-06-SELINUX dependencies a bit
As it turns out /usr/share/selinux/devel/ is now included in more RPMs
than just selinux-policy-devel (specifically container-selinux, which is
pulled in by various container related RPMs). Let's hence tighten the
dependency check a bit and look for systemd's .if file, which is what we
actually care about.
2018-06-06 10:17:38 +02:00
Michael Prokop
7fc97da0f8 man: fix typo 2018-06-06 12:22:47 +09:00
Peter Jones
3f9a490cb1 Fix DPI for Logitech M185, M510, and M705. (#9182)
The DPI for three logitech models, the M185, M510, and M705, appear to
have always been different here than what logitech's given specs say.
With my M510, this results in jumpy behavior when transitioning from
fast motion to slow motion, making clicking specific buttons or
highlighting specific text *very* frustrating.

This patch changes those 3 mice to the published resolution, which
resolves the problem with my M510.  I have chosen to fix those 3 simply
because they were already grouped together, and all incorrect as
compared to logitech's web site, and as such I have not tried other mice
or investigated if there are other non-matching values in the database
as well.

Signed-off-by: Peter Jones <pjones@redhat.com>
2018-06-06 08:15:58 +10:00
Lennart Poettering
8cd0356e9e util: tighten on_tty() check a bit, also check stderr
Let's detect output redirection a bit better, cover both stdout and
stderr.

Fixes: #9192
2018-06-06 00:01:22 +02:00
Lennart Poettering
44cf5fdd55
Merge pull request #9148 from poettering/tidy-late
make PID watching a bit less expensive
2018-06-06 00:00:58 +02:00
Lennart Poettering
b91ada2a61 core: watch PIDs of scope units right after starting them
Scope units don't have a main or control process we can watch, hence
let's explicitly watch the PIDs contained in them early on, just to make
things more robust and have at least something to watch.
2018-06-05 22:06:48 +02:00
Lennart Poettering
50be4f4a46 core: rework how we track service and scope PIDs
This reworks how systemd tracks processes on cgroupv1 systems where
cgroup notification is not reliable. Previously, whenever we had reason
to believe that new processes showed up or got removed we'd scan the
cgroup of the scope or service unit for new processes, and would tidy up
the list of PIDs previously watched. This scanning is relatively slow,
and does not scale well. With this change behaviour is changed: instead
of scanning for new/removed processes right away we do this work in a
per-unit deferred event loop job. This event source is scheduled at a
very low priority, so that it is executed when we have time but does not
starve other event sources. This has two benefits: this expensive work is
coalesced, if events happen in quick succession, and we won't delay
SIGCHLD handling for too long.

This patch basically replaces all direct invocation of
unit_watch_all_pids() in scope.c and service.c with invocations of the
new unit_enqueue_rewatch_pids() call which just enqueues a request of
watching/tidying up the PID sets (with one exception: in
scope_enter_signal() and service_enter_signal() we'll still do
unit_watch_all_pids() synchronously first, since we really want to know
all processes we are about to kill so that we can track them properly.

Moreover, all direct invocations of unit_tidy_watch_pids() and
unit_synthesize_cgroup_empty_event() are removed too, when the
unit_enqueue_rewatch_pids() call is invoked, as the queued job will run
those operations too.

All of this is done on cgroupsv1 systems only, and is disabled on
cgroupsv2 systems as cgroup-empty notifications are reliable there, and
we do not need SIGCHLD events to track processes there.

Fixes: #9138
2018-06-05 22:06:48 +02:00
Lennart Poettering
19a691a9fd cgroup: tiny log message tweak, say that we ignore one kind of failure 2018-06-05 22:04:39 +02:00
Zbigniew Jędrzejewski-Szmek
79e221d078
Merge pull request #9158 from poettering/notify-auto-reload
trigger OnFailure= only if Restart= is not in effect
2018-06-05 13:51:07 +02:00
Zbigniew Jędrzejewski-Szmek
7a8aa0ec0a man: use entities for fedora number and update URL
Fedora 28 is out already, let's advertise it. While at it, drop "container"
from "f28container" — it's a subdirectory under /var/lib/machines, it's pretty
obvious that's it a container.

To make the switch easier in the future, define the number as an entity.
2018-06-05 11:04:01 +02:00
Evegeny Vereshchagin
d5a650d2c3 travis: use Fedora 27 as a base image
It was confirmed experimentally that Fedora 27 is more suitable
for running cov-build than Fedora 28:
https://github.com/systemd/systemd/issues/9186#issuecomment-394577877.
2018-06-05 12:03:18 +03:00
Evegeny Vereshchagin
707fe958b7 travis: get python installed while building a docker image
coverity.sh tries to run python, so it should be installed
to make everything work.

According to https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3#Current_status,
python seems to be the right name of the package.

Closes https://github.com/systemd/systemd/issues/9186.
2018-06-05 02:03:05 +03:00
Evgeny Vereshchagin
d460333bb2
Merge pull request #9184 from msekletar/travis-followups
Travis CI follow ups
2018-06-04 20:53:20 +03:00
Michal Sekletar
2777cf4848 travis: drop ccache requirement 2018-06-04 19:44:07 +02:00
Michal Sekletar
f0b19a0376 travis: DOCKER_REPOSITORY is no longer set. Don't require it. 2018-06-04 19:40:34 +02:00
Michal Sekletar
3f4b547a55 travis: use Travis CI only for running scheduled Coverity scans
Building and testing of systemd on Fedora Rawhide is now handled by
dedicated Fedora CI. We don't need to duplicate this in Travis CI.
2018-06-04 20:14:37 +03:00
Yu Watanabe
c0d72c4313 conf-parser: fix memleak (#9177)
Fixes CID#1391437.

Closes #9180.
2018-06-04 15:18:28 +03:00
Marcel Hoppe
312fe35a57 Update 60-sensor.hwdb
add chuwi hibook with newer bios version

[zj: remove duplicate matrix]
2018-06-04 13:46:40 +02:00
Zbigniew Jędrzejewski-Szmek
a1230ff972 basic/log: add the log_struct terminator to macro
This way all callers do not need to specify it.
Exhaustively tested by running test-log under valgrind ;)
2018-06-04 13:46:03 +02:00
Lennart Poettering
4055a62faf
Merge pull request #9176 from keszybz/flags-set
Macro to check if flags are set
2018-06-04 13:45:29 +02:00
Lennart Poettering
b5b74e4b12
Merge pull request #9167 from keszybz/ellipsization
Ellipsization fixes based on unit-testing and fuzzing
2018-06-04 13:45:03 +02:00