chiark / gitweb /
elogind.git
6 years agologind: introduce session-devices
David Herrmann [Tue, 17 Sep 2013 21:39:04 +0000 (23:39 +0200)]
logind: introduce session-devices

A session-device is a device that is bound to a seat and used by a
session-controller to run the session. This currently includes DRM, fbdev
and evdev devices. A session-device can be created via RequestDevice() on
the dbus API of the session. You can drop it via ReleaseDevice() again.
Once the session is destroyed or you drop control of the session, all
session-devices are automatically destroyed.

Session devices follow the session "active" state. A device can be
active/running or inactive/paused. Whenever a session is not the active
session, no session-device of it can be active. That is, if a session is
not in foreground, all session-devices are paused.
Whenever a session becomes active, all devices are resumed/activated by
logind. If it fails, a device may stay paused.

With every session-device you request, you also get a file-descriptor
back. logind keeps a copy of this fd and uses kernel specific calls to
pause/resume the file-descriptors. For example, a DRM fd is muted
by logind as long as a given session is not active. Hence, the fd of the
application is also muted. Once the session gets active, logind unmutes
the fd and the application will get DRM access again.
This, however, requires kernel support. DRM devices provide DRM-Master for
synchronization, evdev devices have EVIOCREVOKE (pending on
linux-input-ML). fbdev devices do not provide such synchronization methods
(and never will).
Note that for evdev devices, we call EVIOCREVOKE once a session gets
inactive. However, this cannot be undone (the fd is still valid but mostly
unusable). So we reopen a new fd once the session is activated and send it
together with the ResumeDevice() signal.

With this infrastructure in place, compositors can now run without
CAP_SYS_ADMIN (that is, without being root). They use RequestControl() to
acquire a session and listen for devices via udev_monitor. For every
device they want to open, they call RequestDevice() on logind. This
returns a fd which they can use now. They no longer have to open the
devices themselves or call any privileged ioctls. This is all done by
logind.
Session-switches are still bound to VTs. Hence, compositors will get
notified via the usual VT mechanisms and can cleanup their state. Once the
VT switch is acknowledged as usual, logind will get notified via sysfs and
pause the old-session's devices and resume the devices of the new session.

To allow using this infrastructure with systems without VTs, we provide
notification signals. logind sends PauseDevice("force") dbus signals to
the current session controller for every device that it pauses. And it
sends ResumeDevice signals for every device that it resumes. For
seats with VTs this is sent _after_ the VT switch is acknowledged. Because
the compositor already acknowledged that it cleaned-up all devices.
However, for seats without VTs, this is used to notify the active
compositor that the session is about to be deactivated. That is, logind
sends PauseDevice("force") for each active device and then performs the
session-switch. The session-switch changes the "Active" property of the
session which can be monitored by the compositor. The new session is
activated and the ResumeDevice events are sent.

For seats without VTs, this is a forced session-switch. As this is not
backwards-compatible (xserver actually crashes, weston drops the related
devices, ..) we also provide an acknowledged session-switch. Note that
this is never used for sessions with VTs. You use the acknowledged
VT-switch on these seats.

An acknowledged session switch sends PauseDevice("pause") instead of
PauseDevice("force") to the active session. It schedules a short timeout
and waits for the session to acknowledge each of them with
PauseDeviceComplete(). Once all are acknowledged, or the session ran out
of time, a PauseDevice("force") is sent for all remaining active devices
and the session switch is performed.
Note that this is only partially implemented, yet, as we don't allow
multi-session without VTs, yet. A follow up commit will hook it up and
implemented the acknowledgements+timeout.

The implementation is quite simple. We use major/minor exclusively to
identify devices on the bus. On RequestDevice() we retrieve the
udev_device from the major/minor and search for an existing "Device"
object. If no exists, we create it. This guarantees us that we are
notified whenever the device changes seats or is removed.

We create a new SessionDevice object and link it to the related Session
and Device. Session->devices is a hashtable to lookup SessionDevice
objects via major/minor. Device->session_devices is a linked list so we
can release all linked session-devices once a device vanishes.

Now we only have to hook this up in seat_set_active() so we correctly
change device states during session-switches. As mentioned earlier, these
are forced state-changes as VTs are currently used exclusively for
multi-session implementations.

Everything else are hooks to release all session-devices once the
controller changes or a session is closed or removed.

6 years agoUpdate TODO
Lennart Poettering [Tue, 17 Sep 2013 22:11:46 +0000 (17:11 -0500)]
Update TODO

6 years agolibudev: add missing 'global' to symbol export
Kay Sievers [Tue, 17 Sep 2013 21:37:42 +0000 (16:37 -0500)]
libudev: add missing 'global' to symbol export

6 years agojournald: avoid NSS in journald
Lennart Poettering [Tue, 17 Sep 2013 21:42:36 +0000 (16:42 -0500)]
journald: avoid NSS in journald

In order to avoid a deadlock between journald looking up the
"systemd-journal" group name, and nscd (or anyother NSS backing daemon)
logging something back to the journal avoid all NSS in journald the same
way as we avoid it from PID 1.

