[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