Direction: SATA is much more suited to SCSI, because otherwise you wind
up re-creating all the queueing and error handling mess that SCSI
already does for you. The SATA2 host controllers coming out soon do
full host-side TCQ, not the dain-bramaged ATA TCQ bus-release stuff.
Doing SATA2 devel in drivers/ide will essentially be re-creating the
SCSI mid-layer.
Modularity: drivers/ide has come a long way. It needed to be turned
"inside out", and that's what Alan did. But there's still a lot of code
that needs to be factored out/about, before hotplugging and device model
stuff is sane.
Legacy-free: Because I don't have to worry about legacy host
controllers, I can ignore limitations drivers/ide cannot. In
drivers/ide, each host IO (PIO/MMIO) is done via function pointer. If
your arch has a mach_vec, more function pointers. Mine does direct
calls to the asm/io.h functions in faster. So, ATA command submission
is measureably faster.
sysfs: James and co are putting time into getting scsi sysfs right. I
would rather ride their coattails, and have my driver Just Work with
sysfs and the driver model.
PIO data transfer is faster and more scheduler-friendly, since it polls
from a kernel thread.
And for specifically Intel SATA, drivers/ide flat out doesn't work (even
though it claims to).
So, I conclude: faster, smaller, and better future direction. IMO, of
course :)
Jeff
(the following is somewhat comparing apples to oranges, but I like doing
it nonetheless)
bash-2.05b$ wc -l drivers/scsi/libata.c drivers/scsi/ata_piix.c
include/linux/ata.h
2247 drivers/scsi/libata.c
322 drivers/scsi/ata_piix.c
485 include/linux/ata.h
3054 total
bash-2.05b$ wc -l drivers/ide/*.[ch] drivers/ide/pci/piix.[ch]
3418 drivers/ide/ide-cd.c
733 drivers/ide/ide-cd.h
71 drivers/ide/ide-default.c
1841 drivers/ide/ide-disk.c
1145 drivers/ide/ide-dma.c
2090 drivers/ide/ide-floppy.c
135 drivers/ide/ide-geometry.c
1330 drivers/ide/ide-io.c
1322 drivers/ide/ide-iops.c
437 drivers/ide/ide-lib.c
97 drivers/ide/ide-pnp.c
1466 drivers/ide/ide-probe.c
930 drivers/ide/ide-proc.c
6330 drivers/ide/ide-tape.c
2006 drivers/ide/ide-taskfile.c
798 drivers/ide/ide-tcq.c
281 drivers/ide/ide-timing.h
2539 drivers/ide/ide.c
41 drivers/ide/ide_modes.h
899 drivers/ide/setup-pci.c
840 drivers/ide/pci/piix.c
317 drivers/ide/pci/piix.h
29066 total
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/