With this change we rely on the kernel file system logic to adjust the
group of created journal files via the SETGID bit on the journal
directory. To ensure that it is always set, even after the user created
it with a simply "mkdir" on the shell we fix it up via tmpfiles on boot.

6 years agotmpfiles: add a new "m" line type that adjusts user/group/mode of a file if it exists
Lennart Poettering [Tue, 17 Sep 2013 21:33:30 +0000 (16:33 -0500)]
tmpfiles: add a new "m" line type that adjusts user/group/mode of a file if it exists

6 years agotest-fileio: assume that Buffers may be missing
Zbigniew Jędrzejewski-Szmek [Tue, 17 Sep 2013 20:50:49 +0000 (15:50 -0500)]
test-fileio: assume that Buffers may be missing

6 years agoMake test-login and test-sleep output debugging
Zbigniew Jędrzejewski-Szmek [Tue, 17 Sep 2013 20:13:18 +0000 (15:13 -0500)]
Make test-login and test-sleep output debugging

Without a call to log_parse_environment(), things
like SYSTEMD_LOG_LEVEL do not work.

6 years agoUse first partition in /proc/swaps for hibernation test
Zbigniew Jędrzejewski-Szmek [Tue, 17 Sep 2013 20:12:16 +0000 (15:12 -0500)]
Use first partition in /proc/swaps for hibernation test

It seems that the kernel uses the first configured partition
for hibernation. If it is too full, hibernation will fail. Test
that directly.

6 years agoUse udev_encode_string in fstab_node_to_udev_node
Dave Reisner [Tue, 17 Sep 2013 19:47:08 +0000 (15:47 -0400)]
Use udev_encode_string in fstab_node_to_udev_node

Resolves a longstanding bug which caused this function to wrongly
handle (escape) valid utf8 characters.

6 years agomove utf8 functions from libudev-private.h to utf8.h
Dave Reisner [Tue, 17 Sep 2013 19:39:09 +0000 (15:39 -0400)]
move utf8 functions from libudev-private.h to utf8.h

There's now some more obvious overlap amongst the two utf8 validation
functions, but no more than there already was previously.

This also adds some menial tests for anyone who wants to do more
merging of these two in the future.

6 years agoUpdate TODO
Lennart Poettering [Tue, 17 Sep 2013 20:28:22 +0000 (15:28 -0500)]
Update TODO

6 years agojournald: log the slice of a process along with each message in _SYSTEMD_SLICE=
Lennart Poettering [Tue, 17 Sep 2013 20:21:00 +0000 (15:21 -0500)]
journald: log the slice of a process along with each message in _SYSTEMD_SLICE=

6 years agoTEST-03-JOBS/test.sh: do not output the "failed" if it does not exist
Harald Hoyer [Mon, 16 Sep 2013 23:07:43 +0000 (18:07 -0500)]
TEST-03-JOBS/test.sh: do not output the "failed" if it does not exist

6 years agoTEST-01-BASIC, TEST-02-CRYPTSETUP: fixed strip
Harald Hoyer [Mon, 16 Sep 2013 23:06:57 +0000 (18:06 -0500)]
TEST-01-BASIC, TEST-02-CRYPTSETUP: fixed strip

also output more status about failed jobs

6 years agocgroup: get rid of MemorySoftLimit=
Lennart Poettering [Tue, 17 Sep 2013 19:58:00 +0000 (14:58 -0500)]
cgroup: get rid of MemorySoftLimit=

The cgroup attribute memory.soft_limit_in_bytes is unlikely to stay
around in the kernel for good, so let's not expose it for now. We can
readd something like it later when the kernel guys decided on a final
API for this.

6 years agoNEWS: add some clarifications
Lennart Poettering [Tue, 17 Sep 2013 18:57:04 +0000 (13:57 -0500)]
NEWS: add some clarifications

As suggested by Colin Guthrie on the ML.

6 years agoudev: path_id - fix by-path link generation for scm devices
Sebastian Ott [Tue, 17 Sep 2013 17:16:08 +0000 (19:16 +0200)]
udev: path_id - fix by-path link generation for scm devices

Set some_transport = true to prevent scm devices from being ignored.

Suggested-by: Harald Hoyer <harald@redhat.com>
Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
6 years agologind: extract has_vts() from can_multi_session()
David Herrmann [Tue, 17 Sep 2013 15:40:02 +0000 (17:40 +0200)]
logind: extract has_vts() from can_multi_session()

We currently use seat_can_multi_session() to test for two things:
 * whether the seat can handle session-switching
 * whether the seat has VTs

As both are currently logically equivalent, we didn't care. However, we
want to allow session-switching on seats without VTs, so split this helper
into:
 * seat_can_multi_session(): whether session-switching is supported
 * seat_has_vts(): whether the seat has VTs

Note that only one seat on a system can have VTs. There is only one set of
them. We automatically assign them to seat0 as usual.

