[Gluster-devel] Annoying ENOBUFS error in writev

Emmanuel Dreyfus manu at netbsd.org
Sat Oct 9 04:44:21 UTC 2010


Hello

I spent a fewdays tracking a bug with glusterfs on NetBSD. I use a full NetBSD
build within glusterfs as a stress test. 

The bug occurs within a configure script, where sed is invoked to turn a
configure into configure.lineno. The sed process hang, and traceing system
calls, I can see a read() system call that never returns from then kernel.

Tracing glusterfsd (on the client) shows this:
   501      3 glusterfsd RET   readv 80/0x50    (this is the FUSE frame)
   501      3 glusterfsd CALL  writev(7,0xb8a644c0,2)
   501      3 glusterfsd RET   writev -1 errno 55 No buffer space available

The deep cause of the problem is kernel buffer memory running low. I suspect
this condition never arise with factory settings on Linux, therefore the poor
error handling. it would be nice if glusterfsd could return a EIO (or ENOBUFS
if it makes sense) to FUSE, so that the kernel can detect the failure, instead
of remaining hung on the read() system call.

Thoughts?

-- 
Emmanuel Dreyfus
http://hcpnet.free.fr/pubz
manu at netbsd.org




More information about the Gluster-devel mailing list