> I can't think of a way to avoid second pass over scatterlist without
> duplicating code (ata_qc_prep() and ata_fill_sg() from libata-core.c).

This appears to be incomplete:

> +                     VPRINTK("Splitting last PRD.\n");
> +
> +                     ap->prd[idx - 1].flags_len -= 
> cpu_to_le32(SG_COUNT_ASIC_BUG);
> +                     VPRINTK("PRD[%u] = (0x%X, 0x%X)\n", idx - 1, addr, 
> SG_COUNT_ASIC_BUG);
> +                     
> +                     addr = le32_to_cpu(ap->prd[idx - 1].addr) + len - 
> SG_COUNT_ASIC_BUG;
> +                     len  = SG_COUNT_ASIC_BUG;
> +                     ap->prd[idx].addr = cpu_to_le32(addr);
> +                     ap->prd[idx].flags_len = cpu_to_le32(len);
> +                     VPRINTK("PRD[%u] = (0x%X, 0x%X)\n", idx, addr, len);
> +
> +                     idx++;

What guarantees you have enough PRD entries to do this without changing
the limit in the structures ?

Otherwise looks good
-
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to