Re: new Areca driver in 2.6.16-rc6-mm2 appears to be broken

From: erich
Date: Tue Apr 25 2006 - 23:24:13 EST


Dear Randy.Dunlap,

Thanks for your new update information.
The ARCMSR_MAX_XFER_SECTORS has bug if its value equal to 4096.
I had change ARCMSR_MAX_XFER_SECTORS of arcmsr linux driver into 512 at last driver version.
I will find out the solution and implement it into 4096.

Best Regards
Erich Chen

----- Original Message ----- From: "Randy.Dunlap" <rdunlap@xxxxxxxxxxxx>
To: "erich" <erich@xxxxxxxxxxxx>
Cc: <dax@xxxxxxxxxxxx>; <billion.wu@xxxxxxxxxxxx>; <viro@xxxxxxxxxxxxxxxx>; <akpm@xxxxxxxx>; <matti.aarnio@xxxxxxxxxxx>; <linux-kernel@xxxxxxxxxxxxxxx>; <James.Bottomley@xxxxxxxxxxxx>; <ccaputo@xxxxxxx>
Sent: Wednesday, April 26, 2006 12:02 AM
Subject: Re: new Areca driver in 2.6.16-rc6-mm2 appears to be broken


On Tue, 25 Apr 2006 16:45:18 +0800 erich wrote:

Dear Randy.Dunlap,

If it is true, I will add sg count check in arcmsr.
Driver report : host->sg_tablesize=ARCMSR_MAX_SG_ENTRIES to linux scsi host
layer.
But got an incorrect request of sg list count from .queuecommand.
Could you tell me which value of ARCMSR_MAX_XFER_SECTORS (4096/512)?

Hi Erich,
I didn't see 70 sg pieces while using the arcmsr driver, it was
while testing another driver. Sorry if that wasn't clear.

Driver setting host->sg_tablesize should be good enough according
to Documentation/scsi/scsi_mid_low_api.txt . Are you seeing problems
with that? and I don't understand your last question about
ARCMSR_MAX_XFER_SECTORS.


Best Regards
Erich chen

----- Original Message ----- From: "Randy.Dunlap" <rdunlap@xxxxxxxxxxxx>
To: "erich" <erich@xxxxxxxxxxxx>
Cc: <axboe@xxxxxxx>; <dax@xxxxxxxxxxxx>; <billion.wu@xxxxxxxxxxxx>;
<viro@xxxxxxxxxxxxxxxx>; <akpm@xxxxxxxx>; <matti.aarnio@xxxxxxxxxxx>;
<linux-kernel@xxxxxxxxxxxxxxx>; <James.Bottomley@xxxxxxxxxxxx>;
<ccaputo@xxxxxxx>
Sent: Thursday, April 20, 2006 11:38 PM
Subject: Re: new Areca driver in 2.6.16-rc6-mm2 appears to be broken


> On Thu, 20 Apr 2006 16:11:04 +0800 erich wrote:
>
>> Dear Dear Jens Axboe,
>>
>> Thanks for your notification and advice.
>> Areca's firmware has max sg entries of 38 limit.
>> In my debug driver I had add this condition check.
>> But no one request more than 38 sg.
>
> Yesterday I saw a request with 70 sg pieces. It was while
> running mkfs.ext3 .
>
>> Both transfer length all have a lot of requests equal with 38 sg.
>> But why it ocur only at 4096 sectors?
>> If the /sys/block/sda/queue/max_sectors_kb equal 256 all operation
>> running
>> well.
>> But if I modify it more than 256, the bug appeared.
>> I will do more research about why there were a lot of requests equal
>> with
>> 38 sg in all file system.
>> And only it ocur at the volume that format with mkfs.ext2.
>> Thanks again.
>>
>> Best Regards
>> Erich Chen
>>
>> ----- Original Message ----- >> From: "Jens Axboe" <axboe@xxxxxxx>
>> To: "erich" <erich@xxxxxxxxxxxx>
>> Cc: <dax@xxxxxxxxxxxx>; <billion.wu@xxxxxxxxxxxx>; "Al Viro"
>> <viro@xxxxxxxxxxxxxxxx>; "Andrew Morton" <akpm@xxxxxxxx>; >> "Randy.Dunlap"
>> <rdunlap@xxxxxxxxxxxx>; "Matti Aarnio" <matti.aarnio@xxxxxxxxxxx>;
>> <linux-kernel@xxxxxxxxxxxxxxx>; "James Bottomley"
>> <James.Bottomley@xxxxxxxxxxxx>; "Chris Caputo" <ccaputo@xxxxxxx>
>> Sent: Thursday, April 20, 2006 2:42 PM
>> Subject: Re: new Areca driver in 2.6.16-rc6-mm2 appears to be broken
>>
>>
>> > On Thu, Apr 20 2006, erich wrote:
>> >> Dear Jens Axboe,
>> >>
>> >> I do "fsck -fy /dev/sda1" on driver MAX_XFER_SECTORS 512.
>> >> The file system was not clean.
>> >> I attach mesg.txt for you refer to.
>> >>
>> >> =====================================
>> >> == boot with driver MAX_XFER_SECTORS 4096
>> >> =====================================
>> >> #mkfs.ext2 /dev/sda1
>> >> #reboot
>> >> =====================================
>> >> == boot with driver MAX_XFER_SECTORS 512
>> >> =====================================
>> >> #fsck -fy /dev/sda1
>> >> /dev/sda1:clean,.............
>> >> #reboot
>> >> =====================================
>> >> == boot with driver MAX_XFER_SECTORS 4096
>> >> =====================================
>> >> #mount /dev/sda1 /mnt/sda1
>> >> #cp /root/aa /mnt/sda1
>> >> #reboot
>> >> =====================================
>> >> == boot with driver MAX_XFER_SECTORS 512
>> >> =====================================
>> >> #fsck -fy /dev/sda1
>> >> /dev/sda1: no clean,........and dump message such as the attach >> >> file
>> >> mesg.txt.
>> >
>> > So the conclusion is that your driver and/or hardware corrupts data
>> > when
>> > you set MAX_XFER_SECTORS too high. I can't help you anymore with >> > this,
>> > you should be in the best position to debug the driver and/or >> > hardware
>> > :-)
>> >
>> > It could be that the higher setting just exposes another transfer
>> > setting bug, like maximum number of segments or segment size, etc.
>> >
>> > -- >> > Jens Axboe
>> >
>>
>>
>
>
> ---
> ~Randy




---
~Randy

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/