Nginx writing to Cephfs

Valentin V. Bartenev vbart at nginx.com
Thu Jul 23 13:44:07 UTC 2015


On Thursday 23 July 2015 14:40:58 Vedran Furač wrote:
> Hello,
> 
> I'm having an issue with nginx writing to cephfs. Often I'm getting:
> 
> writev() "/home/ceph/temp/44/94/1/0000119444" failed (4: Interrupted
> system call) while reading upstream
> 
> looking with strace, this happens:
> 
> ...
> write(65, "e\314\366\36\302"..., 65536) = ? ERESTARTSYS (To be restarted)
> 
> It happens after first 4MBs (exactly) are written, subsequent write gets
> ERESTARTSYS (sometimes, but more rarely, it fails after first 32 or
> 64MBs, etc are written). Apparently nginx doesn't expect this and
> doesn't handle it so it cancels writes and deletes this partial file.
> Looking at the code, I saw it doesn't handle ERESTARTSYS in any
> different way compared to other write errors. Shouldn't it try to write
> same data again for a couple of times before finally giving up and
> erroring out? Do you have any suggestions on how to resolve this? I'm
> using latest stable nginx.
> 
> 

It more looks like a bug in cephfs.  writev() should never return
ERESTARTSYS.

  wbr, Valentin V. Bartenev



More information about the nginx mailing list