[ENBD] can't write to nb device - nbd_get_req blocking req

John Repass enbd@lists.community.tummy.com
Thu, 24 Apr 2003 13:21:31 -0600


I have been experimenting with enbd 2.4.31 on both debian stable and 
unstable distributions with 2.4.20 and 2.4.18 kernels, and every time I 
begin to access the nd device the same thing happens.  The client locks 
up trying to write anything:

enbd-test /dev/nda
/dev/nda has 435907584 bytes in 425691 blocks of 1024 bytes each
flushing buffers..done
writing....5%....10%....15%....20%....25%....30%....35%....40%....45%....50%....55%....60%....65%....70%....75%....80%....85%....90%....95%....done
test 1 succeeded:  0 incorrect blocks
flushing buffers..

------
and it hangs forever until echo 1 > /proc/nbdinfo & killing the client
--------
cat /proc/nbdinfo
Device a:       Open
[a] State:      signed, rw, enabled, validated, plug, acct, last error 
0, lives 0, bp 0
[a] Queued:     +0R/64W curr (check 0R/64W) +4R/64W max
[a] Buffersize: 262144  (sectors=512, blocks=256)
[a] Blocksize:  1024    (log=10)
[a] Size:       425691KB
[a] Blocks:     425691
[a] Groups:     1       (0)
[a] Sockets:    1       (*)
[a] Requested:  74      (10)    8R/66W  max 1
[a] Despatched: 10      (10)    8R/2W   md5 0W (0 eq, 0 ne, 0 dn)
[a] Errored:    0       (0)     0+0
[a] Pending:    2       (0)     0R/2W+0R/64W
[a] B/s now:    0       (0R+0W)
[a] B/s ave:    0       (0R+0W)
[a] B/s max:    24.0K   (8.00KR+21.0KW)
[a] Spectrum:   100%1
[a] Kthreads:   0       (0 waiting/0 running/1 max)
[a] Cthreads:   0       (-)
[a] Cpids:      0       (323)
Device b-p:     Closed

-----------
I've tried making a filesystem on the raw device and then mounting it, 
which works, and I can touch files on the mounted device but if I try to 
copy even a very small text file I get the same error.  I've tried 
running the server with the -a option and writing very small amounts of 
data:  cpio if=/dev/null of=/dev/nda bs=1096 count=10  will work 
sometimes but anything larger that 500 causes the same condition.

