[systemd-devel] Errors using machinectl pull-tar and machinectl pull-dkr

Lennart Poettering lennart at poettering.net
Wed Feb 18 09:51:36 PST 2015


On Tue, 17.02.15 16:48, Peter Paule (systemd-devel at fedux.org) wrote:

> 
> Hi there,
> 
> I tried "machinectl" from systemd 219 on Arch Linux (testing) today: I got
> two errors. Should we discuss this here or should I open a Bug Report?
> 
> 1) Download if tar-file
> (http://www.freedesktop.org/software/systemd/man/machinectl.html#Examples)
> 
> # machinectl pull-tar https://cloud-images.ubuntu.com/trusty/current/trusty-server-cloudimg-amd64-root.tar.gz
> 
> Pulling 'https://cloud-images.ubuntu.com/trusty/current/trusty-server-cloudimg-amd64-root.tar.gz',
> saving as 'trusty-server-cloudimg-amd64-root'.
> Downloading 1.7K for
> https://cloud-images.ubuntu.com/trusty/current/SHA256SUMS.
> Image already downloaded. Skipping download.
> Download of https://cloud-images.ubuntu.com/trusty/current/trusty-server-cloudimg-amd64-root.tar.gz
> complete.
> Download of https://cloud-images.ubuntu.com/trusty/current/SHA256SUMS
> complete.
> Downloading 836B for
> https://cloud-images.ubuntu.com/trusty/current/SHA256SUMS.gpg.
> Download of https://cloud-images.ubuntu.com/trusty/current/SHA256SUMS.gpg
> complete.
> Failed to create local image: Is a directory

Well, the current code assumes btrfs is in use, and will create
subvolumes for everything which fails. We probably can add fallbacks
for this case to use normal directories for the "pull-tar" case
though.

The thing is simply that a lot of operations are dead cheap on btrfs,
but really expensive on non-btrfs. For example, cloning a directory tree
or copying a file is super-cheap on btrfs. 

> It fails with "Failed to make btrfs subvolume /var/lib/machines/.#.dkr-5...
> Inappropriate ioctl for device".

Similar here. Note that the dkr code is unlikely to ever support
non-btrfs backing file systems, simply because we need cloning of the
container directory tree to put it together.

My plan is to implicitly add a loopback btrfs filesystem that is
automatically made use of if /var/lib/machines is on ext4. Because
btrfs actually has sane APIs we can easily set that up and grow it on
demand, so that people won't even notice...

Lennart

-- 
Lennart Poettering, Red Hat


More information about the systemd-devel mailing list