Commit Graph
3572 Commits
Author SHA1 Message Date
Lennart Poettering 1793bb6112 sd-device: use chase_symlinks() O_PATH fd
chase_symlinks() can return its last O_PATH fd to us. Let's use that and
make the access() check a bit tighter by going via faccessat() on the
O_PATH fd.

This doesn't really change too much, but is nice in context of the next
commit, which uses the O_PATH fd in one other way.
2022-04-13 14:40:09 +02:00
Yu Watanabe fbae50904f sd-event: make inotify event work after the process is forked 2022-04-13 01:00:08 +09:00
Yu Watanabe 86587c93b0 sd-event: do not kill a child process from another child 2022-04-13 01:00:08 +09:00
Yu Watanabe 01e6af7374 sd-event: do not update signal fd after PID is changed
Otherwise, child event source will not work after the process is forked
and the event source is unref()ed on the child process.
2022-04-13 01:00:08 +09:00
Yu Watanabe 54988a27b9 sd-event: set pid to event source after all setup processes finished
Otherwise, the assertion in source_disconnect() may be triggered,
2022-04-13 01:00:08 +09:00
Yu Watanabe 91c700713f sd-event: rebreak comments 2022-04-13 01:00:08 +09:00
Lennart Poettering 9d41c62f6e sd-device: validate devnum parameters in device_set_devnum() 2022-04-11 16:27:40 +02:00
Lennart Poettering 4d960d0bdb sd-device: make device_set_syspath() more defensive
Simplify generated sysfs paths, since we might get data passed that
includes extra // in the middle.

Also, let's not assume /sys/ prefix without verification.
2022-04-11 16:26:58 +02:00
Lennart Poettering 09c24f76dc sd-device: simplify device_enumerator_scan_devices_and_subsystems() a bit
We can use enumerator_scan_devices_all() to shorten the code, and drop
some of the error handling complexities.
2022-04-11 16:25:48 +02:00
Yu Watanabe 08405125c3 sd-device: shorten code a bit 2022-04-11 19:56:38 +09:00
Yu Watanabe 9a81972b3b sd-device: minor may be NULL 2022-04-11 19:56:38 +09:00
Yu Watanabe a46f9cd049 sd-device: validate input parameter after creating sd-device object 2022-04-11 19:56:03 +09:00
Yu Watanabe bab34bc12e Merge pull request #22980 from keszybz/test-help-and-version-output
Test --help and --version output in more cases
2022-04-06 13:42:12 +09:00
Zbigniew Jędrzejewski-Szmek 8f04a1ca2b meson: also allow setting GIT_VERSION via templates
GIT_VERSION is not available as a config.h variable, because it's rendered
into version.h during builds. Let's rework jinja2 rendering to also
parse version.h. No functional change, the new variable is so far unused.

I guess this will make partial rebuilds a bit slower, but it's useful
to be able to use the full version string.
2022-04-05 22:18:31 +02:00
Yu Watanabe c7749367e3 test-sd-device: ignore several errors when running on non-host network namespace
Fixes https://github.com/systemd/systemd/commit/93e04eb43bed6cd1cea344f8fb1002b62155fae2#commitcomment-70387367.
2022-04-05 14:33:19 +09:00
Yu Watanabe b1d723228e test-sd-device: allow several devices removed during running test
To make the test stabler.
2022-04-05 14:29:52 +09:00
Yu Watanabe 901fa9a4c9 test-sd-device: device ID requires subsystem 2022-04-05 14:29:49 +09:00
Yu Watanabe 04d1fbd564 test-sd-device: log earlier which device is handled
To make debugging the test easier.
2022-04-05 14:29:41 +09:00
Lennart Poettering 1ce0d04059 sd-device: actually read diskseq if told so
sd_device_get_diskseq() actually called device_read_uevent_file() but
that function didn't actually parse DISKSEQ= so far. Fix that.
2022-04-04 18:21:41 +02:00
Lennart Poettering d4df6ce215 sd-device: rename return parameter of sd_device_get_devpath() to ret 2022-04-04 18:21:41 +02:00
Franck Bui 4bb37be07b journald: make sure journal_file_open() doesn't leave a corrupted file around after failing
This can be problematic especially when there's no more free disk
space. Consider the following:.

