[SCSI] qla4xxx: Fix un-necessary delay on invalid DDB
authorLalit Chandivade <lalit.chandivade@qlogic.com>
Mon, 13 Feb 2012 13:00:41 +0000 (18:30 +0530)
committerJames Bottomley <JBottomley@Parallels.com>
Sun, 19 Feb 2012 15:31:18 +0000 (09:31 -0600)
Fix the un-necessary wait for completion of a sendtarget on an
invalid DDB entry. The state of an invalid DDB entry is 0 (unassigned)

This will also avoid the delays during system boot.

Signed-off-by: Lalit Chandivade <lalit.chandivade@qlogic.com>
Signed-off-by: Vikas Chaudhary <vikas.chaudhary@qlogic.com>
Reviewed-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/scsi/qla4xxx/ql4_mbx.c
drivers/scsi/qla4xxx/ql4_os.c

index e1e66a4..eaf2185 100644 (file)
@@ -661,6 +661,8 @@ int qla4xxx_get_fwddb_entry(struct scsi_qla_host *ha,
        }
        memset(&mbox_cmd, 0, sizeof(mbox_cmd));
        memset(&mbox_sts, 0, sizeof(mbox_sts));
+       if (fw_ddb_entry)
+               memset(fw_ddb_entry, 0, sizeof(struct dev_db_entry));
 
        mbox_cmd[0] = MBOX_CMD_GET_DATABASE_ENTRY;
        mbox_cmd[1] = (uint32_t) fw_ddb_index;
index c1189e5..089443a 100644 (file)
@@ -4090,6 +4090,10 @@ static void qla4xxx_build_st_list(struct scsi_qla_host *ha,
                if (ret == QLA_ERROR)
                        break;
 
+               /* Ignore DDB if invalid state (unassigned) */
+               if (state == DDB_DS_UNASSIGNED)
+                       goto continue_next_st;
+
                /* Check if ST, add to the list_st */
                if (strlen((char *) fw_ddb_entry->iscsi_name) != 0)
                        goto continue_next_st;