[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [Nbd] nbd not working with xinetd anymore



On Mon, Sep 10, 2012 at 5:59 PM, Wouter Verhelst <w@...112...> wrote:
> Hi,
>
> Sorry, looks like I forgot to reply to this one:
>
>>
>> Bug report on openSUSE bugzilla: https://bugzilla.novell.com/776027
>>
>> Please let me know if you need any more information.
>
> If you run nbd-server with those arguments from a command line, what
> does that give you? It *should* say "NBDSERVER" followed by some binary
> data; if it says more, that'd be a bug.

Running nbd-server 0 /srv/kiwi-ltsp/i386.img -r -C /dev/null returns
nothing, no nbd-server is started.

 #nbd-server 0 /srv/kiwi-ltsp/i386.img -r -C /dev/null
 # echo $?
1

nbd-server 20000 /srv/kiwi-ltsp/i386.img -r -C /dev/null starts
nbd-server normally with a warning "Specifying an export on the
command line is deprecated."

>
> --
https://bugzilla.novell.com/776027 has some more details added by
Thomas Abraham:

 Thomas Abraham 2012-08-20 19:04:47 UTC

I've taken a quick look. I was able to readily reproduce it.

It appears to be caused by a read() that returned 0 -- no data to read.

12499 open("/srv/test/test.img", O_RDONLY) = 4
12499 ioctl(4, BLKGETSIZE64, 0x7fff9e1ed118) = -1 ENOTTY (Inappropriate ioctl
for device)
12499 fstat(4, {st_mode=S_IFREG|0644, st_size=1048576000, ...}) = 0
12499 sendto(3, "<14>Aug 19 22:45:52 nbd-server: Size of exported file/device
is 1048576000", 74, MSG_NOSIGNAL, NULL, 0) = 74
12499 setsockopt(0, SOL_TCP, TCP_NODELAY, [1], 4) = 0
12499 write(0, "NBDMAGIC", 8)           = 8
12499 write(0, "\0\0B\2\201\206\22S", 8) = 8
12499 write(0, "\0\0\0\0>\200\0\0", 8)  = 8
12499 write(0, "\0\0\0\3", 4)           = 4
12499 write(0,
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"...,
124) = 124
12499 read(0,
"%`\225\23\0\0\0\0Xl|\36\0\210\377\377\0\0\0\0>\177\0\0\0\0\20\0", 28) = 28
12499 write(0, "gDf\230\0\0\0\0Xl|\36\0\210\377\377", 16) = 16
12499 lseek(4, 1048510464, SEEK_SET)    = 1048510464
12499 read(4,
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"...,
4096) = 4096
12499 write(0,
"gDf\230\0\0\0\0Xl|\36\0\210\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"...,
4112) = 4112
12499 read(0, "", 28)                   = 0
12499 write(2, "Error: Read failed: Inappropriate ioctl for
device\nExiting.\n", 60) = 60
12499 exit_group(1)                     = ?

The only difference I see offhand is, when run standalone or when run
on 12.1 through xinetd, this read() returns data -- another NBD_CMD_READ
from the client.

I haven't yet discovered the reason there is no data for this read.



Reply to: