Bugfixes:
+* killing nspawn with ]]] results in:
+ machine-f20.scope stopping timed out. Killing.
+ Stopped Container f20.
+ Unit machine-f20.scope entered failed state.
+ and it cannot be started again
+
* enabling an instance unit creates a pointless link, and
the unit will be started with getty@getty.service:
$ systemctl enable getty@.service
ln -s '/usr/lib/systemd/system/getty@.service' '/etc/systemd/system/getty.target.wants/getty@.service'
-* swap units that are activated by one name but shown in the kernel under another are semi-broken
-
* Dangling symlinks of .automount unit files in .wants/ directories, set up
automount points even when the original .automount file did not exist
anymore. Only the .mount unit was still around.
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.
+* systemctl --root=container/ set-default ... is totally borked.
+
External:
* ps should gain colums for slice
Features:
+* hookup nspawn and PrivateNetwork=yes with "ip netns"
+
+* socket units: support creating sockets in different namespace,
+ opening it up for JoinsNamespaceOf=. This would require to fork off
+ a tiny process that joins the namespace and creates/binds the socket
+ and passes this back to PID1 via SCM_RIGHTS. This also could be used
+ to allow Chown/chgrp on sockets without requiring NSS in PID 1.
+
+* sd-resolve:
+ - make sure event loop integration works similar to event loop integration in other libs
+ - maybe drop _free() call, introduce _unref() instead
+ - maybe simplify function calls that take a sd_resolve_query object, to not also require the matching sd_resolve?
+ - maybe drop the "n_proc" parameter to sd_resolve_new()?
+ - change all functions to return "int" and negative errno errors
+
+* New service property: maximum CPU and wallclock runtime for a service
+
+* introduce bus call FreezeUnit(s, b), as well as "systemctl freeze
+ $UNIT" and "systemctl thaw $UNIT" as wrappers around this. The calls
+ should SIGSTOP all unit processes in a loop until all processes of
+ it are fully stopped. This can later be used for app management by
+ desktop UIs such as gnome-shell to freeze apps that are not visible
+ on screen, not unlike how job control works on the shell
+
+* machinectl bash completion is missing
+* busctl bash and zsh completions are outdated
+
+* Introduce PrivateDevices=yes/no which works like PrivateTmp= but for /dev setting up a tmpfs for it that only includes /dev/null, /dev/zero, /dev/random, /dev/urandom, but nothing else.
+
+* libsystemd-journal returns the object created as first param in sd_journal_new(), sd_bus_new() and suchlike as last...
+
* cgroups:
- implement system-wide DefaultCPUAccounting=1 switch (and similar for blockio, memory?)
- implement per-slice CPUFairScheduling=1 switch
- add field to transient units that indicate whether systemd or somebody else saves/restores its settings, for integration with libvirt
- ensure scope units may be started only a single time
-* switch to SipHash for hashmaps/sets?
+* code cleanup
+ - we probably should replace the left-over uses of strv_append() and replace them by strv_push() or strv_extend()
-* general: get rid of readdir_r/dirent_storage stuff, it's unnecessary on Linux
+* Automatically configure swap partition to use for hibernation by looking for largest swap partition on the root disk?
* when we detect low battery and no AC on boot, show pretty splash and refuse boot
* Automatically configure swap partition to use for hibernation by looking for largest swap partition on the root disk?
-* remove NSS usage from PID 1 (notably the specifiers)
-
* socket-proxyd:Use a nonblocking alternative to getaddrinfo
* 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
* Add a new Distribute=$NUMBER key to socket units that makes use of SO_REUSEPORT to distribute network traffic on $NUMBER instances
-* we probably should replace the left-over uses of strv_append() and replace them by strv_push() or strv_extend()
-
* move config_parse_path_strv() out of conf-parser.c
* After coming back from hibernation reset hibernation swap partition using the /dev/snapshot ioctl APIs
* refuse boot if /etc/os-release is missing or /etc/machine-id cannot be set up
-* given that logind/machined now let PID 1 do all nasty work, we can
- probably reduce the capability set they retain substantially.
+* given that logind now lets PID 1 do all nasty work, we can
+ probably reduce the capability set it retains substantially.
+ (we need CAP_SYS_ADMIN for drmSetMaster(), so maybe not worth it)
* btrfs raid assembly: some .device jobs stay stuck in the queue
Maybe take a BSD lock at the disk device node and teach udev to
check for that and suppress event handling.
-* document logic of auto/noauto and fail/nofail in fstab in systemd.mount or systemd-fstab-generator man page
-
* something pulls in pcre as shared object dependency into our daemons such as hostnamed.
* allow implementation of InaccessibleDirectories=/ plus
ReadOnlyDirectories=... for whitelisting files for a service.
-* libsystemd-bus:
- - default policy (allow uid == 0 and our own uid)
- - access policy as vtable flag
+* sd-bus:
- when kdbus doesn't take our message without memfds, try again with memfds
- - implement translator service
- - move to gvariant
- implement monitor logic
- - properly map matches with well-known names against messages with unique names
- - when triggering property change events, allow a NULL strv indicate that all properties listed as such are send out as changed
- see if we can drop more message validation on the sending side
- - support "const" properties as flag
- add API to clone sd_bus_message objects
- - SD_BUS_COMMENT() macro for inclusion in vtables, syntax inspired by gdbus
- - make sd_bus_open_system_container() kdbus aware
- - longer term:
- * priority queues
- * priority inheritance
- - sort out error codes for sd_bus_release_name(), distuingish: successful removal from foreign name, from non-existing name
+ - systemd-bus-proxyd needs to enforce good old XML policy
+ - upload minimal kdbus policy into the kernel at boot
+ - kdbus: matches against source or destination pids for an "strace -p"-like feel. Problem: The PID info needs to be available in userspace too...
+ - longer term: priority inheritance
+ - check sender of response messages
+ - dbus spec updates:
+ - kdbus mapping
+ - NameLost/NameAcquired obsolete
+ - GVariant
+ - "const" properties (posted)
+ - port exit-on-idle logic to byebye ioctl
+ - bus proxy: override unique id sender for messages from driver to match the well-known name
+ - bus driver: GetNameOwner() for "org.freedesktop.DBus" should return "org.freedesktop.DBus"
+ - update systemd.special(7) to mention that dbus.socket is only about the compatibility socket now
+ - bus proxy should fake seclabel when connecting to kdbus
+ - sd_bus_message_set_no_reply() → sd_bus_message_set_expect_reply() and similar for no_auto_start
+ - allow updating attach flags during runtime
+ - pid1: peek into activating message when activating a service
+ - when service activation failed, drop one message from the activator queue
* sd-event
- - allow multiple signal handlers per signal
- - when a handler returns an error, just turn off its event source,
- but do not return anything up to the event loop caller. Instead
- add parameter to sd_event_request_quit() to take retval. This way
- errors rippling upwards are the option, not the default
- - child pid handling: first invoke waitid(WNOHANG) and call event handler, only afterwards reap the process
- - native support for watchdog stuff
+ - allow multiple signal handlers per signal?
* in the final killing spree, detect processes from the root directory, and
complain loudly if they have argv[0][0] == '@' set.
* timedatctl, localectl: possibly make some commands work without the daemon, for chroot situations...
+* timedatectl: print a nicer message when enabling ntp fails because ntpd/chrony are not installed
+
* cgtop: make cgtop useful in a container
* test/:
- add 'set -e' to scripts in test/
- make stuff in test/ work with separate output dir
- - 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).
- journal: sanely deal with entries which are larger than the individual file size, but where the components would fit
- Replace utmp, wtmp, btmp, and lastlog completely with journal
- journalctl: instead --after-cursor= maybe have a --cursor=XYZ+1 syntax?
- - 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
- when a kernel driver logs in a tight loop, we should ratelimit that too.
- journald: optionally, log debug messages to /run but everything else to /var
hence doing this via signals is not going to work.
* document:
- - document that deps in [Unit] sections ignore Alias= fileds in
+ - document that deps in [Unit] sections ignore Alias= fields in
[Install] units of other units, unless those units are disabled
- man: clarify that time-sync.target is not only sysv compat but also useful otherwise. Same for similar targets
- - Document word splitting syntax for ExecStart= and friends
- - document that units from /etc override those from /usr and /run
- document the exit codes when services fail before they are exec()ed
- document that service reload may be implemented as service reexec
- document in wiki how to map ical recurrence events to systemd timer unit calendar specifications
- rework wait filter to not require match callback
- better error message if you run systemctl without systemd running
- systemctl status output should should include list of triggering units and their status
- - in systemctl list-timers show time trggering units ran last
+ - in systemctl list-timers show time triggering units ran last
* unit install:
- "systemctl mask" should find all names by which a unit is accessible
- nspawn: investigate whether we can support the same as LXC's
lxc.network.type=phys mode, and pass through entire network
interfaces to the container
- - nspawn: maybe add a way to drop additional caps, in addition to add additional caps
- nspawn: maybe explicitly reset loginuid?
- 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).
SOCK_RAW, NETLINK_AUDIT) fail the the appropriate error code that
makes the audit userspace to think auditing is not available in the
kernel.
+ - support taking a btrfs snapshot at startup and dropping it afterwards
* cryptsetup:
- cryptsetup-generator: allow specification of passwords in crypttab itself
- kill scsi_id
- add trigger --subsystem-match=usb/usb_device device
-* cleanup syslog 'priority' vs. 'level' wording
-
* 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
-* support container_ttys=
-
* introduce mix of BindTo and Requisite
* add DeleteSocketsOnStop=yes|no option to socket units
- Check if Driver= is broken, or just my driver (bcma)
* sd-rtnl:
- - replace sd_rtnl_message_append() by type-safe versions
- improve container support, and add support for entering containers when reading
- add support for more attribute types
+* networkd:
+ - add more keys to [Route] and [Address] sections
+ - add support for more DHCPv4 options (and, longer term, other kinds of dynamic config)
+ - allow opting out of receiving DNS servers over DHCPv4
+ - add proper initrd support (in particular generate .network/.link files based on /proc/cmdline)
+
External:
* dbus: