isci: audit usage of BUG_ON macro in isci driver
Bartosz Barcinski [Wed, 13 Apr 2011 00:28:43 +0000 (17:28 -0700)]
Removes unnecessary usage of BUG_ON macro, excluding core directory.
In some cases macro is unnecesary, check is done in caller function.
In other cases macro is replaced by if construction with
appropriate warning.

Signed-off-by: Maciej Patelczyk <maciej.patelczyk@intel.com>
[changed some survivable bug conditions to WARN_ONCE]
Signed-off-by: Dan Williams <dan.j.williams@intel.com>

drivers/scsi/isci/core/scic_sds_request.c
drivers/scsi/isci/init.c
drivers/scsi/isci/port.c
drivers/scsi/isci/remote_device.c
drivers/scsi/isci/request.c
drivers/scsi/isci/request.h
drivers/scsi/isci/task.c

index 64aa9c6..a6ee155 100644 (file)
@@ -1635,7 +1635,6 @@ static void scic_sds_request_completed_state_enter(
        struct isci_host *ihost = sci_object_get_association(scic);
        struct isci_request *ireq = sci_object_get_association(sci_req);
 
-
        SET_STATE_HANDLER(sci_req,
                          scic_sds_request_state_handler_table,
                          SCI_BASE_REQUEST_STATE_COMPLETED);
index 5e63ae6..5da9a69 100644 (file)
@@ -362,8 +362,6 @@ static int isci_setup_interrupts(struct pci_dev *pdev)
                else
                        isr = isci_msix_isr;
 
-               BUG_ON(!isci_host);
-
                err = devm_request_irq(&pdev->dev, msix->vector, isr, 0,
                                       DRV_NAME"-msix", isci_host);
                if (!err)
@@ -379,13 +377,11 @@ static int isci_setup_interrupts(struct pci_dev *pdev)
                pci_disable_msix(pdev);
                goto intx;
        }
-
        return 0;
 
  intx:
        err = devm_request_irq(&pdev->dev, pdev->irq, isci_intx_isr,
                               IRQF_SHARED, DRV_NAME"-intx", pdev);
-
        return err;
 }
 
index b675a94..cf78cf0 100644 (file)
@@ -178,6 +178,7 @@ void isci_port_link_up(
        unsigned long success = true;
 
        BUG_ON(isci_phy->isci_port != NULL);
+
        isci_phy->isci_port = isci_port;
 
        dev_dbg(&isci_host->pdev->dev,
index 320850c..9301e25 100644 (file)
@@ -202,8 +202,6 @@ static enum sci_status isci_remote_device_construct(
 
        sci_object_set_association(to_sci_dev(isci_device), isci_device);
 
-       BUG_ON(port->isci_host == NULL);
-
        /* start the device. */
        status = scic_remote_device_start(to_sci_dev(isci_device),
                                          ISCI_REMOTE_DEVICE_START_TIMEOUT);
@@ -257,8 +255,12 @@ isci_remote_device_alloc(struct isci_host *ihost, struct isci_port *iport)
                return NULL;
        }
 
-       BUG_ON(!list_empty(&idev->reqs_in_process));
-       BUG_ON(!list_empty(&idev->node));
+       if (WARN_ONCE(!list_empty(&idev->reqs_in_process), "found requests in process\n"))
+               return NULL;
+
+       if (WARN_ONCE(!list_empty(&idev->node), "found non-idle remote device\n"))
+               return NULL;
+
        isci_remote_device_change_state(idev, isci_freed);
 
        return idev;
index 37ffedc..a90c299 100644 (file)
@@ -472,7 +472,6 @@ int isci_request_execute(
 
  out:
        if (status != SCI_SUCCESS) {
-
                /* release dma memory on failure. */
                isci_request_free(isci_host, request);
                request = NULL;
index 0c08da6..642b211 100644 (file)
@@ -193,8 +193,6 @@ static inline enum isci_request_status isci_request_change_started_to_newstate(
        enum isci_request_status old_state;
        unsigned long flags;
 
-       BUG_ON(isci_request == NULL);
-
        spin_lock_irqsave(&isci_request->state_lock, flags);
 
        old_state = isci_request->status;
@@ -243,7 +241,8 @@ static inline void isci_request_free(
        struct isci_host *isci_host,
        struct isci_request *isci_request)
 {
-       BUG_ON(isci_request == NULL);
+       if (!isci_request)
+               return;
 
        /* release the dma memory if we fail. */
        dma_pool_free(isci_host->dma_pool, isci_request,
index b88101e..c79968d 100644 (file)
@@ -272,7 +272,7 @@ static enum sci_status isci_task_request_build(
 {
        struct scic_sds_remote_device *sci_device;
        enum sci_status status = SCI_FAILURE;
-       struct isci_request *request;
+       struct isci_request *request = NULL;
        struct isci_remote_device *isci_device;
 /*     struct sci_sas_identify_address_frame_protocols dev_protocols; */
        struct smp_discover_response_protocols dev_protocols;
@@ -372,8 +372,6 @@ static void isci_tmf_timeout_cb(void *tmf_request_arg)
        struct isci_tmf *tmf = isci_request_access_tmf(request);
        enum sci_status status;
 
-       BUG_ON(request->ttype != tmf_task);
-
        /* This task management request has timed-out.  Terminate the request
         * so that the request eventually completes to the requestor in the
         * request completion callback path.
@@ -1121,8 +1119,11 @@ static void isci_abort_task_process_cb(
                 * request state was already set to "aborted" by the abort
                 * task function.
                 */
-               BUG_ON((old_request->status != aborted)
-                       && (old_request->status != completed));
+               if ((old_request->status != aborted)
+                       && (old_request->status != completed))
+                       dev_err(&old_request->isci_host->pdev->dev,
+                               "%s: Bad request status (%d): tmf=%p, old_request=%p\n",
+                               __func__, old_request->status, tmf, old_request);
                break;
 
        case isci_tmf_timed_out: