Browse Source

[SCSI] qla2xxx: Fix for a multiqueue bug in CPU affinity mode

Hold the hardware lock while do the response completion in work queue threads as
it involves sharing a common request queue among multiple threads.

Signed-off-by: Anirban Chakraborty <anirban.chakraborty@qlogic.com>
Signed-off-by: Giridhar Malavali <giridhar.malavali@qlogic.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Anirban Chakraborty 15 years ago
parent
commit
5c66f5d193
1 changed files with 2 additions and 0 deletions
  1. 2 0
      drivers/scsi/qla2xxx/qla_mid.c

+ 2 - 0
drivers/scsi/qla2xxx/qla_mid.c

@@ -639,8 +639,10 @@ static void qla_do_work(struct work_struct *work)
 	struct rsp_que *rsp = container_of(work, struct rsp_que, q_work);
 	struct rsp_que *rsp = container_of(work, struct rsp_que, q_work);
 	struct scsi_qla_host *vha;
 	struct scsi_qla_host *vha;
 
 
+	spin_lock_irq(&rsp->hw->hardware_lock);
 	vha = qla25xx_get_host(rsp);
 	vha = qla25xx_get_host(rsp);
 	qla24xx_process_response_queue(vha, rsp);
 	qla24xx_process_response_queue(vha, rsp);
+	spin_unlock_irq(&rsp->hw->hardware_lock);
 }
 }
 
 
 /* create response queue */
 /* create response queue */