linux-scsi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] p00001_scsi_tcq_queue_lock
@ 2004-08-03 17:49 Brian King
  2004-08-07  4:09 ` James Bottomley
  0 siblings, 1 reply; 5+ messages in thread
From: Brian King @ 2004-08-03 17:49 UTC (permalink / raw)
  To: james Bottomley; +Cc: SCSI Mailing List

[-- Attachment #1: Type: text/plain, Size: 64 bytes --]


-- 
Brian King
eServer Storage I/O
IBM Linux Technology Center

[-- Attachment #2: p00001_scsi_tcq_queue_lock.patch --]
[-- Type: text/plain, Size: 1474 bytes --]


Add locking to scsi_activate_tcq and scsi_deactivate_tcq to fix a race
condition that can occur when disabling tcqing with commands in flight.

Signed-off-by: Brian King <brking@us.ibm.com>
---

 linux-2.6.8-rc2-bjking1/include/scsi/scsi_tcq.h |    8 ++++++++
 1 files changed, 8 insertions(+)

diff -puN include/scsi/scsi_tcq.h~scsi_tcq_queue_lock include/scsi/scsi_tcq.h
--- linux-2.6.8-rc2/include/scsi/scsi_tcq.h~scsi_tcq_queue_lock	2004-08-03 11:05:28.000000000 -0500
+++ linux-2.6.8-rc2-bjking1/include/scsi/scsi_tcq.h	2004-08-03 11:12:19.000000000 -0500
@@ -25,9 +25,13 @@
  **/
 static inline void scsi_activate_tcq(struct scsi_device *sdev, int depth)
 {
+	unsigned long flags;
+
         if (sdev->tagged_supported) {
+		spin_lock_irqsave(sdev->request_queue->queue_lock, flags);
 		if (!blk_queue_tagged(sdev->request_queue))
 			blk_queue_init_tags(sdev->request_queue, depth, NULL);
+		spin_unlock_irqrestore(sdev->request_queue->queue_lock, flags);
 		scsi_adjust_queue_depth(sdev, MSG_ORDERED_TAG, depth);
         }
 }
@@ -38,8 +42,12 @@ static inline void scsi_activate_tcq(str
  **/
 static inline void scsi_deactivate_tcq(struct scsi_device *sdev, int depth)
 {
+	unsigned long flags;
+
+	spin_lock_irqsave(sdev->request_queue->queue_lock, flags);
 	if (blk_queue_tagged(sdev->request_queue))
 		blk_queue_free_tags(sdev->request_queue);
+	spin_unlock_irqrestore(sdev->request_queue->queue_lock, flags);
 	scsi_adjust_queue_depth(sdev, 0, depth);
 }
 
_

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2004-09-17 17:55 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-08-03 17:49 [PATCH] p00001_scsi_tcq_queue_lock Brian King
2004-08-07  4:09 ` James Bottomley
2004-08-09 14:04   ` Brian King
2004-08-09 14:14     ` Brian King
2004-09-17 17:55     ` Brian King

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).