svn commit: r252554 - stable/9/sys/dev/mfi

Steven Hartland smh at FreeBSD.org
Wed Jul 3 08:39:19 UTC 2013


Author: smh
Date: Wed Jul  3 08:39:18 2013
New Revision: 252554
URL: http://svnweb.freebsd.org/changeset/base/252554

Log:
  MFC r252471:
  Remove forced timeout of in-flight commands from mfi_timeout.
  
  While this prevents commands getting stuck forever there is no way to guarantee
  that data from the command hasn't been committed to the device.
  
  In addition older mfi firmware has a bug that would cause the controller to
  frequently stall IO for over our timeout value, which when combined with
  a forced timeout often resulted in panics in UFS; which would otherwise be
  avoided when the command eventually completed if left alone.
  
  For reference this timeout issue is resolved in Dell FW package 21.2.1-0000.
  Fixed FW package version for none Dell controller will likely vary.

Modified:
  stable/9/sys/dev/mfi/mfi.c
Directory Properties:
  stable/9/sys/   (props changed)
  stable/9/sys/dev/   (props changed)

Modified: stable/9/sys/dev/mfi/mfi.c
==============================================================================
--- stable/9/sys/dev/mfi/mfi.c	Wed Jul  3 08:35:14 2013	(r252553)
+++ stable/9/sys/dev/mfi/mfi.c	Wed Jul  3 08:39:18 2013	(r252554)
@@ -3768,12 +3768,15 @@ mfi_timeout(void *data)
 				MFI_PRINT_CMD(cm);
 				MFI_VALIDATE_CMD(sc, cm);
 				/*
-				 * Fail the command instead of leaving it on
-				 * the queue where it could remain stuck forever
+				 * While commands can get stuck forever we do
+				 * not fail them as there is no way to tell if
+				 * the controller has actually processed them
+				 * or not.
+				 *
+				 * In addition its very likely that force
+				 * failing a command here would cause a panic
+				 * e.g. in UFS.
 				 */
-				mfi_remove_busy(cm);
-				cm->cm_error = ETIMEDOUT;
-				mfi_complete(sc, cm);
 				timedout++;
 			}
 		}


More information about the svn-src-stable-9 mailing list