diff options
Diffstat (limited to 'releases/2.6.38.8/qla2xxx-fix-vport-delete-hang-when-logins-are-outstanding.patch')
-rw-r--r-- | releases/2.6.38.8/qla2xxx-fix-vport-delete-hang-when-logins-are-outstanding.patch | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/releases/2.6.38.8/qla2xxx-fix-vport-delete-hang-when-logins-are-outstanding.patch b/releases/2.6.38.8/qla2xxx-fix-vport-delete-hang-when-logins-are-outstanding.patch new file mode 100644 index 0000000000..753c19d42a --- /dev/null +++ b/releases/2.6.38.8/qla2xxx-fix-vport-delete-hang-when-logins-are-outstanding.patch @@ -0,0 +1,41 @@ +From 9f40682e2857a3c2ddb80a87b185af3c6a708346 Mon Sep 17 00:00:00 2001 +From: Arun Easi <arun.easi@qlogic.com> +Date: Tue, 10 May 2011 11:18:17 -0700 +Subject: [SCSI] qla2xxx: Fix vport delete hang when logins are outstanding. + +From: Arun Easi <arun.easi@qlogic.com> + +commit 9f40682e2857a3c2ddb80a87b185af3c6a708346 upstream. + +Timer is required to flush out entries that may be present in work queues. + +Signed-off-by: Arun Easi <arun.easi@qlogic.com> +Signed-off-by: Madhuranath Iyengar <Madhu.Iyengar@qlogic.com> +Signed-off-by: James Bottomley <jbottomley@parallels.com> +Signed-off-by: James Bottomley <James.Bottomley@suse.de> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/scsi/qla2xxx/qla_attr.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +--- a/drivers/scsi/qla2xxx/qla_attr.c ++++ b/drivers/scsi/qla2xxx/qla_attr.c +@@ -1877,14 +1877,15 @@ qla24xx_vport_delete(struct fc_vport *fc + + scsi_remove_host(vha->host); + ++ /* Allow timer to run to drain queued items, when removing vp */ ++ qla24xx_deallocate_vp_id(vha); ++ + if (vha->timer_active) { + qla2x00_vp_stop_timer(vha); + DEBUG15(printk(KERN_INFO "scsi(%ld): timer for the vport[%d]" + " = %p has stopped\n", vha->host_no, vha->vp_idx, vha)); + } + +- qla24xx_deallocate_vp_id(vha); +- + /* No pending activities shall be there on the vha now */ + DEBUG(msleep(random32()%10)); /* Just to see if something falls on + * the net we have placed below */ |