[systemd-devel] Failed to create directory or subvolume "/var/lib/machines": Invalid argument

Lennart Poettering lennart at poettering.net
Mon Apr 20 08:46:50 PDT 2015


On Thu, 16.04.15 18:48, Andrey Wagin (avagin at gmail.com) wrote:

> Hello Lennart,
> 
> I read the v218-283-gd7b8eec commit and found that you expected that
> BTRFS_IOC_SUBVOL_CREATE returns ENOTTY if sub-volumes are not
> supported. But in the compat-mode this ioctl returns EINVAL.
> 
> For example:
> ext4_compat_ioctl returns ENOIOCTLCMD, then vfs_ioctl() convert it into EINVAL.
> vfs_ioctl()
>   error = filp->f_op->unlocked_ioctl(filp, cmd, arg);
>   if (error == -ENOIOCTLCMD)
>     error = -EINVAL;
> 
> root at localhost:~# /bin/systemd-tmpfiles --create --remove --boot
> --exclude-prefix=/dev
> [/usr/lib/tmpfiles.d/var.conf:14] Duplicate line for path "/var/log",
> ignoring.
> Failed to create directory or subvolume "/var/lib/machines": Invalid argument

Hmm, is this the 32bit ioctl glue that makes 32bit userspace work with a
64bit kernel?

If the kernel doesn't translate the ioctls correctly in this case and
turns this into -EINVAL, shouldn't it be fixed in the kernel?

It appears pretty obvious to me that this should be fixed in the
kernel to ensure that 32bit and 64bit userspace both get the same
error in these cases, and that should be ENOTTY...

Could you file a bug on kernel bugzilla about this please?

Lennart

-- 
Lennart Poettering, Red Hat


More information about the systemd-devel mailing list