HEADS UP: major CAM ATA MFC

Alexander Motin mav at FreeBSD.org
Tue Nov 17 23:30:55 UTC 2009


Hi.

I want to notice, that I've just merged from HEAD to 8-STABLE latest
results of my last months work on CAM-based ATA implementation and CAM
subsystem itself. Please contact me if you will have any problems,
questions, propositions, ...

What's done:
- major code cleanup. Many SCSIsms in ATA code removed, or reworked for
ATA specifics. Many ATA support parts reworked or newly implemented;
- CAM code took some fixes and optimizations. Luckily no major changes
were required yet.
- NCQ support re-factored. Same as for SCSI, non-capable devices now
limited by queue depth of 2, to let request sorter do it's job better.
- Port Multipliers support re-factored. Is is more stable now. Devices
hot-insert/remove supported. Implemented reinitialization after bus resets.
- ahci(4) and siis(4) drivers took many changes, including improved
timeout handling, error recovery and performance optimizations.
- added basic support for PATA transport. After ata(4) drivers wrapper
will be finished, it will allow to completely disable old ATA
infrastructure.
- camcontrol tool now reports more information about ATA devices and
supports ATA Power Management.
- added support for ATA devices with large sector size, declared by
ATA-7 spec (only theoretically now, I haven't seen such yet)
- added quirks mechanism for ATA, to allow, for example, to disable NCQ,
or later DMA, for specific device model or firmware revision,
- added support for DMA-incapable, and some old ATA devices;
- implemented ATA error reporting.

Things to be done yet:
- timeouts and hard errors recovery process with Port Multipliers used
can cause deadlocks if happen under heavy load. Any way it is a step
forward, as previously it just was not recovering at all.
- devices connected using Port Multipliers detected asynchronously, and
in some cases they may not get in time for root mounting.
- interface mode control possible only using loader tunables, but not
with camcontrol.
- NCQ is not used for devices with less tags supported then controller
capable (it is quite rare).

Many thanks to iXsystems Inc for supporting my work, making this all
possible. Also thanks to Vitsch Electronics, Sentex Corp, lissyara.su,
and many other people for hardware donations.

Feedbacks are welcome as always.

-- 
Alexander Motin


More information about the freebsd-stable mailing list