1
0
mirror of https://github.com/systemd/systemd.git synced 2024-11-01 09:21:26 +03:00
Commit Graph

20079 Commits

Author SHA1 Message Date
Lennart Poettering
4f923a1984 nspawn: drop sd_booted() check
We have no such check in any of the other tools, hence don't have one in
nspawn either.

(This should make things nicer for Rocket, among other things)

Note: removing this check does not mean that we support running nspawn
on non-systemd. We explicitly don't. It just means that we remove the
check for running it like that. You are still on your own if you do...
2015-03-31 15:36:53 +02:00
Iago López Galeiras
4543768d13 nspawn: change filesystem type from "bind" to NULL in mount() syscalls
Try to keep syscalls as minimal as possible.
2015-03-31 15:36:53 +02:00
Lennart Poettering
ffd8644641 man: fix line breaks in code examples 2015-03-31 15:36:53 +02:00
Andrew Jones
ce09c71d56 ARM: detect-virt: detect QEMU/KVM
QEMU/KVM guests do not have hypervisor nodes, but they do have
fw-cfg nodes (since qemu v2.3.0-rc0). fw-cfg nodes are documented,
see kernel doc Documentation/devicetree/bindings/arm/fw-cfg.txt,
and therefore we should be able to rely on it in this detection.

Unfortunately, we currently don't have enough information in the
DT, or elsewhere, to determine if we're using KVM acceleration
with QEMU or not, so we can only report 'qemu' at this time, even
if KVM is in use. This shouldn't really matter in practice though,
because if detect-virt is used interactively it will be clear to
the user whether or not KVM acceleration is present by the overall
speed of the guest. If used by a script, then the script's behavior
should not change whether it's 'qemu' or 'kvm'. QEMU emulated
guests and QEMU/KVM guests of the same type should behave
identically, only the speed at which they run should differ.
2015-03-31 15:36:53 +02:00
Andrew Jones
db6a86897e ARM: detect-virt: detect Xen 2015-03-31 15:36:53 +02:00
Andrew Jones
b8f1df8264 detect-virt: use /proc/device-tree
Kernel doc Documentation/ABI/testing/sysfs-firmware-ofw says that
the /proc/device-tree symlink should be used, as opposed to
directly accessing /sys/firmware/devicetree/base. The former is
ABI, but not the later.
2015-03-31 15:36:53 +02:00
Alexander Sverdlin
c87664fef4 systemd-bootchart: Repair Entropy Graph
Entropy Graph code doesn't handle the error condition if open() of /proc entry
fails. Moreover, the file is only opened once and only first sample will contain
the correct value because the return value of pread() is also not handled
properly and file is not re-opened. Fix both problems.
2015-03-30 09:38:17 +02:00
Alexander Sverdlin
58ec01b35c systemd-bootchart: Prevent leaking file descriptors in open-fdopen combination
Correctly handle the potential failure of fdopen() (because of OOM, for instance)
after potentially successful open(). Prevent leaking open fd in such case.
2015-03-30 09:37:11 +02:00
Alexander Sverdlin
9964a9eb7b systemd-bootchart: Prevent closing random file descriptors
If the kernel has no CONFIG_SCHED_DEBUG option set, systemd-bootchart produces
empty .svg file. The reason for this is very fragile file descriptor logic in
log_sample() and main() (/* do some cleanup, close fd's */ block). There are
many places where file descriptors are closed on failure (missing SCHED_DEBUG
provokes it), but there are several problems with it:
 - following iterations in the loop see that the descriptor is non zero and do
   not open the corresponding file again;
 - "some cleanup" code closes already closed files and the descriptors are reused
   already, in particular for resulting .svg file;
 - static "vmstat" and "schedstat" variables in log_sample() made the situation
   even worse.

These are the strace fragments:

