From: Hans-Joachim Picht <hpicht@redhat.com> Date: Tue, 20 May 2008 13:48:49 +0200 Subject: [s390] zfcp: deadlock in slave_destroy handler Message-id: 20080520114849.GH16866@redhat.com O-Subject: [RHEL5 U3 PATCH 3/4] s390 - zfcp: Deadlock in slave_destroy handler. Bugzilla: 447329 RH-Acked-by: Pete Zaitcev <zaitcev@redhat.com> Description ============ Adding or removing of zfcp units is not possible after the zfcp channel path was offline for exactly 60 seconds. When the channel path is offline, the Fibre Channel remote ports are removed after a 60 seconds timeout. When this removal happens in parallel to the channel path going online again, the slave_destroy handler can deadlock with the erp thread. The problem is fixed removing the zfcp_erp_wait call from the slave_destroy handler. Bugzilla ========= BZ 447329 https://bugzilla.redhat.com/show_bug.cgi?id=447329 Upstream status of the patch: ============================= The patch is included in linux-2.6 as git commit id 6071d7ec36054e78f02f7d5a66c3784aeb65ce92 Test status: ============ The patch has been tested and fixes the problem. The fix was verified by the IBM test team. Please ACK. With best regards, Hans diff --git a/drivers/s390/scsi/zfcp_scsi.c b/drivers/s390/scsi/zfcp_scsi.c index d97cb3e..050f7c8 100644 --- a/drivers/s390/scsi/zfcp_scsi.c +++ b/drivers/s390/scsi/zfcp_scsi.c @@ -181,7 +181,6 @@ static void zfcp_scsi_slave_destroy(struct scsi_device *sdpnt) struct zfcp_unit *unit = (struct zfcp_unit *) sdpnt->hostdata; if (unit) { - zfcp_erp_wait(unit->port->adapter); atomic_clear_mask(ZFCP_STATUS_UNIT_REGISTERED, &unit->status); sdpnt->hostdata = NULL; unit->device = NULL;