</sect2>
</sect1>
- <sect1>
+ </chapter>
+
+ <chapter id="libataEH">
<title>Error handling</title>
<para>
(Documentation/scsi/scsi_eh.txt) and ATA exceptions doc first.
</para>
- <sect2><title>Origins of commands</title>
+ <sect1><title>Origins of commands</title>
<para>
In libata, a command is represented with struct ata_queued_cmd
or qc. qc's are preallocated during port initialization and
and commands for SCSI emulation are passed as SCSI commands
through queuecommand callback of SCSI host template.
</para>
- </sect2>
+ </sect1>
- <sect2><title>How commands are issued</title>
+ <sect1><title>How commands are issued</title>
<variablelist>
</varlistentry>
</variablelist>
- </sect2>
+ </sect1>
- <sect2><title>How commands are processed</title>
+ <sect1><title>How commands are processed</title>
<para>
Depending on which protocol and which controller are used,
commands are processed differently. For the purpose of
</listitem>
</varlistentry>
</variablelist>
- </sect2>
+ </sect1>
- <sect2><title>How commands are completed</title>
+ <sect1><title>How commands are completed</title>
<para>
Once issued, all qc's are either completed with
ata_qc_complete() or time out. For commands which are handled
This leads us to ata_scsi_error() with partially completed qc.
</para>
- </sect2>
+ </sect1>
- <sect2><title>ata_scsi_error()</title>
+ <sect1><title>ata_scsi_error()</title>
<para>
ata_scsi_error() is the current hostt->eh_strategy_handler()
for libata. As discussed above, this will be entered in two
to/cannot call ata_qc_complete() again.
</para>
- </sect2>
+ </sect1>
- <sect2><title>Problems with the current EH</title>
+ <sect1><title>Problems with the current EH</title>
<itemizedlist>
</listitem>
</itemizedlist>
- </sect2>
-
- </sect1>
+ </sect1>
</chapter>
<chapter id="libataExt">