Re: diskless enbd-client/enbd on initrd

Rudolph Bott <[email protected]> Fri, 03 Mar 2006 10:36:06 +0100
Newsgroups gmane.linux.enbd.general
Organization Megabit Informationstechnik GmbH
Message-ID <[email protected]>
Peter T. Breuer wrote:
> "Also sprach Rudolph Bott:"
> 
>>Since I used the nbd_root package as a base for my 
>>root-over-enbd-initrd, i created the initrd with genROMfs
>>i think this explains the pid-file-writing-errors quite well :S
> 
> 
> As far as I recall, your problem was that you launched the client and
> then didn't wait for it to  connect before trying to mount the device.
> So mount errored with "no such device".  Did you fix that?
> 

ups, sorry, a sleep(20) solved the problems. this gives enbd-client 
enough time to fork and setup the connection
BUT again...now it turned out that there are other problems...the 
connection is *very* unstable (as you can see below).

anyways, first of all a dump of the console output of a successfull boot 
(as you can see, i switched back to the romfs-type read-only initrd. it 
was just a concidence that enbd-client always died shortly after 
complaining about not being able to create the pid-file).



RAMDISK: romfs filesystem found at block 0
RAMDISK: Loading 1944KiB [1 disk] into ram disk... done.
VFS: Mounted root (romfs filesystem) readonly.
Freeing unused kernel memory: 108k freed
enbd_root version 0.2
root: 172.16.20.1:1111
Loading enbd module...
ENBD #5427[0]: enbd_init Network Block Device originally by 
[email protected]
ENBD #5428[0]: enbd_init Network Block Device port to 2.0 by [email protected]
ENBD #5430[0]: enbd_init Network Block Device move networking to user 
space by [email protected]
ENBD #5432[0]: enbd_init Enhanced Network Block Device 2.4.30 $Date: 
2002/09/17 16:33:22 $ by [email protected]
ENBD #5472[0]: enbd_init registered device at major 43
Sleeping 5 seconds...
Starting enbd-client...
enbd-client   592: client says target 0 is 172.16.20.1:1111
enbd-client   592: client (-1) opened device /dev/nda
enbd-client   592: client (-1) opened NBD device /dev/nda (2b00)
warning: process `enbd-client' used the obsolete bdflush system call
Fix your initscripts?
enbd-client   592: client (-1) left kernel bdflush sync boundary at 
134988640%
warning: process `enbd-client' used the obsolete bdflush system call
Fix your initscripts?
warning: process `enbd-client' used the obsolete bdflush system call
Fix your initscripts?
enbd-client   592: client (-1) set kernel bdflush async boundary to 25% 
from 134971615%
enbd-client   592: client (-1) detaches from shell
nbd/pidfile   593: # 147 lockpidfile: returning err -30 for lock attempt
enbd-client   593: #4268 main: Warning - couldn't make a new pidfile 
/var/run/enbd-client-xenoo.pid!
enbd-client   593: client (-1) starts introduction sequence on 
172.16.20.1:1111
Sleeping 20 seconds...
enbd-client   593: client (-1) got size 21474836480
enbd-client   593: client (-1) got signature [i7GB7y], had []
enbd-client   593: client (-1) negotiated blksize 4096
enbd-client   593: client (-1) negotiated pulse_intvl 10
enbd-client   593: client (-1) got session port 1113 ok
enbd-client   593: client (-1) introduction sequence ends ok
enbd-client   593: client (-1) enters setsig
enbd-client   593: client (-1) set sig uses subdevice 0
ENBD #3931[0]: fixup_slot failed to find slot for pid 593 ioctl 
MY_NBD_SET_SIG arg (user 42473769) in user addr bf887350
enbd-client   593: client (-1) set sig or passed sigchk OK
enbd-client   593: client (-1) copied sig OK
enbd-client   593: client (-1) set device size 21474836480
enbd-client   593: client (-1) sets session slots to 0-1
enbd-client   594: client (0) opened device /dev/nda
enbd-client   593: client (-1) launched daemon 0 (594) for 172.16.20.1:1113
enbd-client   595: client (1) opened device /dev/nda
enbd-client   595: client (1) opened socket (4) to 172.16.20.1:1113
enbd-client   593: client (-1) launched daemon 1 (595) for 172.16.20.1:1113
enbd-client   594: client (0) opened socket (4) to 172.16.20.1:1113
enbd-client   594: client (0) read passwd ok from 172.16.20.1:1113
enbd-client   594: client (0) got cliserv magic ok from 172.16.20.1:1113
enbd-client   594: client (0) got a signature ok from 172.16.20.1:1113
enbd-client   594: client (0) enters setsig
enbd-client   594: client (0) set sig uses whole disk, wants slot 1
enbd-client   594: client (0) set sig or passed sigchk OK
enbd-client   594: client (0) sig matched OK
ENBD #2820[0]: enbd_set_sock increased socket count on nda to 1
ENBD #2824[0]: enbd_set_sock upping openers count on nda
ENBD #2610[0]: enbd_enable_and_notify set ENABLED on nda
enbd-client   594: client (0) begins main loop
enbd-client   595: client (1) read passwd ok from 172.16.20.1:1113
enbd-client   595: client (1) got cliserv magic ok from 172.16.20.1:1113
ENBD #2575[0]: enbd_notify_hot_add_thread_fn running thread MD notify 
HOT_ADD fn for nda
enbd-client   595: client (1) got a signature ok from 172.16.20.1:1113
enbd-client   595: client (1) enters setsig
enbd-client   595: client (1) set sig uses whole disk, wants slot 2
enbd-client   595: client (1) set sig or passed sigchk OK
enbd-client   595: client (1) sig matched OK
ENBD #2820[1]: enbd_set_sock increased socket count on nda to 2
enbd-client   595: client (1) begins main loop
ENBD #875[0]: enbd_open DISK CHECK wanted in open on device nda
ENBD #4640[0]: enbd_media_changed MEDIA CHANGED called
ENBD #4696[0]: enbd_media_changed REMOTE CHECK still has REMOTE VALID on nda
enbd-client   593: client (-1) opened device /dev/nda
ENBD #875[1]: enbd_open DISK CHECK wanted in open on device nda
ENBD #4640[1]: enbd_media_changed MEDIA CHANGED called
ENBD #4696[1]: enbd_media_changed REMOTE CHECK still has REMOTE VALID on nda
EXT3-fs: INFO: recovery required on readonly filesystem.
EXT3-fs: write access will be enabled during recovery.
kjournald starting.  Commit interval 5 seconds
EXT3-fs: nda: orphan cleanup on readonly fs
EXT3-fs: nda: 3 orphan inodes deleted
EXT3-fs: recovery complete.
EXT3-fs: mounted filesystem with ordered data mode.
INIT: version 2.86 booting
....


That *seems* to work so far, but a few seconds/minutes later (after a 
successfull boot) you see this and the vm stops responding:
 

enbd-client   595: #1927 mainloop: Client times out waiting 60s in 
mainloop. Breaking off
enbd-client   594: #1927 mainloop: Client times out waiting 60s in 
mainloop. Breaking off
enbd-client   595: client (1) read passwd ok from 72.16.20.1:1113
enbd-client   595: client (1) opened socket (4) to 172.16.20.1:1113
enbd-client   594: client (0) opened socket (4) to 172.16.20.1:1113
enbd-client   595: client (1) got cliserv magic ok from 172.16.20.1:1113
enbd-client   595: client (1) got a signature ok from 172.16.20.1:1113
enbd-client   595: client (1) enters setsig
enbd-client   595: client (1) set sig uses whole disk, wants slot 2
ENBD #3150[0]: my_nbd_set_sig (1): failed sigcheck wth -22
enbd-client   595: #1885 setdevicesig: client (1) FAIL set sig or pass 
sigchk
enbd-client   595: #2099 setkernelslot: client (1) failed sig check on fd 3
enbd-client   595: #3279 negotiate: Failed to confirm signature with 
kernel: Invalid argument

And one or two minutes later something like:

ENBD #1160[0]: enbd_rollback (1): rollback req d803d20c!


Does this behaviour give you any hints?
enbd-client is started with these parameters:
enbd-client 172.16.20.1:1111 -n 2 -i xenoo /dev/nda

enbd-server:
enbd-server 1111 /path/to/LVM_volume

-- 
Mit freundlichen Gruessen / with kind regards
  Rudolph Bott

-------------------------------------------------------------------
Megabit Informationstechnik GmbH  Karstr.25  41068 Moenchengladbach
Tel: 02161/308980   mailto:[email protected]       ftp://megabit.net
Fax: 02161/3089818  mailto:[email protected]   http://megabit.net
-------------------------------------------------------------------