Here are relevant kernel log entries from the enbd-test above:
------------------
Apr 24 12:43:09 porto kernel: ENBD enbd.c #8439[0]: nbd_init registered 
device at major 43
Apr 24 12:44:15 porto kernel: ENBD enbd.c #1279[0]: nbd_open setup device 0
Apr 24 12:44:20 porto kernel: ENBD enbd.c #4670[0]: nbd_set_sock 
increased socket count to 1
Apr 24 12:44:20 porto kernel: ENBD enbd.c #4674[0]: nbd_set_sock 
increased group count to 1
Apr 24 12:44:20 porto kernel: ENBD enbd.c #4001[0]: 
repoint_preferred_group reset active group to 0
Apr 24 12:44:20 porto kernel: ENBD enbd.c #3962[0]: nbd_enable enabled 
device nda
Apr 24 12:44:20 porto kernel: ENBD enbd.c #1177[0]: 
nbd_reread_partitions partition check on device nda
Apr 24 12:44:20 porto kernel:  nda:<1>ENBD enbd.c #3103[0]: nbd_get_req 
validation req for sector 0 seen OK!
Apr 24 12:44:20 porto kernel: ENBD enbd.c #3111[0]: nbd_get_req blocking 
req on
sector 2 while waiting for sector 0!
Apr 24 12:44:21 porto kernel: ENBD enbd.c #3111[1]: nbd_get_req blocking 
req on
sector 2 while waiting for sector 0!
Apr 24 12:44:21 porto kernel: ENBD enbd.c #3111[2]: nbd_get_req blocking 
req on
sector 2 while waiting for sector 0!
Apr 24 12:44:22 porto kernel: ENBD enbd.c #3111[3]: nbd_get_req blocking 
req on
sector 2 while waiting for sector 0!
Apr 24 12:44:22 porto kernel: ENBD enbd.c #3111[4]: nbd_get_req blocking 
req on
sector 2 while waiting for sector 0!
Apr 24 12:44:23 porto kernel: ENBD enbd.c #3111[5]: nbd_get_req blocking 
req on
sector 2 while waiting for sector 0!
Apr 24 12:44:23 porto kernel: ENBD enbd.c #3111[6]: nbd_get_req blocking 
req on
sector 2 while waiting for sector 0!
Apr 24 12:44:24 porto kernel: ENBD enbd.c #3111[7]: nbd_get_req blocking 
req on
sector 2 while waiting for sector 0!
Apr 24 12:44:24 porto kernel: ENBD enbd.c #3111[8]: nbd_get_req blocking 
req on
sector 2 while waiting for sector 0!
Apr 24 12:44:25 porto kernel: ENBD enbd.c #3111[9]: nbd_get_req blocking 
req on
sector 2 while waiting for sector 0!
Apr 24 12:44:25 porto kernel: ENBD enbd.c #3111[10]: nbd_get_req 
blocking req on sector 2 while waiting for sector 0!
Apr 24 12:44:26 porto kernel: ENBD enbd.c #3111[11]: nbd_get_req 
blocking req on sector 2 while waiting for sector 0!
Apr 24 12:44:26 porto kernel: ENBD enbd.c #3111[12]: nbd_get_req 
blocking req on sector 2 while waiting for sector 0!
Apr 24 12:44:27 porto kernel: ENBD enbd.c #3111[13]: nbd_get_req 
blocking req on sector 2 while waiting for sector 0!
Apr 24 12:44:27 porto kernel: ENBD enbd.c #3111[14]: nbd_get_req 
blocking req on sector 2 while waiting for sector 0!
Apr 24 12:44:28 porto kernel: ENBD enbd.c #3111[15]: nbd_get_req 
blocking req on sector 2 while waiting for sector 0!
Apr 24 12:44:28 porto kernel: ENBD enbd.c #3111[16]: nbd_get_req 
blocking req on sector 2 while waiting for sector 0!
Apr 24 12:44:29 porto kernel: ENBD enbd.c #3111[17]: nbd_get_req 
blocking req on sector 2 while waiting for sector 0!
Apr 24 12:44:29 porto kernel: ENBD enbd.c #3111[18]: nbd_get_req 
blocking req on sector 2 while waiting for sector 0!
Apr 24 12:44:30 porto kernel: ENBD enbd.c #3117[0]: nbd_get_req gave up 
waiting
for validation req!
Apr 24 12:44:30 porto kernel: ENBD enbd.c #3111[19]: nbd_get_req 
blocking req on sector 4 while waiting for sector 0!
Apr 24 12:44:30 porto kernel: ENBD enbd.c #3111[20]: nbd_get_req 
blocking req on sector 4 while waiting for sector 0!
Apr 24 12:44:31 porto kernel: ENBD enbd.c #3111[21]: nbd_get_req 
blocking req on sector 4 while waiting for sector 0!
Apr 24 12:44:31 porto kernel: ENBD enbd.c #3111[22]: nbd_get_req 
blocking req on sector 4 while waiting for sector 0!
Apr 24 12:44:32 porto kernel: ENBD enbd.c #3111[23]: nbd_get_req 
blocking req on sector 4 while waiting for sector 0!
Apr 24 12:44:32 porto kernel: ENBD enbd.c #3111[24]: nbd_get_req 
blocking req on sector 4 while waiting for sector 0!
Apr 24 12:44:33 porto kernel: ENBD enbd.c #3111[25]: nbd_get_req 
blocking req on sector 4 while waiting for sector 0!
Apr 24 12:44:33 porto kernel: ENBD enbd.c #3111[26]: nbd_get_req 
blocking req on sector 4 while waiting for sector 0!
Apr 24 12:44:34 porto kernel: ENBD enbd.c #3111[27]: nbd_get_req 
blocking req on sector 4 while waiting for sector 0!
Apr 24 12:44:34 porto kernel: ENBD enbd.c #3111[28]: nbd_get_req 
blocking req on sector 4 while waiting for sector 0!
Apr 24 12:44:35 porto kernel: ENBD enbd.c #3111[29]: nbd_get_req 
blocking req on sector 4 while waiting for sector 0!
Apr 24 12:44:35 porto kernel: ENBD enbd.c #3111[30]: nbd_get_req 
blocking req on sector 4 while waiting for sector 0!
Apr 24 12:44:36 porto kernel: ENBD enbd.c #3111[31]: nbd_get_req 
blocking req on sector 4 while waiting for sector 0!
Apr 24 12:44:36 porto kernel: ENBD enbd.c #3111[32]: nbd_get_req 
blocking req on sector 4 while waiting for sector 0!
Apr 24 12:44:37 porto kernel: ENBD enbd.c #3111[33]: nbd_get_req 
blocking req on sector 4 while waiting for sector 0!
Apr 24 12:44:37 porto kernel: ENBD enbd.c #3111[34]: nbd_get_req 
blocking req on sector 4 while waiting for sector 0!
Apr 24 12:44:38 porto kernel: ENBD enbd.c #3111[35]: nbd_get_req 
blocking req on sector 4 while waiting for sector 0!
Apr 24 12:44:38 porto kernel: ENBD enbd.c #3111[36]: nbd_get_req 
blocking req on sector 4 while waiting for sector 0!
Apr 24 12:44:39 porto kernel: ENBD enbd.c #3111[37]: nbd_get_req 
blocking req on sector 4 while waiting for sector 0!
Apr 24 12:44:39 porto kernel: ENBD enbd.c #3117[1]: nbd_get_req gave up 
waiting
for validation req!
Apr 24 12:44:39 porto kernel: ENBD enbd.c #3111[38]: nbd_get_req 
blocking req on sector 6 while waiting for sector 0!
Apr 24 12:44:40 porto kernel: ENBD enbd.c #3111[39]: nbd_get_req 
blocking req on sector 6 while waiting for sector 0!
Apr 24 12:44:40 porto kernel: ENBD enbd.c #3111[40]: nbd_get_req 
blocking req on sector 6 while waiting for sector 0!
Apr 24 12:44:41 porto kernel: ENBD enbd.c #3111[41]: nbd_get_req 
blocking req on sector 6 while waiting for sector 0!
Apr 24 12:44:41 porto kernel: ENBD enbd.c #3111[42]: nbd_get_req 
blocking req on sector 6 while waiting for sector 0!
Apr 24 12:44:45 porto kernel: ENBD enbd.c #3111[50]: nbd_get_req 
blocking req on sector 6 while waiting for sector 0!
Apr 24 12:44:46 porto kernel: ENBD enbd.c #3111[51]: nbd_get_req 
blocking req on sector 6 while waiting for sector 0!
Apr 24 12:44:46 porto kernel: ENBD enbd.c #3111[52]: nbd_get_req 
blocking req on sector 6 while waiting for sector 0!
Apr 24 12:44:47 porto kernel: ENBD enbd.c #3111[53]: nbd_get_req 
blocking req on sector 6 while waiting for sector 0!
Apr 24 12:44:47 porto kernel: ENBD enbd.c #3111[54]: nbd_get_req 
blocking req on sector 6 while waiting for sector 0!
Apr 24 12:44:48 porto kernel: ENBD enbd.c #3111[55]: nbd_get_req 
blocking req on sector 6 while waiting for sector 0!
Apr 24 12:44:48 porto kernel: ENBD enbd.c #3111[56]: nbd_get_req 
blocking req on sector 6 while waiting for sector 0!
Apr 24 12:44:49 porto kernel: ENBD enbd.c #3117[2]: nbd_get_req gave up 
waiting
for validation req!
Apr 24 12:47:12 porto kernel: ENBD enbd.c #1689[0]: nbd_rollback 
rollback req f7e2d800, type 1, sector 4, 1 blks, 2  sectors from slot 0!
Apr 24 12:48:12 porto kernel: ENBD enbd.c #1689[1]: nbd_rollback 
rollback req f7e2d600, type 1, sector 6, 1 blks, 2  sectors from slot 0!
Apr 24 12:50:04 porto kernel: ENBD enbd.c #7251[0]: nbd_read_proc : 
altered queued count to 64 from 62

--------------------------

Thank you for any help getting this to work.

--John