[Drbd-dev] Bug in latest 8.4-git
Lars Ellenberg
lars.ellenberg at linbit.com
Wed Oct 8 11:37:57 CEST 2014
On Mon, Oct 06, 2014 at 08:21:15PM +0400, Igor Novgorodov wrote:
> I didn't found any bugtracker for DRBD project, so i reported the bug here.
Right thing to do. Thank you.
> ENOIOCTLCMD is returned in several places in net/socket.c and
> net/ipv4/tcp.c,
> it seems to have something to do with 32-bit code emulation on
> 64-bit kernel:
>
> #ifdef CONFIG_COMPAT
> static int inet_compat_ioctl(struct socket *sock, unsigned int cmd,
> unsigned long arg)
> {
> struct sock *sk = sock->sk;
> int err = -ENOIOCTLCMD;
>
> if (sk->sk_prot->compat_ioctl)
> err = sk->sk_prot->compat_ioctl(sk, cmd, arg);
>
> return err;
> }
> #endif
>
> CONFIG_COMPAT is only defined if 32-bit emulation is enabled in kernel.
>
> I've just rebuilt kernel with CONFIG_X86_X32 and drbd-8.4-git
> started to work fine,
> so the problem is there, somewhere in 64/32 compatibility layer :)
Uh?
That is ... unexpected.
->listen() should do any ioctls, though?
and there is just kernel code talking to kernel code,
so why would CONFIG_X86_X32 matter at all?
Can you double check, please:
Is that reproducible, i.e., if you swich that CONFIG off again,
the error comes back?
(does not reproduce here... yet)
Lars
More information about the drbd-dev
mailing list