From: Stefan Richter The scsi_host_template's eh_abort_handler and eh_device_reset_handler are allowed to sleep. Use this to run sbp2_agent_reset in the more reliable mode which returns _after_ its write transaction was finished. Signed-off-by: Stefan Richter Cc: Jody McIntyre Cc: Ben Collins Signed-off-by: Andrew Morton --- drivers/ieee1394/sbp2.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff -puN drivers/ieee1394/sbp2.c~ieee1394-sbp2-safer-agent-reset-in-error-handlers drivers/ieee1394/sbp2.c --- a/drivers/ieee1394/sbp2.c~ieee1394-sbp2-safer-agent-reset-in-error-handlers +++ a/drivers/ieee1394/sbp2.c @@ -2588,7 +2588,7 @@ static int sbp2scsi_abort(struct scsi_cm /* * Initiate a fetch agent reset. */ - sbp2_agent_reset(scsi_id, 0); + sbp2_agent_reset(scsi_id, 1); sbp2scsi_complete_all_commands(scsi_id, DID_BUS_BUSY); } @@ -2607,7 +2607,7 @@ static int sbp2scsi_reset(struct scsi_cm if (sbp2util_node_is_available(scsi_id)) { SBP2_ERR("Generating sbp2 fetch agent reset"); - sbp2_agent_reset(scsi_id, 0); + sbp2_agent_reset(scsi_id, 1); } return SUCCESS; _