[...]
close(7)                                = -1 EBADF (Bad file descriptor)
close(-1)                               = -1 EBADF (Bad file descriptor)
pread(7, 0xbea60a2c, 4095, 0)           = -1 EBADF (Bad file descriptor)
close(7)                                = -1 EBADF (Bad file descriptor)
close(-1)                               = -1 EBADF (Bad file descriptor)
pread(7, 0xbea60a2c, 4095, 0)           = -1 EBADF (Bad file descriptor)
close(7)                                = -1 EBADF (Bad file descriptor)
close(-1)                               = -1 EBADF (Bad file descriptor)
getdents64(4, /* 0 entries */, 32768)   = 0
clock_gettime(CLOCK_MONOTONIC, {24, 783843501}) = 0
nanosleep({0, 5221792}, NULL)           = 0
clock_gettime(CLOCK_MONOTONIC, {24, 789726835}) = 0
lseek(4, 0, SEEK_SET)                   = 0
pread(5, "nr_free_pages 52309\nnr_alloc_bat"..., 4095, 0) = 685
pread(6, "version 15\ntimestamp 4294939775\n"..., 4095, 0) = 86
getdents64(4, /* 99 entries */, 32768)  = 2680
pread(7, 0xbea60a2c, 4095, 0)           = -1 EBADF (Bad file descriptor)
close(7)                                = -1 EBADF (Bad file descriptor)
close(-1)                               = -1 EBADF (Bad file descriptor)
pread(8, 0xbea60a2c, 4095, 0)           = -1 EBADF (Bad file descriptor)
close(8)                                = -1 EBADF (Bad file descriptor)
close(-1)                               = -1 EBADF (Bad file descriptor)
pread(9, 0xbea60a2c, 4095, 0)           = -1 EBADF (Bad file descriptor)
close(9)                                = -1 EBADF (Bad file descriptor)
[...]

where it obviously tries to close same and reused decriptors many times, also
passing return code "-1" instead of descriptor...

[...]
close(7)                                = -1 EBADF (Bad file descriptor)
close(-1)                               = -1 EBADF (Bad file descriptor)
pipe2([7, 8], O_CLOEXEC)                = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0xb6fd0068) = 192
close(8)                                = 0
fcntl64(7, F_SETFD, 0)                  = 0
fstat64(7, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6fd2000
read(7, "[    0.074507] calling  vfp_init"..., 4096) = 4096
[...]
read(7, "s)\n[    6.228910] UBIFS: reserve"..., 4096) = 4096
read(7, "trary Executable File Formats Fi"..., 4096) = 1616
read(7, "", 4096)                       = 0
close(7)                                = 0
wait4(192, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 192
2015-03-30 01:08:05 +02:00
Tom Gundersen
333e07b793 test: udev - add gdb support 2015-03-27 16:23:46 +01:00
Tom Gundersen
af3aa30274 network: don't pass NULL to udev_device_get_driver() 2015-03-27 16:23:46 +01:00
Harald Hoyer
a06c8219a3 50-udev-default.rules: don't run anything but REMOVE_CMD on remove
we don't want to run usb_id and input_id on ACTION=="remove"
2015-03-27 15:42:04 +01:00
Harald Hoyer
cb80d06c74 cdrom_id: unroll and simplify data check loop
also removes this warning:

src/udev/cdrom_id/cdrom_id.c: In function ‘cd_media_info.isra.13’:
src/udev/cdrom_id/cdrom_id.c:612:12: warning: assuming signed overflow
does not occur when assuming that (X + c) >= X is always true
[-Wstrict-overflow]
 static int cd_media_info(struct udev *udev, int fd)
            ^
2015-03-27 14:57:38 +01:00
Harald Hoyer
a7f7d1bde4 fix gcc warnings about uninitialized variables
like:

src/shared/install.c: In function ‘unit_file_lookup_state’:
src/shared/install.c:1861:16: warning: ‘r’ may be used uninitialized in
this function [-Wmaybe-uninitialized]
         return r < 0 ? r : state;
                ^
src/shared/install.c:1796:13: note: ‘r’ was declared here
         int r;
             ^
2015-03-27 14:57:38 +01:00
Patrik Flykt
47d45d3cde networkd-dhcp6: Do not handle prefix expiry
Expiring prefixes need not be handled anymore as the kernel has been
instructed not to create routes for DHCPv6 assigned addresses via the
IFA_F_NOPREFIXROUTE flag.
2015-03-27 13:57:24 +02:00
Patrik Flykt
851c9f8273 systemd-networkd: Use IFA_F_NOPREFIXROUTE with IPv6 addresses
The IFA_F_NOPREFIXROUTE flag prevents the kernel from creating new onlink
prefixes when a DHCPv6 IPv6 address with a prefix length is set from user
space. IPv6 routing will follow the onlink status from Router Advertisment
Prefix Information options or any manually set route, which is the correct
thing to do.

As this flag has a larger value than what fits into an unsigned char, update
the flag attribute to an uint32_t and set it with an IFA_FLAGS attribute
when writing netlink messages to the kernel.
2015-03-27 13:57:13 +02:00
Patrik Flykt
350e7a14dd sd-rtnl: Always enable IFA_FLAGS
IFA_FLAGS is a discrete value and has no preprocessor #define defined for
it. Fix this by always using the value.
2015-03-27 13:56:43 +02:00
Lennart Poettering
4034a06ddb util: rework word parsing and c unescaping code
When parsing words from input files, optionally automatically unescape
the passed strings, controllable via a new flags parameter.

Make use of this in tmpfiles, and port everything else over, too.

This improves parsing quite a bit, since we no longer have to process the
same string multiple times with different calls, where an earlier call
might corrupt the input for a later call.
2015-03-26 11:56:22 +01:00
Lennart Poettering
be3ce3014e importd: simplify expression 2015-03-26 11:56:22 +01:00
Lennart Poettering
1532227a19 tmpfiles: minor simplification 2015-03-26 11:56:22 +01:00
Patrik Flykt
8dc1b304ee TODO: Nothing to be done for IPv6 DAD, handled by kernel 2015-03-25 16:04:19 +02:00
Tobias Hunger
093c2cfe3b fstab-generator: don't accept missing root=, but accept root=none
And other non-device entries (like fstab does).

Mount whatever the user asked to be mounted on / on the kernel
command line. Do less sanity check and do *not* bail out
when the mount device looks strange or does not exist.

This basically makes the changes for deviceless filesystems
from yesterday unnecessary and is in line with what we do for
filesystems set up in fstab.

Remove some code that is now dead (reverting fb02a2775a and
b0438462).

[tomegun:
  - change patch title/description a bit.
  - don't touch the /usr logic, that would be a separate change and
    we don't currently have a convincing use-case for that.
  - don't bail out on /sys ro. This only makes sense in containers,
    where we would not be doing this anyway. If there is a use-case
    we could consider that as a separate patch.]
2015-03-25 00:00:46 +01:00
Thomas Hindoe Paaboel Andersen
a4135d3234 tmpfiles: avoid out of bounds read
Otherwise this will go wrong for 'v'.
2015-03-24 23:53:09 +01:00
Mantas Mikulėnas
afa91a7231 rules: storage - support MemoryStick (non-Pro) cards
These are handled by a different driver than MemoryStick Pro.
2015-03-24 23:34:58 +01:00
Kay Sievers
174470fbf1 rules: storage - whitelist partitioned MS & MMC devices
On Mon, Mar 23, 2015 at 8:55 AM, Mantas Mikulėnas <grawity@gmail.com> wrote:
> On Tue, Mar 17, 2015 at 11:50 PM, Kay Sievers <kay@vrfy.org> wrote:
>> On Tue, Mar 17, 2015 at 5:00 PM, Mantas Mikulėnas <grawity@gmail.com>
>> wrote:
>> > Accidentally dropped in 1aff20687f.
>> > ---
>> >  rules/60-persistent-storage.rules | 2 +-
>> >  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> > +KERNEL!="loop*|mmcblk[0-9]*|mspblk[0-9]*|nvme*|sd*|sr*|vd*",
>> > GOTO="persistent_storage_end"
>>
>> We can't do that, we need to ignore the mmc*rpmb devices:
>>
>> http://cgit.freedesktop.org/systemd/systemd/commit/?id=b87b01cf83947f467f3c46d9831cd67955fc46b9
>>
>> Maybe "mmcblk*[0-9]" will work?
>
> Yeah, that would probably work (the names are like mmcblk0p1 etc.)
2015-03-24 23:28:25 +01:00
Tom Gundersen
6bd7941ece TODO 2015-03-24 23:07:05 +01:00
Thomas Hindoe Paaboel Andersen
eef8df097d timedatectl: remove unused variables 2015-03-24 22:56:28 +01:00
David Strauss
ea5bbe3467 man: Second example systemd-socket-proxyd does not need a Unix socket listener. 2015-03-24 12:25:56 -07:00
Tom Gundersen
c6e20ceb09 rules: storage - don't apply rules to remove events
This line was accidentally lost in 52346b5f54.
2015-03-24 15:23:49 +01:00
Kay Sievers
16c6ea2934 timedate: remove daylight saving time handling and tzfile parser
We planned to support (the conceptually broken) daylight saving
time/local time features in the kernel, SCSI, networking, FAT
filesystem, but it turned out to be a race we cannot win and do
not want to get involved. Systemd should not fiddle with daylight
saving time or parse timezone information itself.

Leave everything to glibc or tools like date(1) and do not make any
promises or raise expectations that systemd should handle anything
like this.
2015-03-24 15:03:36 +01:00
Shawn Landden
3e5e74d5b7 timedatectl: fix when queried system has differn't timezone
Also allow getting time from time(2) when BUS_TRANSPORT_MACHINE.

v2: check for error
2015-03-24 13:42:43 +01:00
Sergey Ptashnick
c03d5c8e76 po: update Russian translation
Add strings for importd, following 587fec427c.
2015-03-24 00:12:03 -04:00
Shawn Landden
de49f273e2 bootchart: more useful error message for common error
Reported-by: tfirg_ on IRC
2015-03-24 00:12:03 -04:00
Shawn Landden
b53a2485a4 bootchart: remove duplicated code, prevent creating empty files
In Debian and rawhide Fedora, which have CONFIG_SCHEDSTATS=n,
bootchart creates empty files in /run/log before printing an error.
Stop doing that.

Moreover this duplicated part of the code doesn't even have error checking
so there is no error avoided by doing this early.

Reported-by: tfirg_ on IRC
2015-03-24 00:12:03 -04:00
Tobias Hunger
fb02a2775a fstab-generator: Do not check deviceless filesystems
There is no need to check those.
2015-03-24 00:12:03 -04:00
Tobias Hunger
b043846208 fstab-generator: Support root on tmpfs (or other deviceless FS)
This allows for stateless systems.
2015-03-24 00:12:03 -04:00
Alin Rauta
ea342a99fd sd-rtnl: handle empty multi-part message from the kernel
We strips out NLMSG_DONE piece from a multi-part message adding into the
receive queue only the messages containing actual data.

If we send a request to the kernel for getting the forwarding database table (just an example),
the response will be a multi-part message like below:
1. FDB entry 1;
2. FDB entry 2;
3. NLMSG_DONE;

We strip out "3. NLMSG_DONE;" part and places into the receive queue a pointer to
"1. FDB entry 1; 2. FDB entry 2".

But if the FDB table is empty, the respose from the kernel will look like below:
1. NLMSG_DONE;

We strip out "1. NLMSG_DONE;" part and since there is no actual data got, it continues
waiting until reaching timeout.

Therefore, a call to "sd_rtnl_call" to send and wait for a response from kernel will exit
with timeout which is interpreted as error in communication.

This patch puts the NLMSG_DONE message on the receive queue if it ends an empty multi-part
message. This situation is detected in sd_rtnl_call() and in the callback code and NULL is
returned to the caller instead.

[tomegun:
  - added/reworded commit message
  - extend the same support to sd_rtnl_call_async()
  - drop debug logging from library, we only do this if something is really wrong, but an
    empty multi-part message is perfectly normal
  - modernize the code we touch whilst we are at it]
2015-03-23 22:36:17 +01:00
Chris Morgan
eaa5251d91 man: add journal-remote.conf(5) 2015-03-22 10:14:50 -04:00
Zbigniew Jędrzejewski-Szmek
81b8439902 timedated: fix enable/disable reversal
Bug introduced in 984f1b1d1b. The state was flipped later,
but the enable/disable routine made use of the state to decide
what to do.

context_enable_ntp() and context_start_ntp() now get the desired
state directly, so the Context parameter can be removed.
2015-03-21 19:55:33 -04:00
Zbigniew Jędrzejewski-Szmek
df823e23f0 core: make SELinux enable/disable check symmetric
We'd use the generic check for disable, and a unit-file-specific one for enable.
Use the more specific one both ways.

systemd[1]: SELinux access check scon=system_u:system_r:systemd_timedated_t:s0 tcon=system_u:system_r:init_t:s0 tclass=system perm=disable path=(null) cmdline=/usr/lib/systemd/systemd-timedated: -13
systemd[1]: SELinux access check scon=system_u:system_r:systemd_timedated_t:s0 tcon=system_u:object_r:systemd_unit_file_t:s0 tclass=service perm=enable path=/usr/lib/systemd/system/systemd-timesyncd.service cmdline=/usr/lib/systemd/systemd-timedated: -13

https://bugzilla.redhat.com/show_bug.cgi?id=1014315
2015-03-21 19:55:33 -04:00
Zbigniew Jędrzejewski-Szmek
192b98b8fe timedated: flip internal status after executing operation
timedated would set the internal status before calling out to systemd to do
the actual change. When the operation was refused because of a SELinux denial,
the state kept in timedated would get out of sync, and the second call from
timedatectl would appear to succeed.

https://bugzilla.redhat.com/show_bug.cgi?id=1014315
2015-03-21 17:40:57 -04:00
Michael Olbrich
8e8ba79229 missing.h: add more btrfs types and defines 2015-03-21 15:37:22 -04:00
Zbigniew Jędrzejewski-Szmek
e0952d9d02 fstab-generator: ignore invalid swap priority
A failed priority is not something worth stopping boot over. Most people
have only one swap device, in which case priority is irrelevant, and even
if there is more than one swap device, they are all usable, and ignoring the
priority field should only result in some loss of performance.

The kernel will report the priority as -1 if not set, so it's easy for
people to make this mistake.

https://bugzilla.redhat.com/show_bug.cgi?id=1204336
2015-03-21 11:54:46 -04:00
Zbigniew Jędrzejewski-Szmek
8bde1d0c9d networkd: use LOG_WARN not LOG_ERR for non-fatal errors 2015-03-21 11:51:43 -04:00
Zbigniew Jędrzejewski-Szmek
2e6534a9a5 shared/mkdir: do not set errno in addition to return value
All callers look at the return value anyway.
2015-03-21 11:51:42 -04:00
David Herrmann
9a2e1571c0 rules: avoid 'device/' accesses
We should never access parents, as the sysfs hierarchy is in no way
stable. Use KERNELS== etc. to match on a parent, then access it via
$attr{} (which accesses the matching device, not the current device).
2015-03-20 12:28:12 +01:00
David Herrmann
568d800b78 rules: fix input-name for keyboard rules
We match on the evdev node, but only the parent has a "name" attribute.
Use $attr{device/name} to access it.

This is borked since 2013, I wonder how that ever worked? Maybe this will
suddenly fix all the DMI-based key detections.

Thanks to Peter Hutterer for catching this!
2015-03-20 10:45:42 +01:00
Goffredo Baroncelli
fa3f5fd2d3 man: add h/H to tmpfiles.d(5) 2015-03-19 22:23:01 -04:00
Goffredo Baroncelli
22c3a6cadb Allow systemd-tmpfiles to set the file/directory attributes
Allow systemd-tmpfiles to set the file/directory attributes, like
chattr(1) does. Two more commands are added: 'H' and 'h' to set the
attributes, recursively and not.
2015-03-19 22:20:12 -04:00
Goffredo Baroncelli
5b9fbd354e Add change_attr_fd()
Add change_attr_fd() function to modify the file/directory attribute.
2015-03-19 22:20:12 -04:00