On 06/04/2012 05:31 PM, MORITA Kazutaka wrote: > At Mon, 04 Jun 2012 16:59:11 +0800, > Liu Yuan wrote: >> >> On 06/04/2012 04:53 PM, MORITA Kazutaka wrote: >> >>> One possibility is that if forward_write_obj_req() fails before >>> receiving data, the next forward_(read|write)_obj_req() could be >>> interleaved. >>> >>> The below untested patch may fix the problem though the approach is a >>> poor way. >> >> >> Well, from the log: >> >> Jun 04 10:16:37 do_gateway_request(288) 2, 80d6d76e00000000 , 1 >> Jun 04 10:16:37 do_gateway_request(308) failed: 2, 80d6d76e00000000 , 1, >> 54014b01 > > Is there no forward_write_obj error before this line? If so, I also > have no idea how this happens. > I can't access the log right now, I'll see to it later. >> >> It is a read request, which is supposed to be handled to object cache >> layer, and should object_cache_pull(), then calls >> forward_read_obj_req(), which failed (maybe this is why we didn't get >> any log about it). Note, there were two requests to 80d6d76e00000000 >> meanwhile. > > I guess we should add more eprintf in error paths to know where I/O > errors exactly happens. > Yes, We do. The old version does have enough debug info, the new version factored it out by me :-| Thanks, Yuan |