svn commit: r257593 - stable/9/sys/dev/isci

Jim Harris jimharris at FreeBSD.org
Sun Nov 3 21:12:02 UTC 2013


Author: jimharris
Date: Sun Nov  3 21:12:01 2013
New Revision: 257593
URL: http://svnweb.freebsd.org/changeset/base/257593

Log:
  MFC r256231:
  
  Improve logging around some of the isci(4) reset and recovery paths.
  
  Sponsored by:	Intel

Modified:
  stable/9/sys/dev/isci/isci_io_request.c
  stable/9/sys/dev/isci/isci_sysctl.c
  stable/9/sys/dev/isci/isci_task_request.c
Directory Properties:
  stable/9/sys/   (props changed)
  stable/9/sys/dev/   (props changed)

Modified: stable/9/sys/dev/isci/isci_io_request.c
==============================================================================
--- stable/9/sys/dev/isci/isci_io_request.c	Sun Nov  3 21:05:44 2013	(r257592)
+++ stable/9/sys/dev/isci/isci_io_request.c	Sun Nov  3 21:12:01 2013	(r257593)
@@ -153,11 +153,16 @@ isci_io_request_complete(SCI_CONTROLLER_
 
 	case SCI_IO_FAILURE_REMOTE_DEVICE_RESET_REQUIRED:
 		isci_remote_device_reset(isci_remote_device, NULL);
+		ccb->ccb_h.status |= CAM_REQ_TERMIO;
+		isci_log_message(0, "ISCI",
+		    "isci: bus=%x target=%x lun=%x cdb[0]=%x remote device reset required\n",
+		    ccb->ccb_h.path_id, ccb->ccb_h.target_id,
+		    ccb->ccb_h.target_lun, ccb->csio.cdb_io.cdb_bytes[0]);
+		break;
 
-		/* drop through */
 	case SCI_IO_FAILURE_TERMINATED:
 		ccb->ccb_h.status |= CAM_REQ_TERMIO;
-		isci_log_message(1, "ISCI",
+		isci_log_message(0, "ISCI",
 		    "isci: bus=%x target=%x lun=%x cdb[0]=%x terminated\n",
 		    ccb->ccb_h.path_id, ccb->ccb_h.target_id,
 		    ccb->ccb_h.target_lun, ccb->csio.cdb_io.cdb_bytes[0]);

Modified: stable/9/sys/dev/isci/isci_sysctl.c
==============================================================================
--- stable/9/sys/dev/isci/isci_sysctl.c	Sun Nov  3 21:05:44 2013	(r257592)
+++ stable/9/sys/dev/isci/isci_sysctl.c	Sun Nov  3 21:12:01 2013	(r257593)
@@ -193,6 +193,35 @@ isci_sysctl_start_phy(SYSCTL_HANDLER_ARG
 	return 0;
 }
 
+static int
+isci_sysctl_log_frozen_lun_masks(SYSCTL_HANDLER_ARGS)
+{
+	struct isci_softc	*isci = (struct isci_softc *)arg1;
+	struct ISCI_REMOTE_DEVICE *device;
+	int32_t			log_frozen_devices = 0;
+	int			error, i, j;
+
+	error = sysctl_handle_int(oidp, &log_frozen_devices, 0, req);
+
+	if (error || log_frozen_devices == 0)
+		return (error);
+
+	for (i = 0; i < isci->controller_count; i++) {
+		for (j = 0; j < SCI_MAX_REMOTE_DEVICES; j++) {
+			device = isci->controllers[i].remote_device[j];
+
+			if (device == NULL)
+				continue;
+
+			device_printf(isci->device,
+			    "controller %d device %3d frozen_lun_mask 0x%02x\n",
+			    i, j, device->frozen_lun_mask);
+		}
+	}
+
+	return (0);
+}
+
 void isci_sysctl_initialize(struct isci_softc *isci)
 {
 	struct sysctl_ctx_list *sysctl_ctx = device_get_sysctl_ctx(isci->device);
@@ -225,5 +254,10 @@ void isci_sysctl_initialize(struct isci_
 	SYSCTL_ADD_PROC(sysctl_ctx, SYSCTL_CHILDREN(sysctl_tree), OID_AUTO,
 	    "start_phy", CTLTYPE_UINT| CTLFLAG_RW, isci, 0,
 	    isci_sysctl_start_phy, "IU", "Start PHY on a controller");
+
+	SYSCTL_ADD_PROC(sysctl_ctx, SYSCTL_CHILDREN(sysctl_tree), OID_AUTO,
+	    "log_frozen_lun_masks", CTLTYPE_UINT| CTLFLAG_RW, isci, 0,
+	    isci_sysctl_log_frozen_lun_masks, "IU",
+	    "Log frozen lun masks to kernel log");
 }
 

Modified: stable/9/sys/dev/isci/isci_task_request.c
==============================================================================
--- stable/9/sys/dev/isci/isci_task_request.c	Sun Nov  3 21:05:44 2013	(r257592)
+++ stable/9/sys/dev/isci/isci_task_request.c	Sun Nov  3 21:12:01 2013	(r257593)
@@ -194,11 +194,20 @@ isci_task_request_complete(SCI_CONTROLLE
 		break;
 
 	case SCI_TASK_FAILURE_INVALID_STATE:
+		retry_task = TRUE;
+		isci_log_message(0, "ISCI",
+		    "task failure (invalid state) - retrying\n");
+		break;
+
 	case SCI_TASK_FAILURE_INSUFFICIENT_RESOURCES:
-	case SCI_FAILURE_TIMEOUT:
 		retry_task = TRUE;
 		isci_log_message(0, "ISCI",
-		    "unhandled task completion code 0x%x\n", completion_status);
+		    "task failure (insufficient resources) - retrying\n");
+		break;
+
+	case SCI_FAILURE_TIMEOUT:
+		retry_task = TRUE;
+		isci_log_message(0, "ISCI", "task timeout - retrying\n");
 		break;
 
 	case SCI_TASK_FAILURE:


More information about the svn-src-all mailing list