[SCSI] qla4xxx: set driver ddb state correctly in process_ddb_changed
authorVikas Chaudhary <vikas.chaudhary@qlogic.com>
Sat, 10 Jul 2010 09:18:36 +0000 (14:48 +0530)
committerJames Bottomley <James.Bottomley@suse.de>
Tue, 27 Jul 2010 17:04:32 +0000 (12:04 -0500)
If fw ddb state is ACTIVE mark driver ddb stat as ONLINE and
unblock iscsi session.

Signed-off-by: Vikas Chaudhary <vikas.chaudhary@qlogic.com>
Signed-off-by: Ravi Anand <ravi.anand@qlogic.com>
Reviewed-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
drivers/scsi/qla4xxx/ql4_init.c

index 5510df8a7fa6b26c61c38ce690f8e48bcb6ba488..8947743e54d733292a71de9e6ce97386d8bfb833 100644 (file)
@@ -1487,7 +1487,10 @@ int qla4xxx_process_ddb_changed(struct scsi_qla_host *ha, uint32_t fw_ddb_index,
                      ddb_entry->fw_ddb_device_state, state, fw_ddb_index));
        if (old_fw_ddb_device_state == state &&
            state == DDB_DS_SESSION_ACTIVE) {
-               /* Do nothing, state not changed. */
+               if (atomic_read(&ddb_entry->state) != DDB_STATE_ONLINE) {
+                       atomic_set(&ddb_entry->state, DDB_STATE_ONLINE);
+                       iscsi_unblock_session(ddb_entry->sess);
+               }
                return QLA_SUCCESS;
        }