When disk space becomes sparse, writting to the system journal can lead to
error. In this case journald attempts to make room by rotating the journals,
which consists in archiving online journals and opening new ones.

However opening new files is likely to fail too and in this case
journal_file_open() leaves half initialized file around but in online
state. Then the error is propagated and journald switches into volatile mode.

Next time a new message is received by journald, it tries to open the
persistent system journal file to switch automatically back to persistent
mode.

When opening the system journal, journal_file_open(), called by
managed_journal_file_open_reliably(), finds the persistent system journal left
previously and assumes that it was uncleanly closed and considers it as
corrupted. The error is reported to managed_journal_file_open_reliably(), which
backs the file up and attempts to create a new system file, which fails and
leaves a corrupted system file again.

Since this is done for each message received by journald, /var/log/message can
be filled with backup files pretty quickly.

To prevent this, the patch makes sure to delete the newly created file in case
of error.
2022-04-04 17:51:10 +02:00
Yu Watanabe 798931160e tree-wide: add a space after if, switch, for, and while 2022-04-01 22:48:42 +09:00
Yu Watanabe 9534d6c9ea test: add test for sd_device_open() 2022-04-01 15:20:48 +09:00
Yu Watanabe f9a726abef sd-device: introduce sd_device_open()
We usually open() device node obtained by sd_device_get_devname().
However, the device node corresponds to the sd-device object may be
already removed, and another device node with the same path may be
created, hence an unexpected device may be opened.

The sd_device_open() opens device node, and checks the devnum and
diskseq of opened devnum, to avoid the above possibility.

Prompted by https://github.com/systemd/systemd/issues/22906#issuecomment-1082736443.
2022-04-01 15:13:18 +09:00
Yu Watanabe 209294ad24 test: add more tests for sd_device_new_from_xxx() 2022-04-01 15:13:14 +09:00
Yu Watanabe e418f9658b sd-device: introduce sd_device_new_from_devname()
and sd_device_new_from_path() which takes devname or syspath.
2022-04-01 15:03:33 +09:00
Yu Watanabe df88f02bb1 sd-device: do not ignore critical errors in device_new_from_child() 2022-03-31 07:25:24 +09:00
Yu Watanabe 07c90f02d2 sd-device: use path_extract_directory() at one more place 2022-03-31 07:25:24 +09:00
Yu Watanabe becbcca5b8 sd-device: try to get DISKSEQ from uevent file
Otherwise, if the sd-device object is created from e.g. syspath, then
sd_device_get_diskseq() returns -ENOENT.
2022-03-31 07:25:24 +09:00
Yu Watanabe a43129b0a0 sd-device: drop /sys/subsystem support
Follow-ups for 37cf83d9bf.
2022-03-31 07:25:24 +09:00
Zbigniew Jędrzejewski-Szmek 53877d0385 Merge pull request #22649 from keszybz/symlink-enablement-yet-again-punish-me-harder
Fixups to the unit enablement logic
2022-03-29 21:10:03 +02:00
Yu Watanabe 71978a79fd sd-device: introduce device_add_propertyf() 2022-03-30 01:27:29 +09:00
Zbigniew Jędrzejewski-Szmek b380b64383 Rename UnitFileScope to LookupScope
As suggested in
https://github.com/systemd/systemd/pull/22649/commits/8b3ad3983f5440eef812b34e5ed862ca59fdf7f7#r837345892

