[ENBD] diskless enbd-client/enbd on initrd

Peter T. Breuer ptb at inv.it.uc3m.es
Mon Apr 10 04:54:41 MDT 2006


In summary ...

(I believe you were using my unedited binaries, and that sigcheck
succeeds in them)

> MY_NBD_SET_SIG arg (user 6f6e6578) in user addr bfb1aa1c
> enbd-client   593: client (-1) set sig or passed sigchk OK

Sigcheck OK. 

> ENBD #4424[0]: enbd_ioctl unauthorized ioctl 0xc008ab30
> enbd-client   593: #2087 setdevicesize: client (-1) failed to set size 
> 21474836480

This is because you are not running a 2.4.33 kernel module. I have 
changed the binary now to fall back to the SET_SECTORS ioctl instead
of the SET_SECTORS64 ioctl, when the latter fails.

> enbd-client   593: #2498 setkernelnbd: Failed set size 21474836480 on fd 
> 3: No such file or directory
> enbd-client   593: client (-1) sets session slots to 0-1
> enbd-client   593: #3403 introduction: Failed/5: No such file or directory

This was the only real clue here and it sent me on a wild goose chase.
The error message is not in my list, but I guess it is how EBADF or
ENOSYS is rendered on your platform.  At any rate, I looked at the code
of set_size() (which returns EBADF if there is no device on that inode)
to locate the error and should not have, because it never entered
set_size(), the ioctl being rejected before it got there. I would
have expected to see a more particular kernel message here, but the only
one is the "enbd_ioctl unauthorized ioctl" so I guess it never got very
far with that ioctl.

So - recompile your kernel module. You need 2.4.33 to match the 2.4.33
static binaries you were trying. Alternatively, use the newer static
binary I just put up, which falls back to the 32 bit ioctl if the 64
bit ioctl is not available.

But the sigcheck is fine. Just retry, with matched module and binaries.

Peter


More information about the ENBD mailing list