With this patch in place, we can easily add new session-switching/tracking
methods without breaking any VT code as it is now protected by has_vts(),
no longer by can_multi_session().

6 years agologind: fix session_activate(vtnr = 0)
David Herrmann [Tue, 17 Sep 2013 15:40:01 +0000 (17:40 +0200)]
logind: fix session_activate(vtnr = 0)

VT numbers start with 1. If a session has vtnr == 0, we must not assume it
is running on a VT.
Note that this could trigger the assert() below as CreateSession() sets
vtnr to 0, not <0.

6 years agologind: fix seat_can_tty() to check for VTs
David Herrmann [Tue, 17 Sep 2013 15:40:00 +0000 (17:40 +0200)]
logind: fix seat_can_tty() to check for VTs

A seat provides text-logins if it has VTs. This is always limited to seat0
so the seat_is_seat0() check is correct. However, if VTs are disabled, no
seat provides text-logins so we also need to check for the console-fd.

This was previously:
  return seat_is_vtconsole();
It looked right, but was functionally equivalent to seat_is_seat0(). The
rename of this helper made it more obvious that it is missing the VT test.

6 years agologind: rename vtconsole to seat0
David Herrmann [Tue, 17 Sep 2013 15:39:59 +0000 (17:39 +0200)]
logind: rename vtconsole to seat0

The seat->vtconsole member always points to the default seat seat0. Even
if VTs are disabled, it's used as default seat. Therefore, rename it to
seat0 to correctly state what it is.

This also changes the seat files in /run from IS_VTCONSOLE to IS_SEAT0. It
wasn't used by any code, yet, so this seems fine.

While we are at it, we also remove every "if (s->vtconsole)" as this
pointer is always valid!

6 years agonspawn: update unit file
Lennart Poettering [Tue, 17 Sep 2013 16:59:47 +0000 (11:59 -0500)]
nspawn: update unit file

ControlGroup= is obsolete, so let's drop it from the default nspawn unit
file.

6 years agoupdate TODO
Lennart Poettering [Tue, 17 Sep 2013 16:59:41 +0000 (11:59 -0500)]
update TODO

6 years agologind: make Session.Activate() lazy
David Herrmann [Tue, 17 Sep 2013 15:39:57 +0000 (17:39 +0200)]
logind: make Session.Activate() lazy

Currently, Activate() calls chvt(), which does an ioctl(VT_ACTIVATE) and
immediately calls seat_set_active(). However, VTs are allowed to prevent
being deactivated. Therefore, logind cannot be sure the VT_ACTIVATE call
was actually successful.

Furthermore, compositors often need to clean up their devices before they
acknowledge the VT switch. The immediate call to seat_set_active() may
modify underlying ACLs, though. Thus, some compositors may fail cleaning
up their stuff. Moreover, the compositor being switched to (if listening
to logind instead of VTs) will not be able to activate its devices if the
old VT still has them active.

We could simply add an VT_WAITACTIVE call, which blocks until the given VT
is active. However, this can block forever if the compositor hangs.

So to fix this, we make Activate() lazy. That is, it only schedules a
session-switch but does not wait for it to complete. The caller can no
longer rely on it being immediate. Instead, a caller is required to wait
for the PropertiesChanged signal and read the "Active" field.

We could make Activate() wait asynchronously for the session-switch to
complete and then send the return-message afterwards. However, this would
add a lot of state-tracking with no real gain:
 1) Sessions normally don't care whether Activate() was actually
    successful as they currently _must_ wait for the VT activation to do
    anything for real.
 2) Error messages for failed session switches can be printed by logind
    instead of the session issuing Activate().
 3) Sessions that require synchronous Activate() calls can simply issue
    the call and then wait for "Active" properties to change. This also
    allows them to implement their own timeout.

This change prepares for multi-session on seats without VTs. Forced VT
switches are always bad as compositors cannot perform any cleanup. This
isn't strictly required, but may lead to loss of information and ambiguous
error messages.
So for multi-session on seats without VTs, we must wait for the current
session to clean-up before finalizing the session-switch. This requires
Activate() to be lazy as we cannot block here.

Note that we can always implement a timeout which allows us to guarantee
the session switch to happen. Nevertheless, this calls for a lazy
Activate().

6 years agologind: add session controllers
David Herrmann [Tue, 17 Sep 2013 15:39:56 +0000 (17:39 +0200)]
logind: add session controllers

A session usually has only a single compositor or other application that
controls graphics and input devices on it. To avoid multiple applications
from hijacking each other's devices or even using the devices in parallel,
we add session controllers.

A session controller is an application that manages a session. Specific
API calls may be limited to controllers to avoid others from getting
unprivileged access to restricted resources. A session becomes a
controller by calling the RequestControl() dbus API call. It can drop it
via ReleaseControl().

logind tracks bus-names to release the controller once an application
closes the bus. We use the new bus-name tracking to do that. Note that
during ReleaseControl() we need to check whether some other session also
tracks the name before we remove it from the bus-name tracking list.