The define is generalized and moved to path-lookup.h, where it seems to fit
better. This allows a recursive include to be removed and in general makes
things simpler.
2022-03-29 16:17:57 +02:00
Yu Watanabe 2afb2f4a9d Merge pull request #22885 from poettering/kill-clock-boottime-or-monotonic
time-util: assume CLOCK_BOOTTIME always exists
2022-03-29 03:06:54 +09:00
Yu Watanabe 288bd40620 fix typo 2022-03-29 01:21:51 +09:00
Lennart Poettering ba4e0427e9 time-util: assume CLOCK_BOOTTIME always exists
Let's raise our supported baseline a bit: CLOCK_BOOTTIME started to work
with timerfd in kernel 3.15 (i.e. back in 2014), let's require support
for it now.

This will raise our baseline only modestly from 3.13 → 3.15.
2022-03-28 16:55:41 +02:00
Yu Watanabe dd2396f20d Merge pull request #22861 from poettering/journald-sigterm
journald: don't let SIGTERM starve indefinitely
2022-03-26 00:27:47 +09:00
Lennart Poettering 47f04c2a69 journal-file: if we are going down, don't use event loop to schedule post
The event loop is already shutting down, hence no point in using it
anymore, it's not going to run any further iteration.
2022-03-25 10:03:00 +01:00
Lennart Poettering e540c5a621 journal: don't talk about -1 in context of unsigned values 2022-03-25 09:59:09 +01:00
Lennart Poettering 49615dbd81 journal-file: merge compress/seal bool args into a single flags param
Just some modernization/refactoring.

No change in behaviour, just let's do how we do things these days: use
flags param instead of list of bools.
2022-03-25 09:59:09 +01:00
Yu Watanabe 00adc340bb inotify-util: declare iterator in FOREACH_INOTIFY_EVENT()
This also makes the macro check if the event is actually in the buffer,
and if it is not, then log about that and finish the loop.
2022-03-24 23:12:34 +00:00
Yu Watanabe 93e04eb43b test: add tests for device id 2022-03-23 21:57:39 +09:00
Yu Watanabe 13659527ef sd-device: use path_find_last_component() to set driver subsystem 2022-03-23 21:57:39 +09:00
Zbigniew Jędrzejewski-Szmek 5980d46304 strv: declare iterator of FOREACH_STRING() in the loop
Same idea as 03677889f0.

No functional change intended. The type of the iterator is generally changed to
be 'const char*' instead of 'char*'. Despite the type commonly used, modifying
the string was not allowed.

I adjusted the naming of some short variables for clarity and reduced the scope
of some variable declarations in code that was being touched anyway.
2022-03-23 11:50:18 +01:00
Yu Watanabe 14acae357b Merge pull request #22825 from keszybz/assorted-cleanups
Assorted cleanups
2022-03-23 11:34:46 +09:00
Zbigniew Jędrzejewski-Szmek dba8ef106e sd-bus: use _cleanup_ in one more place 2022-03-22 14:07:53 +01:00
Lennart Poettering 63aac21c5e sd-device: use path_compare() rather than strcmp() for sorting paths
When sorting paths it actually matters to use the right comparison
function. Example:

```
a/x
a-b/y
a_/z
```

I think people would probably expect this:

```
a/x
a-b/y
a_a/z
```

but if you use strcmp() instead of path_compare() you'd instead get:

```
a-b/y
a/x
a_a/z
```

That's because `/` is between `-` and `a` in the ascii table. I think
that's quite confusing, and we shouldn#t order that way hence.

As discussed: https://github.com/systemd/systemd/pull/22662#discussion_r831174776
2022-03-22 13:10:41 +01:00
Lennart Poettering a3f47f48b0 sd-device: fix trivial typo 2022-03-22 13:10:40 +01:00
Yu Watanabe d8b50e5df7 sd-device-enumerator: support to list only initialized or uninitialized devices 2022-03-22 15:27:06 +09:00
Yu Watanabe 3c5cc23a93 sd-device-enumerator: introduce device_enumerator_scan_devices_and_subsystems() 2022-03-22 15:27:06 +09:00