TODO revision 4734b895641bd1cfb47b2eb62b0ce3f2565aa578
eb1776903fd1f998009e97470a65fba8a499a0d9Lubos Kosco* enabling an instance unit creates a pointless link, and
eb1776903fd1f998009e97470a65fba8a499a0d9Lubos Kosco the unit will be started with getty@getty.service:
eb1776903fd1f998009e97470a65fba8a499a0d9Lubos Kosco $ systemctl enable getty@.service
eb1776903fd1f998009e97470a65fba8a499a0d9Lubos Kosco ln -s '/usr/lib/systemd/system/getty@.service' '/etc/systemd/system/getty.target.wants/getty@.service'
eb1776903fd1f998009e97470a65fba8a499a0d9Lubos Kosco* swap units that are activated by one name but shown in the kernel under another are semi-broken
eb1776903fd1f998009e97470a65fba8a499a0d9Lubos Kosco* Dangling symlinks of .automount unit files in .wants/ directories, set up
eb1776903fd1f998009e97470a65fba8a499a0d9Lubos Kosco automount points even when the original .automount file did not exist
eb1776903fd1f998009e97470a65fba8a499a0d9Lubos Kosco anymore. Only the .mount unit was still around.
eb1776903fd1f998009e97470a65fba8a499a0d9Lubos Kosco* properly handle .mount unit state tracking when two mount points are stacked one on top of another on the exact same mount point.
eb1776903fd1f998009e97470a65fba8a499a0d9Lubos Kosco* When we detect invalid UTF-8, we cannot use it in an error message:
eb1776903fd1f998009e97470a65fba8a499a0d9Lubos Kosco log...("Path is not UTF-8 clean, ignoring assignment: %s", rvalue);
eb1776903fd1f998009e97470a65fba8a499a0d9Lubos Kosco* shorten the message to sane length:
eb1776903fd1f998009e97470a65fba8a499a0d9Lubos Kosco Cannot add dependency job for unit display-manager.service, ignoring: Unit display-manager.service failed to load: No such file or directory. See system logs and 'systemctl status display-manager.service' for details.
4ad8608d676334e57aec8447148ceeae37c2dee0Gustavo Lopes* ps should gain colums for slice
b4a94e1e9bfb77dcba635f9e3cfd4fd4276b64ccLubos Kosco* Fedora: when installing fedora with yum --installroot /var/run is a directory, not a symlink
4ad8608d676334e57aec8447148ceeae37c2dee0Gustavo Lopes https://bugzilla.redhat.com/show_bug.cgi?id=975864
2563573f45415d9a2a9deb5fa6401c86ed0c326aGustavo Lopes* Fedora: add an rpmlint check that verifies that all unit files in the RPM are listed in %systemd_post macros.
4ad8608d676334e57aec8447148ceeae37c2dee0Gustavo Lopes* Fedora: post FPC ticket to move add %tmpfiles_create to the packaging guidelines
4ad8608d676334e57aec8447148ceeae37c2dee0Gustavo Lopes - implement system-wide DefaultCPUAccounting=1 switch (and similar for blockio, memory?)
4ad8608d676334e57aec8447148ceeae37c2dee0Gustavo Lopes - implement per-slice CPUFairScheduling=1 switch
4ad8608d676334e57aec8447148ceeae37c2dee0Gustavo Lopes - handle jointly mounted controllers correctly
b4a94e1e9bfb77dcba635f9e3cfd4fd4276b64ccLubos Kosco - introduce high-level settings for RT budget, swappiness
98bcd7b17c979c7394ffc18d7c052a0b5602208eJHKST - how to reset dynamically changed unit cgroup attributes sanely?
4ad8608d676334e57aec8447148ceeae37c2dee0Gustavo Lopes - when reloading configuration, apply new cgroup configuration
4ad8608d676334e57aec8447148ceeae37c2dee0Gustavo Lopes - when recursively showing the cgroup hierarchy, optionally also show
4ad8608d676334e57aec8447148ceeae37c2dee0Gustavo Lopes the hierarchies of child processes
4ad8608d676334e57aec8447148ceeae37c2dee0Gustavo Lopes* transient units:
4ad8608d676334e57aec8447148ceeae37c2dee0Gustavo Lopes - allow creating auxiliary units with the same call
584eb5925eab183765dfba2c839a31304c9eb8f6Lubos Kosco - add field to transient units that indicate whether systemd or somebody else saves/restores its settings, for integration with libvirt
98bcd7b17c979c7394ffc18d7c052a0b5602208eJHKST - ensure scope units may be started only a single time
4ad8608d676334e57aec8447148ceeae37c2dee0Gustavo Lopes* switch to SipHash for hashmaps/sets?
4ad8608d676334e57aec8447148ceeae37c2dee0Gustavo Lopes* general: get rid of readdir_r/dirent_storage stuff, it's unnecessary on Linux
4ad8608d676334e57aec8447148ceeae37c2dee0Gustavo Lopes* when we detect low battery and no AC on boot, show pretty splash and refuse boot
2563573f45415d9a2a9deb5fa6401c86ed0c326aGustavo Lopes* move libasyncns into systemd as libsystemd-asyncns
6602c01097c66d242046fb0490e0a5dcc1ca36c5Lubos Kosco* machined, localed: when we try to kill an empty cgroup, generate an ESRCH error over the bus
2563573f45415d9a2a9deb5fa6401c86ed0c326aGustavo Lopes* libsystemd-journal, libsystemd-login, libudev: add calls to easily attach these objects to sd-event event loops
4ad8608d676334e57aec8447148ceeae37c2dee0Gustavo Lopes* be more careful what we export on the bus as (usec_t) 0 and (usec_t) -1
4ad8608d676334e57aec8447148ceeae37c2dee0Gustavo Lopes* unify dispatch table in systemctl_main() and friends
4ad8608d676334e57aec8447148ceeae37c2dee0Gustavo Lopes* Automatically configure swap partition to use for hibernation by looking for largest swap partition on the root disk?
4ad8608d676334e57aec8447148ceeae37c2dee0Gustavo Lopes* remove NSS usage from PID 1 (notably the specifiers)
4ad8608d676334e57aec8447148ceeae37c2dee0Gustavo Lopes* socket-proxyd:Use a nonblocking alternative to getaddrinfo
4ad8608d676334e57aec8447148ceeae37c2dee0Gustavo Lopes* rfkill,backlight: we probably should run the load tools inside of the udev rules so that the state is properly initialized by the time other software sees it
4ad8608d676334e57aec8447148ceeae37c2dee0Gustavo Lopes* Add a new Distribute=$NUMBER key to socket units that makes use of SO_REUSEPORT to distribute network traffic on $NUMBER instances
305373bfa854723d80c740a2ff9d277d0f34082aHarry Pan* we probably should replace the left-over uses of strv_append() and replace them by strv_push() or strv_extend()
2563573f45415d9a2a9deb5fa6401c86ed0c326aGustavo Lopes* move config_parse_path_strv() out of conf-parser.c
2563573f45415d9a2a9deb5fa6401c86ed0c326aGustavo Lopes* After coming back from hibernation reset hibernation swap partition using the /dev/snapshot ioctl APIs
2563573f45415d9a2a9deb5fa6401c86ed0c326aGustavo Lopes* If we try to find a unit via a dangling symlink, generate a clean
2563573f45415d9a2a9deb5fa6401c86ed0c326aGustavo Lopes error. Currently, we just ignore it and read the unit from the search
2563573f45415d9a2a9deb5fa6401c86ed0c326aGustavo Lopes* When a Type=forking service fails and needed another service, that
2563573f45415d9a2a9deb5fa6401c86ed0c326aGustavo Lopes service is not cleaned up again when it has StopWhenUnneeded=yes
2563573f45415d9a2a9deb5fa6401c86ed0c326aGustavo Lopes http://lists.freedesktop.org/archives/systemd-devel/2013-July/012141.html
2563573f45415d9a2a9deb5fa6401c86ed0c326aGustavo Lopes* refuse boot if /etc/os-release is missing or /etc/machine-id cannot be set up
2563573f45415d9a2a9deb5fa6401c86ed0c326aGustavo Lopes* given that logind/machined now let PID 1 do all nasty work, we can
2563573f45415d9a2a9deb5fa6401c86ed0c326aGustavo Lopes probably reduce the capability set they retain substantially.
2563573f45415d9a2a9deb5fa6401c86ed0c326aGustavo Lopes* btrfs raid assembly: some .device jobs stay stuck in the queue
2563573f45415d9a2a9deb5fa6401c86ed0c326aGustavo Lopes* make sure gdm doesn't use multi-user-x but the new default X configuration file, and then remove multi-user-x from systemd
2563573f45415d9a2a9deb5fa6401c86ed0c326aGustavo Lopes* man: the documentation of Restart= currently is very misleading and suggests the tools from ExecStartPre= might get restarted.
2563573f45415d9a2a9deb5fa6401c86ed0c326aGustavo Lopes* load .d/*.conf dropins for device units
9fec1c146f0886a2635fffd846548ccad3c4d1e6Gustavo Lopes* gparted needs to disable auto-activation of mount units somehow, or
9fec1c146f0886a2635fffd846548ccad3c4d1e6Gustavo Lopes maybe we should stop doing auto-activation of this after boot
9fec1c146f0886a2635fffd846548ccad3c4d1e6Gustavo Lopes entirely. https://bugzilla.gnome.org/show_bug.cgi?id=701676
2563573f45415d9a2a9deb5fa6401c86ed0c326aGustavo Lopes Maybe take a BSD lock at the disk device node and teach udev to
9fec1c146f0886a2635fffd846548ccad3c4d1e6Gustavo Lopes check for that and suppress event handling.
9fec1c146f0886a2635fffd846548ccad3c4d1e6Gustavo Lopes* document logic of auto/noauto and fail/nofail in fstab in systemd.mount or systemd-fstab-generator man page
4ad8608d676334e57aec8447148ceeae37c2dee0Gustavo Lopes* something pulls in pcre as shared object dependency into our daemons such as hostnamed.
4ad8608d676334e57aec8447148ceeae37c2dee0Gustavo Lopes* allow implementation of InaccessibleDirectories=/ plus
- when triggering property change events, allow a NULL strv indicate that all properties listed as such are send out as changed
- unelss configure option is specified refuse connecting and creating kdbus, so that we can break compat
- child pid handling: first invoke waitid(WNOHANG) and call event handler, only afterwards reap the process
* Introduce a way how we can kill the main process of a service with KillSignal, but all processes with SIGKILL later on
* dbus: when a unit failed to load (i.e. is in UNIT_ERROR state), we
* add a pam module that passes the hdd passphrase into the PAM stack and then expires it, for usage by gdm auto-login.
* maybe add a generator that looks for "systemd.run=" on the kernel cmdline for container usercases...
* timedatctl, localectl: possibly make some commands work without the daemon, for chroot situations...
- qemu wrapper script: http://www.spinics.net/lists/kvm/msg72389.html
* systemctl delete x.snapshot leaves no trace in logs (at least at default level).
* systemd-inhibit: make taking delay locks useful: support sending SIGINT or SIGTERM on PrepareForSleep()
* journal-or-kmsg is currently broken? See reverted commit 4a01181e460686d8b4a543b1dfa7f77c9e3c5ab8.
* remove any syslog support from log.c -- we probably can't do this before split-off udev is gone for good
* think about window-manager-run-as-user-service problem: exit 0 → activate shutdown.target; exit != 0 → restart service
* timedate: have global on/off switches for auto-time (NTP), and auto-timezone that connman can subscribe to.
* dev-setup.c: when running in a container, create a tiny stub udev
- change bootctl to be backed by systemd-bootd to control temporary and persistent default boot goal plus efi variables
* fstab: add new mount option x-systemd-after=/foobar/waldo to allow manual dependencies to other mount points
* print a nicer explanation if people use variable/specifier expansion in ExecStart= for the first word
* mount: turn dependency information from /proc/self/mountinfo into dependency information between systemd units.
- logind: optionally, ignore idle-hint logic for autosuspend, block suspend as long as a session is around
- When we update the kernel all kind of hibernation should be prohibited until shutdown/reboot
- logind: wakelock/opportunistic suspend support
- pam: when leaving a session explicitly exclude the ReleaseSession() caller process from the killing spree
- we should probably handle SIGTERM/SIGINT to not leave dot files around, just in case
- session scopes/user unit: add RequiresMountsFor for the home directory of the user
- add Suspend() bus calls which take timestamps to fix double suspend issues when somebody hits suspend and closes laptop quickly.
* exec: when deinitializating a tty device fix the perms and group, too, not only when initializing. Set access mode/gid to 0620/tty.
- journal: when waiting for journal additions in the client always sleep at least 1s or so, in order to minimize wakeups
- add API to close/reopen/get fd for journal client fd in libsystemd-journal.
- fallback to /dev/log based logging in libsystemd-journal, if we can't log natively?
- check if we can make journalctl by default use --follow mode inside of less if called without args?
- journal: add a setgid "systemd-journal" utility to invoke from libsystemd-journal, which passes fds via STDOUT and does PK access
- journactl: support negative filtering, i.e. FOOBAR!="waldo",
- journal: send out marker messages every now and then, and immediately sync with fdatasync() afterwards, in order to have hourly guaranteed syncs.
- journal-send.c, log.c: when the log socket is clogged, and we drop, count this and write a message about this when it gets unclogged again.
- journal: sanely deal with entries which are larger than the individual file size, but where the components would fit
- journalctl: support -M to read journal of containers and determine journal directory from root directory of container
- tmpfiles: when applying ownership to /run/log/journal, also do this for the journal fails contained in it
- man: clarify that time-sync.target is not only sysv compat but also useful otherwise. Same for similar targets
- add a man page containing packaging guidelines and recommending usage of things like Documentation=, PrivateTmp=, PrivateNetwork= and ReadOnlyDirectories=/etc /usr.
- document systemd-journal-flush.service properly
- documentation: recommend to connect the timer units of a service to the service via Also= in [Install]
- man: extend runlevel(8) to mention that runlevels suck, and are dead. Maybe add runlevel(7) with a note about that too
- print nice message from systemctl --failed if there are no entries shown, and hook that into ExecStartPre of rescue.service/emergency.service
- add new command to systemctl: "systemctl system-reexec" which reexecs as many daemons as virtually possible
- systemctl enable: improve the success messages (i.e. more human readable, less shell-like)
- systemctl enable: fail if target to alias into doesn't exist? maybe show how many units are enabled afterwards?
- "systemctl cat" or "systemctl view" command or or so, that cats the backing unit file of a service, plus its drop-ins and shows them in a pager
- systemctl list-unit-files should list generated files (and probably with a new state "generated" for them, or so)
* introduce ntp.service (or suchlike) as symlink that is used to arbitrate between various NTP implementations
* deal with sendmail/postfix exclusivity
- when parsing calendar timestamps support the UTC timezone (even if we won't support arbitrary timezone specs, support UTC itself certainly makes sense), also support syntaxes such as +0200
- DST/timezone changes && ntp is active && RTC-in-localtime (never do it without ntp)
logs-show.c. Alternatively: use libelfutil, which seems to be the
* If we show an error about a unit (such as not showing up) and it has no Description string, then show a description string generated form the reverse of unit_name_mangle().
* clean up date formatting and parsing so that all absolute/relative timestamps we format can also be parsed
* on shutdown: move utmp, wall, audit logic all into PID 1 (or logind?), get rid of systemd-update-utmp-runlevel
- instructions shipped by packages and stored in /usr/lib/
* hostnamed: before returning information from /etc/machine-info.conf check the modification data and reread. Similar for localed, ...
* currently x-systemd.timeout is lost in the initrd, since crypttab is copied into dracut, but fstab isn't
lxc.network.type=phys mode, and pass through entire network
- nspawn: make it work for dwalsh and shared /usr containers -- tmpfs mounts as command line parameters, selinux exec context
- refuses to boot containers without /etc/machine-id (OK?), and with empty /etc/machine-id (not OK).
- support rd.luks.allow-discards= kernel cmdline params in cryptsetup generator
* after deserializing sockets in socket.c we should reapply sockopts and things
* come up with a nice way to write queue/read_ahead_kb for a block device without interfering with readahead
* move PID 1 segfaults to /var/lib/systemd/coredump?
* create /sbin/init symlinks from the build system
* properly handle loop back mounts via fstab, especially regards to fsck/passno
* initialize the hostname from the fs label of /, if /etc/hostname does not exist?
* when breaking cycles drop sysv services first, then services from /run, then from /etc, then from /usr
* ExecOnFailure=/usr/bin/foo
- remove src/udev/udev-builtin-firmware.c (CONFIG_FW_LOADER_USER_HELPER=n)
- add trigger --subsystem-match=usb/usb_device device
* when a service has the same env var set twice we actually store it twice and return that in systemctl show -p... We should only show the last setting
* add option to sockets to avoid activation. Instead just drop packets/connections, see http://cyberelk.net/tim/2012/02/15/portreserve-systemd-solution/
* save coredump in Windows/Mozilla minidump format
* support crash reporting operation modes (https://live.gnome.org/GnomeOS/Design/Whiteboards/ProblemReporting)
* default to actual 32bit PIDs, via /proc/sys/kernel/pid_max
* when a bus name of a service disappears from the bus make sure to queue further activation requests
* hide PAM/TCPWrap options in fragment parser when compile time disabled
* support sd_notify() style notification when reload begins (RELOADING=1), reload is finished (READY=1), and add ReloadSignal= then to use in combination
* support sd_notify() style notification when shutting down, to make auto-exit bus services work (STOPPING=1)
- readahead: make use of EXT4_IOC_MOVE_EXT, as used by http://e4rat.sourceforge.net/
* add support for /bin/mount -s
- init=/bin/sh vs. "emergency" mode, vs. "rescue" mode, vs. "multi-user" mode, vs. "graphical" mode, and the debug shell
- hooking a script into various stages of shutdown/rearly booot
* support systemd.mask= on the kernel command line.
* port over to LISTEN_FDS/LISTEN_PID:
- libvirtd (/var/run/libvirt/libvirt-sock-ro)
- add documentation to systemd.daemon
- teach dbus to activate all services it finds in /etc/systemd/services/org-*.service
* dbus upstream still refers to dbus.target and shouldn't
* /usr/bin/service should actually show the new command line
* fedora: suggest auto-restart on failure, but not on success and not on coredump. also, ask people to think about changing the start limit logic. Also point people to RestartPreventExitStatus=, SuccessExitStatus=
* fedora: F20: go timer units all the way, leave cron.daily for cron
* fedora: update policy to declare access mode and ownership of unit files to root:root 0644, and add an rpmlint check for it
* set_put(), hashmap_put() return values check. i.e. == 0 doesn't free()!