Currently, we only allow one controller at a time. However, the public API
does not enforce this restriction. So if it makes sense, we can allow
multiple controllers in parallel later. Or we can add a "scope" parameter,
which allows a different controller for graphics-devices, sound-devices
and whatever you want.
Note that currently you get -EBUSY if there is already a controller. You
can force the RequestControl() call (root-only) to drop the current
controller and recover the session during an emergency. To recover a seat,
this is not needed, though. You can simply create a new session or
force-activate it.

To become a session controller, a dbus caller must either be root or the
same user as the user of the session. This allows us to run a session
compositor as user and we no longer need any CAP_SYS_ADMIN.

6 years agologind: add infrastructure to watch busnames
David Herrmann [Tue, 17 Sep 2013 15:39:55 +0000 (17:39 +0200)]
logind: add infrastructure to watch busnames

If we want to track bus-names to allow exclusive resource-access, we need
a way to get notified when a bus-name is gone. We make logind watch for
NameOwnerChanged dbus events and check whether the name is currently
watched. If it is, we remove it from the watch-list (notification for
other objects can be added in follow-up patches).

6 years agologind: listen actively for session devices
David Herrmann [Tue, 17 Sep 2013 15:39:54 +0000 (17:39 +0200)]
logind: listen actively for session devices

Session compositors need access to fbdev, DRM and evdev devices if they
control a session. To make logind pass them to sessions, we need to
listen for them actively.

However, we avoid creating new seats for non master-of-seat devices. Only
once a seat is created, we start remembering all other session devices. If
the last master-device is removed (even if there are other non-master
devices still available), we destroy the seat. This is the current
behavior, but we need to explicitly implement it now as there may be
non-master devices in the seat->devices list.

Unlike master devices, we don't care whether our list of non-master
devices is complete. We don't export this list but use it only as cache if
sessions request these devices. Hence, if a session requests a device that
is not in the list, we will simply look it up. However, once a session
requested a device, we must be notified of "remove" udev events. So we
must link the devices somehow into the device-list.

Regarding the implementation, we now sort the device list by the "master"
flag. This guarantees that master devices are at the front and non-master
devices at the tail of the list. Thus, we can easily test whether a seat
has a master device attached.

6 years agotmpfiles: support simple specifier expansion for specified paths
Lennart Poettering [Tue, 17 Sep 2013 16:02:02 +0000 (11:02 -0500)]
tmpfiles: support simple specifier expansion for specified paths

6 years agoMake tmpdir removal asynchronous
Zbigniew Jędrzejewski-Szmek [Mon, 16 Sep 2013 20:50:38 +0000 (15:50 -0500)]
Make tmpdir removal asynchronous

https://bugs.freedesktop.org/show_bug.cgi?id=68232

6 years agoman: add a list of environment variables
Zbigniew Jędrzejewski-Szmek [Sun, 15 Sep 2013 15:56:19 +0000 (11:56 -0400)]
man: add a list of environment variables

6 years agospecifier: rework specifier calls to return proper error message
Lennart Poettering [Tue, 17 Sep 2013 15:03:46 +0000 (10:03 -0500)]
specifier: rework specifier calls to return proper error message

Previously the specifier calls could only indicate OOM by returning
NULL. With this change they will return negative errno-style error codes
like everything else.

6 years agoupdate TODO
Lennart Poettering [Tue, 17 Sep 2013 15:01:08 +0000 (10:01 -0500)]
update TODO

6 years agoAdd YouCompleteMe configuration
Dave Reisner [Mon, 16 Sep 2013 23:09:36 +0000 (19:09 -0400)]
Add YouCompleteMe configuration

6 years agoTODO spelling fix.
David Strauss [Mon, 16 Sep 2013 22:40:00 +0000 (17:40 -0500)]
TODO spelling fix.

6 years agokeymap: Add Samsung Series 5 [Ultra]
Martin Pitt [Mon, 16 Sep 2013 19:25:44 +0000 (14:25 -0500)]
keymap: Add Samsung Series 5 [Ultra]

Also consolidate the wlan key into the "all Samsung" rule to avoid repetition.

Thanks to Mauro Carvalho Chehab!

https://bugzilla.redhat.com/show_bug.cgi?id=989103

6 years agologin: fix login_is_valid test
Zbigniew Jędrzejewski-Szmek [Mon, 16 Sep 2013 16:04:20 +0000 (11:04 -0500)]
login: fix login_is_valid test

6 years agoudev-rules: avoid erroring on trailing whitespace
Dave Reisner [Mon, 16 Sep 2013 15:22:35 +0000 (11:22 -0400)]
udev-rules: avoid erroring on trailing whitespace

https://bugs.archlinux.org/task/36950

6 years agobuild: check for build/link flags harder
David Herrmann [Fri, 13 Sep 2013 10:42:12 +0000 (12:42 +0200)]
build: check for build/link flags harder

Use AC_LINK_IFELSE instead of AC_COMPILE_IFELSE to test for flags that
might succeed during compilation but not during linking. An example is gcc
compiled with libssp support but gnu-ld without it. In this case
-fstack-protector works fine during compilation but fails during linking
as several internal helpers are missing.

