[SCSI] libsas: enforce eh strategy handlers only in eh context
authorDan Williams <dan.j.williams@intel.com>
Fri, 22 Jun 2012 06:30:48 +0000 (23:30 -0700)
committerJames Bottomley <JBottomley@Parallels.com>
Fri, 20 Jul 2012 07:58:50 +0000 (08:58 +0100)
commit5db45bdc87ce4f503947adf7896586d60c63322c
treef939bbcf1e6fc2664c54b46949eb8e5af8aa070b
parentb9d5c6b7ef570bea0d22746944d7b58fa7f17b13
[SCSI] libsas: enforce eh strategy handlers only in eh context

The strategy handlers may be called in places that are problematic for
libsas (i.e. sata resets outside of domain revalidation filtering /
libata link recovery), or problematic for userspace (non-blocking ioctl
to sleeping reset functions).  However, these routines are also called
for eh escalations and recovery of scsi_eh_prep_cmnd(), so permit them
as long as we are running in the host's error handler, otherwise arrange
for them to be triggered in eh_context.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/scsi/libsas/sas_discover.c
drivers/scsi/libsas/sas_init.c
drivers/scsi/libsas/sas_scsi_host.c
include/scsi/libsas.h