[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