6 years agoVerify validity of session name when received from outside
Zbigniew Jędrzejewski-Szmek [Mon, 16 Sep 2013 02:26:56 +0000 (22:26 -0400)]
Verify validity of session name when received from outside

Only ASCII letters and digits are allowed.

6 years agotransaction.c: do not point users to logs when unit not found
Zbigniew Jędrzejewski-Szmek [Sun, 15 Sep 2013 16:15:38 +0000 (12:15 -0400)]
transaction.c: do not point users to logs when unit not found

The logs are unlikely to contain any useful information in this case.

Also, change "walked on cycle path" to "found dependency on", which
is less technical and indicates the direction. With the old message,
I was never sure if prior units depended on later ones, or vice versa.

https://bugzilla.redhat.com/show_bug.cgi?id=996133
https://bugzilla.redhat.com/show_bug.cgi?id=997082

6 years agoRemove duplicate entries from syscall list
Zbigniew Jędrzejewski-Szmek [Sun, 15 Sep 2013 14:35:51 +0000 (10:35 -0400)]
Remove duplicate entries from syscall list

ARM syscall list includes SYS_OABI_SYSCALL_BASE and SYS_SYSCALL_BASE
which were obsuring real syscall names.

6 years agoAssume that /proc/meminfo can be missing
Zbigniew Jędrzejewski-Szmek [Sun, 15 Sep 2013 12:40:16 +0000 (08:40 -0400)]
Assume that /proc/meminfo can be missing

Travis tests are failing, probably because /proc/meminfo is not available
in the test environment. The same might be true in some virtualized systems,
so just treat missing /proc/meminfo as a sign that hibernation is not
possible.

6 years agocgroup: add missing equals for BlockIOWeight
Gao feng [Mon, 16 Sep 2013 01:57:33 +0000 (09:57 +0800)]
cgroup: add missing equals for BlockIOWeight

6 years agoswap: create .wants symlink to 'auto' swap devices
Tom Gundersen [Sun, 15 Sep 2013 23:08:32 +0000 (01:08 +0200)]
swap: create .wants symlink to 'auto' swap devices

As we load unit files lazily, we need to make sure something pulls in swap
units that should be started automatically, otherwise the default dependencies
will never be applied.

This partially reinstates code removed in
commit 64347fc2b983f33e7efb0fd2bb44e133fb9f30f4.

Also don't order swap devices after swap.target when they are 'nofail'.

6 years agoREADME: add SCSI BSG option
Kay Sievers [Sun, 15 Sep 2013 05:29:25 +0000 (07:29 +0200)]
README: add SCSI BSG option

6 years agoAdvertise hibernation only if there's enough free swap
Zbigniew Jędrzejewski-Szmek [Fri, 13 Sep 2013 23:41:52 +0000 (19:41 -0400)]
Advertise hibernation only if there's enough free swap

Condition that is checked is taken from upower:
  active(anon) < free swap * 0.98

This is really stupid, because the kernel knows the situation better,
e.g. there could be two swap files, and then hibernation would be
impossible despite passing this check, or the kernel could start
supporting compressed swap and/or compressed hibernation images, and
then this this check would be too stringent. Nevertheless, until
we have something better, this should at least return a true negative
if there's no swap.

Logging of capabilities in the journal is changed to not strip leading
zeros. I consider this more readable anyway.

http://cgit.freedesktop.org/upower/tree/src/up-daemon.c#n613
https://bugzilla.redhat.com/show_bug.cgi?id=1007059

6 years agokeymap: remove some commented out lines
Zbigniew Jędrzejewski-Szmek [Wed, 28 Aug 2013 21:23:59 +0000 (17:23 -0400)]
keymap: remove some commented out lines

6 years agoman: document luks.options kernel commandline
Tom Gundersen [Fri, 13 Sep 2013 19:03:55 +0000 (21:03 +0200)]
man: document luks.options kernel commandline

This should have been part of commit 7ab064a6d

6 years agolibudev: fix move_later comparison
Lukas Nykryn [Fri, 13 Sep 2013 12:12:54 +0000 (14:12 +0200)]
libudev: fix move_later comparison

At the beginning move_later is set to -1, but it is set to different
value only if expression !move_later is true.

6 years agoswap: fix reverse dependencies
Tom Gundersen [Fri, 13 Sep 2013 12:46:18 +0000 (14:46 +0200)]
swap: fix reverse dependencies

Make sure swap.target correctly requires/wants the swap units.

This fixes https://bugs.freedesktop.org/show_bug.cgi?id=69291.

Reported-by: Hussam Al-Tayeb
6 years agocore/cgroup: first print then free
Lukas Nykryn [Fri, 13 Sep 2013 12:31:17 +0000 (14:31 +0200)]
core/cgroup: first print then free

6 years agoupdate TODO
Lennart Poettering [Fri, 13 Sep 2013 12:28:17 +0000 (14:28 +0200)]
update TODO

