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

levin li levin108 at gmail.com
Thu May 31 03:44:21 CEST 2012


On 05/30/2012 10:54 PM, Christoph Hellwig wrote:
> 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.
> 

hmm, it's fine for me to call check_request here, I'd post another version.

thanks,

levin



More information about the sheepdog mailing list