Age | Commit message (Collapse) | Author |
|
A last minute change to commit 189d09a42e054bebd91ea9690fede33b41996260
caused a build failure. This fixes it.
Signed-off-by: Richard Yao <ryao@gentoo.org>
|
|
unshare() is a linux syscall that we need. Unfortunately, access to it
depends on __GNU_SOURCE, which we would like to avoid. As such, we
define a macro to invoke it by its syscall code. This is necessary to
avoid the following warning from Clang:
implicit declaration of function 'unshare' is invalid in C99
[-Wimplicit-function-declaration]
Signed-off-by: Richard Yao <ryao@gentoo.org>
|
|
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
|
|
|
|
|
|
|
|
|
|
Changes to rules were introduced by
7c2dee4a4d7f1b264031daaee786a8fe429884e1 while builtin-blkid support was
introduced in other commits. The removal of systemd resulted in this
code causing linker errors. This code adds complexity with no clear
benefit, so we remove it.
Signed-off-by: Richard Yao <ryao@gentoo.org>
|
|
Changes to rules were introduced by
06316d9f1a91b4d3efdb7402e72498cb3deb1806 while kmod support was
introduced in other commits. A ton of commits were made involving kmod
and it is quite clear that it is broken, so we remove it.
This changes our rules to depend on modprobe. As long as the modprobe
binary is in /, and not /usr, udev module loading should function
properly.
Signed-off-by: Richard Yao <ryao@gentoo.org>
|
|
The original Makefile.am was drawn to the top level. This commit
breaks it out into the various directories with SUBDIRS connecting
them. This makes each directory easier to maintain.
|
|
This commit is a first attempt to isolate the udev code from the
remaining code base. It intentionally does not modify any files
but purely delete files which, on a first examination, appear to
not be needed. This is a sweeping commit which may easily have
missed needed code. Files can be retrieved by doing a checkout
from the previous commit:
git checkout 2944f347d0 -- <filename>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
https://bugs.freedesktop.org/show_bug.cgi?id=55213
|
|
https://bugzilla.redhat.com/show_bug.cgi?id=858780
|
|
Note: I did s/MANAGER/SYSTEMD/ everywhere, even though it makes the
patch quite verbose. Nevertheless, keeping MANAGER prefix in some
places, and SYSTEMD prefix in others would just lead to confusion down
the road. Better to rip off the band-aid now.
|
|
When looking for symlinks, it doesn't make sense to error-out if
the directory is missing. The user might delete an empty directory.
This check caused test-unit-file to fail when run before installation.
|
|
|
|
https://bugzilla.redhat.com/show_bug.cgi?id=855863
|
|
state
|
|
|
|
- don't use pivot_root() anymore, just reuse root hierarchy
- first create all mounts, then mark them read-only so that we get the
right behaviour when people want writable mounts inside of
read-only mounts
- don't pass invalid combinations of MS_ constants to the kernel
|
|
CC src/test/test_job_type-test-job-type.o
../src/test/test-job-type.c:40:25: warning: implicit conversion from enumeration type
'enum UnitType' to different enumeration type 'ServiceType' (aka 'enum ServiceType')
[-Wconversion]
.type = UNIT_SERVICE
^~~~~~~~~~~~
|
|
|
|
|
|
unit names
This makes sure that
systemctl status /home
is implicitly translated to:
systemctl status /home.mount
Similar, /dev/foobar becomes dev-foobar.device.
Also, all characters that cannot be part of a unit name are implicitly
escaped.
|
|
This reverts commit 9b5af248f04b6cad8a5bca836e89a39e9f6823d9.
Udev now explicitely labels only files/directories in /dev. The selinux
array API is not released and will not work on other distros at this moment.
|
|
context
|
|
systemd-udev is currently incorrectly labeling /run/udev/* content because it is
using selinux prefix labeling of /dev. This patch will allow systemd-udev to
use prefix labeling of /dev and /run.
|
|
|
|
Two of our current job types are special:
JOB_TRY_RESTART, JOB_RELOAD_OR_START.
They differ from other job types by being sensitive to the unit active state.
They perform some action when the unit is active and some other action
otherwise. This raises a question: when exactly should the unit state be
checked to make the decision?
Currently the unit state is checked when the job becomes runnable. It's more
sensible to check the state immediately when the job is added by the user.
When the user types "systemctl try-restart foo.service", he really intends
to restart the service if it's running right now. If it isn't running right
now, the restart is pointless.
Consider the example (from Bugzilla[1]):
sleep.service takes some time to start.
hello.service has After=sleep.service.
Both services get started. Two jobs will appear:
hello.service/start waiting
sleep.service/start running
Then someone runs "systemctl try-restart hello.service".
Currently the try-restart operation will block and wait for
sleep.service/start to complete.
The correct result is to complete the try-restart operation immediately
with success, because hello.service is not running. The two original
jobs must not be disturbed by this.
To fix this we introduce two new concepts:
- a new job type: JOB_NOP
A JOB_NOP job does not do anything to the unit. It does not pull in any
dependencies. It is always immediately runnable. When installed to a unit,
it sits in a special slot (u->nop_job) where it never conflicts with
the installed job (u->job) of a different type. It never merges with jobs
of other types, but it can merge into an already installed JOB_NOP job.
- "collapsing" of job types
When a job of one of the two special types is added, the state of the unit
is checked immediately and the job type changes:
JOB_TRY_RESTART -> JOB_RESTART or JOB_NOP
JOB_RELOAD_OR_START -> JOB_RELOAD or JOB_START
Should a job type JOB_RELOAD_OR_START appear later during job merging, it
collapses immediately afterwards.
Collapsing actually makes some things simpler, because there are now fewer
job types that are allowed in the transaction.
[1] Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=753586
|
|
|
|
|
|
|
|
|
|
|
|
|