6 years agorandom-seed: we should return errno of failed loop_write
Lukas Nykryn [Fri, 13 Sep 2013 12:12:55 +0000 (14:12 +0200)]
random-seed: we should return errno of failed loop_write

6 years agocgroup: fix incorrectly setting memory cgroup
Gao feng [Fri, 13 Sep 2013 06:43:04 +0000 (14:43 +0800)]
cgroup: fix incorrectly setting memory cgroup

If the memory_limit of unit is -1, we should write "-1"
to the file memory.limit_in_bytes. not the (unit64_t) -1.

otherwise the memory.limit_in_bytes will be set to zero.

6 years agocgroup: correct the log information
Gao feng [Fri, 13 Sep 2013 03:17:06 +0000 (11:17 +0800)]
cgroup: correct the log information

it should be memory.soft_limit_in_bytes.

6 years agocgroup: add the missing setting of variable's value
Gao feng [Fri, 13 Sep 2013 03:17:05 +0000 (11:17 +0800)]
cgroup: add the missing setting of variable's value

set the value of variable "r" to the return value
of cg_set_attribute.

6 years agoautomount: rename repeat_unmont to repeat_unmount
David Mackey [Fri, 13 Sep 2013 02:45:49 +0000 (19:45 -0700)]
automount: rename repeat_unmont to repeat_unmount

Trivial cleanup of repeat_unmount() spelling.

6 years agocryptsetup-generator: allow specifying options in /proc/cmdline
Tom Gundersen [Sun, 18 Aug 2013 06:59:00 +0000 (14:59 +0800)]
cryptsetup-generator: allow specifying options in /proc/cmdline

The main usecase for this is to make it possible to use cryptsetup in
the initrd without it having to include a host-specific /etc/crypttab.

Tested-by: Thomas Bächler <thomas@archlinux.org>
6 years agocryptsetup-generator: don't create tmp+swap units
Tom Gundersen [Thu, 15 Aug 2013 00:47:59 +0000 (08:47 +0800)]
cryptsetup-generator: don't create tmp+swap units

6 years agoupdate TODO
Lennart Poettering [Fri, 13 Sep 2013 02:13:47 +0000 (04:13 +0200)]
update TODO

6 years agoNEWS: update v207
Kay Sievers [Fri, 13 Sep 2013 00:24:57 +0000 (02:24 +0200)]
NEWS: update

6 years agobuild-sys: prepare 207
Lennart Poettering [Fri, 13 Sep 2013 00:11:19 +0000 (02:11 +0200)]
build-sys: prepare 207

6 years agobash-completion: add systemd-run
Zbigniew Jędrzejewski-Szmek [Thu, 12 Sep 2013 23:35:59 +0000 (19:35 -0400)]
bash-completion: add systemd-run

6 years agoshut up gcc complaining about freeing a const variable
Kay Sievers [Thu, 12 Sep 2013 21:37:23 +0000 (23:37 +0200)]
shut up gcc complaining about freeing a const variable

6 years agoman: wording and grammar updates
Jan Engelhardt [Thu, 12 Sep 2013 19:12:49 +0000 (21:12 +0200)]
man: wording and grammar updates

This is a recurring submission and includes corrections to various
issue spotted. I guess I can just skip over reporting ubiquitous
comma placement fixes…

Highligts in this particular commit:
- the "unsigned" type qualifier is completed to form a full type
  "unsigned int"
- alphabetic -> lexicographic (that way we automatically define how
  numbers get sorted)

6 years agoupdate TODO
Lennart Poettering [Thu, 12 Sep 2013 16:52:41 +0000 (18:52 +0200)]
update TODO

6 years agocore: notify triggered by socket of a service
Umut Tezduyar [Mon, 22 Jul 2013 08:52:53 +0000 (10:52 +0200)]
core: notify triggered by socket of a service

6 years agoservice: Implement 'on-watchdog' restart option
Hannes Reinecke [Thu, 25 Jul 2013 12:07:59 +0000 (14:07 +0200)]
service: Implement 'on-watchdog' restart option

Services using the watchdog option might want to be restarted
only if the watchdog triggers.

6 years agojournald: Log error when failed to get machine-id on start
Olivier Brunel [Thu, 12 Sep 2013 12:37:30 +0000 (14:37 +0200)]
journald: Log error when failed to get machine-id on start

Can help since the journal requires /etc/machine-id to exists in order to start,
and will simply silently exit when it does not.

6 years agoupdate TODO
Lennart Poettering [Thu, 12 Sep 2013 16:09:00 +0000 (18:09 +0200)]
update TODO

6 years agosystemctl: process only signals for jobs we really wait for
Michal Sekletar [Thu, 12 Sep 2013 13:42:24 +0000 (15:42 +0200)]
systemctl: process only signals for jobs we really wait for

wait_filter() callback shouldn't process JobRemove signals for arbitrary
jobs. It should only deal with signals for jobs which are included in
set of jobs we wait for.

