Hi,

I'm trying to build an embedded system with an NBD-mounted filesystem as a 
chroot.  That is,I have a simple initrd image loaded into ram from 
elsewhere, and which the kernel uses as rootfs at boot-up.  Then, on the 
same system, I start an nbd server (on localhost), and a handful of 
nbd-clients.  I mount an ext3 filesystem on one of the clients, then chroot 
to it and run init from it.  This filesystem has Debian 6.0, which starts up 
very cleanly, and everything so far is working as it should be.

However, when I want to shut it down, things get messy.  The shutdown 
scripts call killall5, and I have populated the appropriate directory with 
the correct "omit" pids, and I see that killall5 doesn't try to kill either 
the server or the clients.  But the nbd-client for the mounted filesystem 
dies anyway, which means the subsequent file IO is broken, and the remaining 
scripts are not executed.  I have added debug to nbd-client, and the 
ioctl(nbd, NBD_DO_IT) call is returning after running killall5.  Then I 
wrote a simple test file that doesn't kill any processes at all, but does 
the signal(-1, SIGSTOP) followed by signal(-1, SIGCONT), just as killall5 
does, and the nbd-client still dies.  Delving deeper into the nbd kernel 
driver, the wait_event_interruptible() call in nbd_find_request() is 
returning -ERESTARTSYS after the  SIGSTOP/SIGCONT sequence has been run. 
This return value is returned from nbd_ioctl() as it should be.  I would 
think that the ioctl(nbd, NBD_DO_IT) would be restarted, but the ioctl() 
still returns to the nbd-client.  And, of course, the socket and nbd_thread 
have been shutdown by the time nbd_ioctl() returns.

This is about as far as I got.  I think I need a clean way for nbd_ioctl() 
to return -ERESTARTSYS without shutting everything down, so that when the 
call is restarted, it can just pick up where it left off.

Has anyone else run into this problem before?  I'm using nbd-2.9.16 on (arm) 
linux 2.6.29.

Regards
ic



------------------------------------------------------------------------------
Benefiting from Server Virtualization: Beyond Initial Workload 
Consolidation -- Increasing the use of server virtualization is a top
priority.Virtualization can reduce costs, simplify management, and improve 
application availability and disaster protection. Learn more about boosting 
the value of server virtualization. http://p.sf.net/sfu/vmware-sfdev2dev
_______________________________________________
Nbd-general mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/nbd-general

Reply via email to