Re: [PATCH] Re: [bug] ata subsystem related crash with latest -git

Jeff Garzik
2007-10-18T11:03:19Z

Ingo Molnar wrote:
> * Jeff Garzik <jeff@garzik.org> wrote:
>
>>> Tomo and I agreed to kill sg_last() a few days ago anyways, so this
>>> is perfectly fine with me.
>> Yep, the [attached] patch that kills ata_sg_is_last() is working here
>> on both machines that were previously croaking.
>>
>> It would be nice to get pdc_adma, sata_sil24 and ipr it-works test
>> done, but IMO the patch is pretty straightforward and should be OK.
>
> just a quick question: i have Jens's workarounds applied right now (see
> patch below). Am i now crash/corruption-safe, or do i need your patch
> too? And once your patch [and the other sg_*() patches] are upstream i
> dont need the workaround anymore, correct?

You need my patch if and only if you use one of the drivers touched by
the patch. ata_sg_is_last() was a driver helper function, so my fix
never really touched core code.

I never had to apply the changes you included, to fix problems here.

And looking at those changes...
> - q->max_phys_segments = max_segments;
> + q->max_phys_segments = max_segments - 1;
...
> -#define SCSI_MAX_SG_SEGMENTS 128
> +#define SCSI_MAX_SG_SEGMENTS 129

I wonder if libata should be doing

blk_queue_max_phys_segments(q, q->max_phys_segments - 1)

to account for the pad entry that libata owns.

Jeff