[sheepdog] [PATCH] sheep: fix handling of too old epoch in check_request

Christoph Hellwig hch at infradead.org
Wed May 30 16:41:24 CEST 2012


On Tue, May 29, 2012 at 05:33:56AM -0400, Christoph Hellwig wrote:
> If we hit a too old epoch in check_request (which can only happen
> when resume_pending_requests) we currently try to use io_op_done
> to decide what to do.  For objects that are store locally on a node
> that also acts as a gateway this is currently fatal:
> 
>  (a) io_op_done tries to remove the request from a list it has never
>      been added to
>  (b) io_op_done completes the request despite adding it to the
>      wait_rw_queue list
> 
> In addition it seems that
> 
>  (c) io_op_done was checking for a too large epoch, not a too small one
> 
> If that last one was intentional it should at least be documented in there,
> but I can't come up with a good explanation for it.
> 
> Fix these issues by opencoding the action we want in check_request.

All the issues above are unrelated to calling check_request from
resume_pending_requests, so is there a reason not to proceed with it?

Also does anyone disagree with my analysis of issue (c)?




More information about the sheepdog mailing list