[PATCH] libata-eh: implement ata_eh_info and ata_eh_context
authorTejun Heo <htejun@gmail.com>
Mon, 15 May 2006 11:58:21 +0000 (20:58 +0900)
committerTejun Heo <htejun@gmail.com>
Mon, 15 May 2006 11:58:21 +0000 (20:58 +0900)
commitf3e81b19aac23c0e8c55d5961324ef7de44c23bb
tree9ea0bf3c5ecabb855a78623236d07e7bc2976ca3
parent0c247c559cd70f85ba9f0764ce13ae00e20fcad8
[PATCH] libata-eh: implement ata_eh_info and ata_eh_context

struct ata_eh_info serves as the communication channel between
execution path and EH.  Execution path describes detected error
condition in ap->eh_info and EH recovers the port using it.  To avoid
missing error conditions detected during EH, EH makes its own copy of
eh_info and clears it on entry allowing error info to accumulate
during EH.

Most EH states including EH's copy of eh_info are stored in
ap->eh_context (struct ata_eh_context) which is owned by EH and thus
doesn't require any synchronization to access and alter.  This
standardized context makes it easy to integrate various parts of EH
and extend EH to handle multiple links (for PM).

Signed-off-by: Tejun Heo <htejun@gmail.com>
drivers/scsi/libata-eh.c
include/linux/libata.h