On Mon, Jan 14, 2013 at 04:16:34PM +0800, Liu Yuan wrote: > Hi List, > This problem can be reproduced by: > 1. start a sheepdog cluster and create a volume 'test'* > 2. attach 'test' to a bootable image like > $ qemu -hda image -drive if=virtio,file=sheepdog:test > 3. pkill sheep # create a half-closed situation > > I have straced it that QEMU is busy doing nonsense read/write() after > select() in os_host_main_loop_wait(). I have no knowledge of > glib_select_xxx, so someone please help fix it.
You mentioned a nonsense read(). What is the return value? If you get a read with return value 0, this tells you the socket has been closed. Can you handle these cases in block/sheepdog.c? Stefan
