[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