Re: Re: [PATCH 2/3] block: Fix not tracing all device plug-operation.

From: Jianpeng Ma
Date: Fri Sep 14 2012 - 21:35:36 EST


On 2012-08-10 21:09 Jens Axboe <jaxboe@xxxxxxxxxxxx> Wrote:
>On 08/10/2012 01:46 PM, Jianpeng Ma wrote:
>> If process handled two or more devices,there will not be trace some
>> devices plug-operation.
>>
>> Signed-off-by: Jianpeng Ma <majianpeng@xxxxxxxxx>
>> ---
>> block/blk-core.c | 16 +++++++++++++++-
>> 1 file changed, 15 insertions(+), 1 deletion(-)
>>
>> diff --git a/block/blk-core.c b/block/blk-core.c
>> index 7a3abc6..034f186 100644
>> --- a/block/blk-core.c
>> +++ b/block/blk-core.c
>> @@ -1521,11 +1521,25 @@ get_rq:
>> struct request *__rq;
>>
>> __rq = list_entry_rq(plug->list.prev);
>> - if (__rq->q != q)
>> + if (__rq->q != q) {
>> plug->should_sort = 1;
>> + trace_block_plug(q);
>> + }
>> + } else {
>> + struct request *__rq;
>> + list_for_each_entry_reverse(__rq, &plug->list,
>> + queuelist) {
>> + if (__rq->q == q) {
>> + list_add_tail(&req->queuelist,
>> + &__rq->queuelist);
>> + goto stat_acct;
>
>Did you verify this? It doesn't look right to me. You browse the list in
>reverse, which means __rq is the first one that has a matching q. Then
>you add the new req IN FRONT of that. You would want list_add() here
>instead, adding it as the last member of that q string, not in the
>middle.
>
>--
>Jens Axboe
>
Hi all:
How about those patches? Ok or wrong?
Thanks!N?叉??y??b??千v??藓{.n???{?赙zXФ?塄}?财??j:+v???赙zZ+€?zf"?????i????ア??璀??撷f?^j谦y??@A?囤?0鹅h??i