Skip to contentSkip to conversation

mtip32xx: fix for driver hang after a command timeout

PATCH In review Asai Thambi S P 1 participant 1 message Jan 11, 2013 Block layer

lore
Share & tools
lore
#0 lore raw

PATCH 2/3 mtip32xx: fix for driver hang after a command timeout

If an I/O command times out when a PIO command is active, MTIP_PF_EH_ACTIVE_BIT is not cleared. This results in I/O hang in the driver. Fix is to clear this bit.

---
 drivers/block/mtip32xx/mtip32xx.c |    9 +++++----
 1 files changed, 5 insertions(+), 4 deletions(-)
drivers/block/mtip32xx/mtip32xx.c +5 -4
index b7e6631..a070a68 100644
@@ -625,12 +625,13 @@ static void mtip_timeout_function(unsigned long int data)
 		}
 	}
 
-	if (cmdto_cnt && !test_bit(MTIP_PF_IC_ACTIVE_BIT, &port->flags)) {
+	if (cmdto_cnt) {
 		print_tags(port->dd, "timed out", tagaccum, cmdto_cnt);
-
-		mtip_restart_port(port);
+		if (!test_bit(MTIP_PF_IC_ACTIVE_BIT, &port->flags)) {
+			mtip_restart_port(port);
+			wake_up_interruptible(&port->svc_wait);
+		}
 		clear_bit(MTIP_PF_EH_ACTIVE_BIT, &port->flags);
-		wake_up_interruptible(&port->svc_wait);
 	}
 
 	if (port->ic_pause_timer) {
Signature · 1 line
1.7.1