Prep v220: Remove all source files, taht are not needed to build elogind. Prep v220: Remove not needed headers, round 1 Prep v220: Remove not needed headers, round 2 Prep v220: Remove not needed headers, round 3 Prep v220: Remove empty source directories Prep v220: Remove non-empty source directories, that aren't needed by elogind Prep v220: Remove all root directories that aren't referenced by the elogind build chain. Prep v220: remove superfluous src/import directory and systemd configurations and policies.
btrfs-util: introduce btrfs_is_filesystem() and make use of it where appropriate Let's unify the code that checks whether an fd is on btrfs a bit. (Also, rename btrfs_is_snapshot() to btrfs_is_subvol(), since that's usually how this is referred to in our code)
btrfs: add support for recursive btrfs snapshotting
btrfs: make btrfs_subvol_snapshot() parameters a flags field
btrfs: support recursively removing btrfs snapshots
shared: the btrfs quota field is called "referenced" not "referred"
importd: add API for exporting container/VM images Also, expose it in machinectl.
importd: automatically grow /var/lib/machines/ loopback filesystem during downloads If /var/lib/machines is mounted as btrfs loopback file system in /var/lib/machines.raw with this change we automatically grow the file system as it fills up. After each 10M we write to it during imports, we check the free disk space, and if the fill level grows beyond 66% we increase the size of the file system to 3x the fill level (thus lowering it to 33%).
machined: if /var/lib/machines is backed by a loop file, resize it on "machinectl set-limit" When the pool size limit is altered with "machinectl set-limit", then not only set the subvolume quota of the /var/lib/machine subvolume, but also resize the backing loop file and the btrfs file system on it dynamically.
machined,machinectl: add calls for changing container/VM quotas
importd: enable btrfs quota in /var/lib/machines, if necessary
#pragma once here and there
import: port pull-raw to helper tools implemented for pull-tar This allows us to reuse a lot more code, and simplify pull-raw drastically.
qcow2: when dissecting qcow2, use btrfs clone ioctls for reflinking blocks to target
journald: whenever we rotate a file, btrfs defrag it Our write pattern is quite awful for CoW file systems (btrfs...), as we keep updating file parts in the beginning of the file. This results in fragmented journal files. Hence: when rotating files, defragment them, since at that point we know that no further write accesses will be made.
machined: add support for reporting image size via btrfs quota
tmpfiles: add new line type 'v' for creating btrfs subvolumes
machined: beef up machined image listing with creation/modification times of subvolumes We make use of the btrfs subvol crtime for this, and for gpt images of a manually managed xattr, if we can.
machined/machinectl: add logic to show list of available images This adds a new bus call to machined that enumerates /var/lib/container and returns all trees stored in it, distuingishing three types: - GPT disk images, which are files suffixed with ".gpt" - directory trees - btrfs subvolumes
shared: add new btrfs-util.[ch] helpers for doing common btrfs operation