6 years agoTODO: remove backlight tool
Kay Sievers [Thu, 12 Sep 2013 15:20:33 +0000 (17:20 +0200)]
TODO: remove backlight tool

6 years agoActually allow tabs in environment files
Zbigniew Jędrzejewski-Szmek [Thu, 12 Sep 2013 14:03:16 +0000 (10:03 -0400)]
Actually allow tabs in environment files

Fixup for ac4c8d6da8b5e.

6 years agoman: Add a note about what environment variables are available by default
Zbigniew Jędrzejewski-Szmek [Thu, 12 Sep 2013 13:29:01 +0000 (09:29 -0400)]
man: Add a note about what environment variables are available by default

6 years agogetty-generator: Enable getty on all active serial consoles.
Michael Marineau [Sat, 17 Aug 2013 00:28:24 +0000 (20:28 -0400)]
getty-generator: Enable getty on all active serial consoles.

This enables a getty on active kernel consoles even when they are not
the last one specified on the kernel command line and mapped to
/dev/console. Now the order "console=ttyS0 console=tty0" works in
addition to "console=tty0 console=ttyS0".

6 years agohwdb: add Toshiba Satellite P75-A
Zbigniew Jędrzejewski-Szmek [Thu, 12 Sep 2013 11:59:34 +0000 (07:59 -0400)]
hwdb: add Toshiba Satellite P75-A

Contributed by Guillermo Dominguez Duarte <guillermod84@gmail.com>.

6 years agoman: fix description of file order application
Kay Sievers [Thu, 12 Sep 2013 02:00:24 +0000 (04:00 +0200)]
man: fix description of file order application

6 years agoAllow tabs in environment files
Zbigniew Jędrzejewski-Szmek [Thu, 12 Sep 2013 01:50:16 +0000 (21:50 -0400)]
Allow tabs in environment files

bash allows them, and so should we.

string_has_cc is changed to allow tabs, and if they are not wanted,
they must be now checked for explicitly. There are two other callers,
apart from the env file loaders, and one already checked anyway, and
the other is changed to check.

https://bugs.freedesktop.org/show_bug.cgi?id=68592
https://bugs.gentoo.org/show_bug.cgi?id=481554

6 years agoman: fix description of sysctl.d order
Mantas Mikulėnas [Wed, 11 Sep 2013 21:53:36 +0000 (00:53 +0300)]
man: fix description of sysctl.d order

systemd-sysctl gives priority to the latest occurence as of commit
04bf3c1a60d82791e0320381e9268f727708f776, but the manpage hasn't been
updated for that.

6 years agohwdb: update
Kay Sievers [Wed, 11 Sep 2013 21:09:12 +0000 (23:09 +0200)]
hwdb: update

6 years agoAdd pam configuration to allow user sessions to work out of the box
Zbigniew Jędrzejewski-Szmek [Wed, 11 Sep 2013 18:31:14 +0000 (14:31 -0400)]
Add pam configuration to allow user sessions to work out of the box

systemd-logind will start user@.service. user@.service unit uses
PAM with service name 'systemd-user' to perform account and session
managment tasks. Previously, the name was 'systemd-shared', it is
now changed to 'systemd-user'.

Most PAM installations use one common setup for different callers.
Based on a quick poll, distributions fall into two camps: those that
have system-auth (Redhat, Fedora, CentOS, Arch, Gentoo, Mageia,
Mandriva), and those that have common-auth (Debian, Ubuntu, OpenSUSE).
Distributions that have system-auth have just one configuration file
that contains auth, password, account, and session blocks, and
distributions that have common-auth also have common-session,
common-password, and common-account. It is thus impossible to use one
configuration file which would work for everybody. systemd-user now
refers to system-auth, because it seems that the approach with one
file is more popular and also easier, so let's follow that.

6 years agocore: failed scope units may not be restarted
Lennart Poettering [Wed, 11 Sep 2013 17:26:47 +0000 (19:26 +0200)]
core: failed scope units may not be restarted

We don't allow reusing of scopes.

6 years agosd-login: add a public accessor for the VT number
Giovanni Campagna [Wed, 11 Sep 2013 16:48:20 +0000 (18:48 +0200)]
sd-login: add a public accessor for the VT number

The VT number was already part of the DBus API, but was not
exposed in the C API.

6 years agoUpdate TODO
Lennart Poettering [Wed, 11 Sep 2013 15:44:25 +0000 (17:44 +0200)]
Update TODO

6 years agocryptsetup: Retry indefinitely if tries=0 option has been set.
Thomas Bächler [Sun, 18 Aug 2013 16:24:13 +0000 (18:24 +0200)]
cryptsetup: Retry indefinitely if tries=0 option has been set.

When running from initrd, entering a wrong passphrase usually means that
you cannot boot. Therefore, we allow trying indefinitely.

6 years agoswap: handle nofail/noauto in core
Tom Gundersen [Wed, 21 Aug 2013 14:48:56 +0000 (22:48 +0800)]
swap: handle nofail/noauto in core

