[sheepdog] [PATCH] use queue_request when resume waiting requests

Christoph Hellwig hch at infradead.org
Wed May 30 16:54:06 CEST 2012


On Wed, May 30, 2012 at 04:57:59PM +0800, levin li wrote:
> >>  			put_vnode_info(req->vnodes);
> >>  			req->vnodes = get_vnode_info();
> >>  			setup_access_to_local_objects(req);
> >> +			list_del(&req->request_list);
> >> +			process_io_request(req);
> > 
> > This also seems prettry equivalent to the (re)queue_request sequence.
> > 
> 
> Here it's different from requeue_request(), we did not queue the request again,
> but directly process it.

Before your patch this case statement does:

	req->rq.epoch = sys->epoch;
	put_vnode_info(req->vnodes);
	req->vnodes = get_vnode_info();
	setup_access_to_local_objects(req);
	list_del(&req->request_list);
	process_io_request(req);

queue_request does:

	req->op = get_sd_op(hdr->opcode);
	<check sys->status>
	req->rq.epoch = epoch = sys->epoch;	(unless local)
	req->vnodes = get_vnode_info();
	<assign work methods>
	setup_access_to_local_objects(req);
	check_request(req)
	process_io_request(req);

so using the same sequence as the others here is fine - we get the
additional superflous req->op and work method assignments as well
as the required check_request call.




More information about the sheepdog mailing list