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:
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-stable-9
To unsubscribe, send any mail to "[email protected]"

Reply via email to