The patch titled SCSI: make scsi_implement_eh() generic API for SCSI transports has been removed from the -mm tree. Its filename is scsi-make-scsi_implement_eh-generic-api-for-scsi-transports.patch This patch was probably dropped from -mm because it has now been merged into a subsystem tree or into Linus's tree, or because it was folded into its parent patch in the -mm tree. ------------------------------------------------------ Subject: SCSI: make scsi_implement_eh() generic API for SCSI transports From: Tejun Heo <htejun@xxxxxxxxx> libata implemented a feature to schedule EH without an associated EH by manipulating shost->host_eh_scheduled in ata_scsi_schedule_eh() directly. Move this function to scsi_error.c and rename it to scsi_schedule_eh(). It is now an exported API for SCSI transports and exported via new header file drivers/scsi/scsi_transport_api.h This patch also de-export scsi_eh_wakeup() which was exported specifically for ata_scsi_schedule_eh(). Signed-off-by: Tejun Heo <htejun@xxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxx> --- drivers/scsi/libata-eh.c | 3 ++- drivers/scsi/libata-scsi.c | 24 ------------------------ drivers/scsi/scsi_error.c | 23 ++++++++++++++++++++++- drivers/scsi/scsi_priv.h | 1 + drivers/scsi/scsi_transport_api.h | 6 ++++++ include/scsi/scsi_eh.h | 1 - 6 files changed, 31 insertions(+), 27 deletions(-) diff -puN drivers/scsi/libata-eh.c~scsi-make-scsi_implement_eh-generic-api-for-scsi-transports drivers/scsi/libata-eh.c --- 25/drivers/scsi/libata-eh.c~scsi-make-scsi_implement_eh-generic-api-for-scsi-transports Fri May 19 13:45:32 2006 +++ 25-akpm/drivers/scsi/libata-eh.c Fri May 19 13:45:32 2006 @@ -39,6 +39,7 @@ #include <scsi/scsi_eh.h> #include <scsi/scsi_device.h> #include <scsi/scsi_cmnd.h> +#include "scsi_transport_api.h" #include <linux/libata.h> @@ -432,7 +433,7 @@ void ata_port_schedule_eh(struct ata_por WARN_ON(!ap->ops->error_handler); ap->flags |= ATA_FLAG_EH_PENDING; - ata_schedule_scsi_eh(ap->host); + scsi_schedule_eh(ap->host); DPRINTK("port EH scheduled\n"); } diff -puN drivers/scsi/libata-scsi.c~scsi-make-scsi_implement_eh-generic-api-for-scsi-transports drivers/scsi/libata-scsi.c --- 25/drivers/scsi/libata-scsi.c~scsi-make-scsi_implement_eh-generic-api-for-scsi-transports Fri May 19 13:45:32 2006 +++ 25-akpm/drivers/scsi/libata-scsi.c Fri May 19 13:45:32 2006 @@ -2745,27 +2745,3 @@ void ata_scsi_scan_host(struct ata_port scsi_scan_target(&ap->host->shost_gendev, 0, i, 0, 0); } } - -/** - * ata_schedule_scsi_eh - schedule EH for SCSI host - * @shost: SCSI host to invoke error handling on. - * - * Schedule SCSI EH without scmd. This is a hack. - * - * LOCKING: - * spin_lock_irqsave(host_set lock) - **/ -void ata_schedule_scsi_eh(struct Scsi_Host *shost) -{ - unsigned long flags; - - spin_lock_irqsave(shost->host_lock, flags); - - if (scsi_host_set_state(shost, SHOST_RECOVERY) == 0 || - scsi_host_set_state(shost, SHOST_CANCEL_RECOVERY) == 0) { - shost->host_eh_scheduled++; - scsi_eh_wakeup(shost); - } - - spin_unlock_irqrestore(shost->host_lock, flags); -} diff -puN drivers/scsi/scsi_error.c~scsi-make-scsi_implement_eh-generic-api-for-scsi-transports drivers/scsi/scsi_error.c --- 25/drivers/scsi/scsi_error.c~scsi-make-scsi_implement_eh-generic-api-for-scsi-transports Fri May 19 13:45:32 2006 +++ 25-akpm/drivers/scsi/scsi_error.c Fri May 19 13:45:32 2006 @@ -56,7 +56,28 @@ void scsi_eh_wakeup(struct Scsi_Host *sh printk("Waking error handler thread\n")); } } -EXPORT_SYMBOL_GPL(scsi_eh_wakeup); + +/** + * scsi_schedule_eh - schedule EH for SCSI host + * @shost: SCSI host to invoke error handling on. + * + * Schedule SCSI EH without scmd. + **/ +void scsi_schedule_eh(struct Scsi_Host *shost) +{ + unsigned long flags; + + spin_lock_irqsave(shost->host_lock, flags); + + if (scsi_host_set_state(shost, SHOST_RECOVERY) == 0 || + scsi_host_set_state(shost, SHOST_CANCEL_RECOVERY) == 0) { + shost->host_eh_scheduled++; + scsi_eh_wakeup(shost); + } + + spin_unlock_irqrestore(shost->host_lock, flags); +} +EXPORT_SYMBOL_GPL(scsi_schedule_eh); /** * scsi_eh_scmd_add - add scsi cmd to error handling. diff -puN drivers/scsi/scsi_priv.h~scsi-make-scsi_implement_eh-generic-api-for-scsi-transports drivers/scsi/scsi_priv.h --- 25/drivers/scsi/scsi_priv.h~scsi-make-scsi_implement_eh-generic-api-for-scsi-transports Fri May 19 13:45:32 2006 +++ 25-akpm/drivers/scsi/scsi_priv.h Fri May 19 13:45:32 2006 @@ -63,6 +63,7 @@ extern int scsi_delete_timer(struct scsi extern void scsi_times_out(struct scsi_cmnd *cmd); extern int scsi_error_handler(void *host); extern int scsi_decide_disposition(struct scsi_cmnd *cmd); +extern void scsi_eh_wakeup(struct Scsi_Host *shost); extern int scsi_eh_scmd_add(struct scsi_cmnd *, int); /* scsi_lib.c */ diff -puN /dev/null drivers/scsi/scsi_transport_api.h --- /dev/null Thu Apr 11 07:25:15 2002 +++ 25-akpm/drivers/scsi/scsi_transport_api.h Fri May 19 13:45:32 2006 @@ -0,0 +1,6 @@ +#ifndef _SCSI_TRANSPORT_API_H +#define _SCSI_TRANSPORT_API_H + +void scsi_schedule_eh(struct Scsi_Host *shost); + +#endif /* _SCSI_TRANSPORT_API_H */ diff -puN include/scsi/scsi_eh.h~scsi-make-scsi_implement_eh-generic-api-for-scsi-transports include/scsi/scsi_eh.h --- 25/include/scsi/scsi_eh.h~scsi-make-scsi_implement_eh-generic-api-for-scsi-transports Fri May 19 13:45:32 2006 +++ 25-akpm/include/scsi/scsi_eh.h Fri May 19 13:45:32 2006 @@ -35,7 +35,6 @@ static inline int scsi_sense_valid(struc } -extern void scsi_eh_wakeup(struct Scsi_Host *shost); extern void scsi_eh_finish_cmd(struct scsi_cmnd *scmd, struct list_head *done_q); extern void scsi_eh_flush_done_q(struct list_head *done_q); _ Patches currently in -mm which might be from htejun@xxxxxxxxx are git-libata-all.patch libata-reduce-timeouts.patch libata-debug.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html