6 years agomount: filesystems mounted in the initrd should not conflict with umount.target in...
Tom Gundersen [Mon, 19 Aug 2013 04:34:13 +0000 (12:34 +0800)]
mount: filesystems mounted in the initrd should not conflict with umount.target in the real root

These mounts should be kept around and unmounted in the shutdown ramfs.

Currently, we will still attempt to umount these in the final kill spree, but
we should consider avoiding that too. Also, the should_umount function should
be generalised and put into util.c or something like that, but we are still
discussing precisely how.

6 years agomount: move device links handling from generator
Tom Gundersen [Mon, 19 Aug 2013 09:45:24 +0000 (17:45 +0800)]
mount: move device links handling from generator

This makes mount units work like swap units: when the backing device appears
the mount unit will be started.

v2: the device should want the mount unconditionally, not only for DefaultDependencies=yes

6 years agoswap: backing device should unconditionally want swap unit
Tom Gundersen [Wed, 21 Aug 2013 14:47:26 +0000 (22:47 +0800)]
swap: backing device should unconditionally want swap unit

There is no need to restrict this to only the 'nofail' case. In the '!nofail'
case the unit is already wanted by swap.target, so this is not a functional change.

6 years agofstab-generator: use DefaultDependencies=yes
Tom Gundersen [Mon, 19 Aug 2013 01:20:52 +0000 (09:20 +0800)]
fstab-generator: use DefaultDependencies=yes

This removes some redundancy between the generator and the core mount handling.

6 years agofilesystem targets: disable default dependencies
Tom Gundersen [Thu, 22 Aug 2013 02:09:39 +0000 (10:09 +0800)]
filesystem targets: disable default dependencies

This means we can use default dependencies on mount units without having to get them automatically
ordered before the filesystem targets.

Reported-by: Thomas Baechler <thomas@archlinux.org>
6 years agoman: document that Type=notify is currently incompatible with PrivateNetwork=yes
Lennart Poettering [Wed, 11 Sep 2013 11:57:34 +0000 (13:57 +0200)]
man: document that Type=notify is currently incompatible with PrivateNetwork=yes

6 years agoman: one more example in tmpfiles.d
Lukas Nykryn [Thu, 22 Aug 2013 12:47:49 +0000 (14:47 +0200)]
man: one more example in tmpfiles.d

6 years agoman: wording and grammar updates
Jan Engelhardt [Sun, 25 Aug 2013 07:01:45 +0000 (09:01 +0200)]
man: wording and grammar updates

This includes regularly-submitted corrections to comma setting and
orthographical mishaps that appeared in man/ in recent commits.

In this particular commit:
- the usual comma fixes
- expand contractions (this is prose)

6 years agosystemctl: show BlockIODeviceWeight for unit
Gao feng [Tue, 27 Aug 2013 05:36:55 +0000 (13:36 +0800)]
systemctl: show BlockIODeviceWeight for unit

We can use systemctl show unitname to show the BlockIODeviceWeight
of unit.

6 years agosystemcl: add support for setting BlockIODeviceWeight for unit
Gao feng [Tue, 27 Aug 2013 05:36:54 +0000 (13:36 +0800)]
systemcl: add support for setting BlockIODeviceWeight for unit

This patch allows user to set up BlockIODeviceWeight for unit
through systemctl. Such as

systemctl set-property sshd.service BlockIODeviceWeight="/dev/sda 100"

6 years agocgroup: setup BlockIODeviceWeight in bus_cgroup_set_property
Gao feng [Tue, 27 Aug 2013 05:36:53 +0000 (13:36 +0800)]
cgroup: setup BlockIODeviceWeight in bus_cgroup_set_property

This patch adds the support for setting up BlockIODeviceWeight
in bus_cgroup_set_property. most of the codes are copied from
the case that sets up DeviceAllow.

6 years agocgroup: compare fs paths with path_equal() rather than streq()
Lennart Poettering [Tue, 10 Sep 2013 16:21:10 +0000 (18:21 +0200)]
cgroup: compare fs paths with path_equal() rather than streq()

6 years agosystemcl: add support for setting BlockIORead/WriteBandwidth for unit
Gao feng [Fri, 30 Aug 2013 02:56:02 +0000 (10:56 +0800)]
systemcl: add support for setting BlockIORead/WriteBandwidth for unit

This patch allows user to set up BlockIOReadBandwidth and BlockIOWriteBandwidth
for unit through systemctl. Such as

systemctl set-property sshd.service BlockIOReadBandwidth="/dev/sda 100000"
systemctl set-property sshd.service BlockIOWriteBandwidth="/dev/sda 200000"

6 years agocgroup: setup BlockIORead/WriteBandwidth in bus_cgroup_set_property
Gao feng [Tue, 10 Sep 2013 15:23:07 +0000 (17:23 +0200)]
cgroup: setup BlockIORead/WriteBandwidth in bus_cgroup_set_property

This patch adds the support for setting up BlockIORead/WriteBandwidth
in bus_cgroup_set_property.