[SCSI] qla4xxx: Remove AF_DPC_SCHEDULED flag from ha.
Since queue_work does not requeue, there is no need to check if a work is in progress using the AF_DPC_SCHEDULED flag. queue_work would return if work is pending without adding the work, do_dpc would again get invoked from qla4xxx_timer if there is still DPC flags set. 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>
This commit is contained in:
parent
977f46a4bb
commit
1b46807e0b
@ -368,7 +368,6 @@ struct scsi_qla_host {
|
|||||||
#define AF_INIT_DONE 1 /* 0x00000002 */
|
#define AF_INIT_DONE 1 /* 0x00000002 */
|
||||||
#define AF_MBOX_COMMAND 2 /* 0x00000004 */
|
#define AF_MBOX_COMMAND 2 /* 0x00000004 */
|
||||||
#define AF_MBOX_COMMAND_DONE 3 /* 0x00000008 */
|
#define AF_MBOX_COMMAND_DONE 3 /* 0x00000008 */
|
||||||
#define AF_DPC_SCHEDULED 5 /* 0x00000020 */
|
|
||||||
#define AF_INTERRUPTS_ON 6 /* 0x00000040 */
|
#define AF_INTERRUPTS_ON 6 /* 0x00000040 */
|
||||||
#define AF_GET_CRASH_RECORD 7 /* 0x00000080 */
|
#define AF_GET_CRASH_RECORD 7 /* 0x00000080 */
|
||||||
#define AF_LINK_UP 8 /* 0x00000100 */
|
#define AF_LINK_UP 8 /* 0x00000100 */
|
||||||
|
@ -859,7 +859,7 @@ static void qla4xxx_timer(struct scsi_qla_host *ha)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Wakeup the dpc routine for this adapter, if needed. */
|
/* Wakeup the dpc routine for this adapter, if needed. */
|
||||||
if ((start_dpc ||
|
if (start_dpc ||
|
||||||
test_bit(DPC_RESET_HA, &ha->dpc_flags) ||
|
test_bit(DPC_RESET_HA, &ha->dpc_flags) ||
|
||||||
test_bit(DPC_RETRY_RESET_HA, &ha->dpc_flags) ||
|
test_bit(DPC_RETRY_RESET_HA, &ha->dpc_flags) ||
|
||||||
test_bit(DPC_RELOGIN_DEVICE, &ha->dpc_flags) ||
|
test_bit(DPC_RELOGIN_DEVICE, &ha->dpc_flags) ||
|
||||||
@ -869,9 +869,7 @@ static void qla4xxx_timer(struct scsi_qla_host *ha)
|
|||||||
test_bit(DPC_LINK_CHANGED, &ha->dpc_flags) ||
|
test_bit(DPC_LINK_CHANGED, &ha->dpc_flags) ||
|
||||||
test_bit(DPC_HA_UNRECOVERABLE, &ha->dpc_flags) ||
|
test_bit(DPC_HA_UNRECOVERABLE, &ha->dpc_flags) ||
|
||||||
test_bit(DPC_HA_NEED_QUIESCENT, &ha->dpc_flags) ||
|
test_bit(DPC_HA_NEED_QUIESCENT, &ha->dpc_flags) ||
|
||||||
test_bit(DPC_AEN, &ha->dpc_flags)) &&
|
test_bit(DPC_AEN, &ha->dpc_flags)) {
|
||||||
!test_bit(AF_DPC_SCHEDULED, &ha->flags) &&
|
|
||||||
ha->dpc_thread) {
|
|
||||||
DEBUG2(printk("scsi%ld: %s: scheduling dpc routine"
|
DEBUG2(printk("scsi%ld: %s: scheduling dpc routine"
|
||||||
" - dpc flags = 0x%lx\n",
|
" - dpc flags = 0x%lx\n",
|
||||||
ha->host_no, __func__, ha->dpc_flags));
|
ha->host_no, __func__, ha->dpc_flags));
|
||||||
@ -1261,12 +1259,9 @@ static void qla4xxx_relogin_all_devices(struct scsi_qla_host *ha)
|
|||||||
|
|
||||||
void qla4xxx_wake_dpc(struct scsi_qla_host *ha)
|
void qla4xxx_wake_dpc(struct scsi_qla_host *ha)
|
||||||
{
|
{
|
||||||
if (ha->dpc_thread &&
|
if (ha->dpc_thread)
|
||||||
!test_bit(AF_DPC_SCHEDULED, &ha->flags)) {
|
|
||||||
set_bit(AF_DPC_SCHEDULED, &ha->flags);
|
|
||||||
queue_work(ha->dpc_thread, &ha->dpc_work);
|
queue_work(ha->dpc_thread, &ha->dpc_work);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* qla4xxx_do_dpc - dpc routine
|
* qla4xxx_do_dpc - dpc routine
|
||||||
@ -1292,12 +1287,12 @@ static void qla4xxx_do_dpc(struct work_struct *work)
|
|||||||
|
|
||||||
/* Initialization not yet finished. Don't do anything yet. */
|
/* Initialization not yet finished. Don't do anything yet. */
|
||||||
if (!test_bit(AF_INIT_DONE, &ha->flags))
|
if (!test_bit(AF_INIT_DONE, &ha->flags))
|
||||||
goto do_dpc_exit;
|
return;
|
||||||
|
|
||||||
if (test_bit(AF_EEH_BUSY, &ha->flags)) {
|
if (test_bit(AF_EEH_BUSY, &ha->flags)) {
|
||||||
DEBUG2(printk(KERN_INFO "scsi%ld: %s: flags = %lx\n",
|
DEBUG2(printk(KERN_INFO "scsi%ld: %s: flags = %lx\n",
|
||||||
ha->host_no, __func__, ha->flags));
|
ha->host_no, __func__, ha->flags));
|
||||||
goto do_dpc_exit;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_qla8022(ha)) {
|
if (is_qla8022(ha)) {
|
||||||
@ -1404,8 +1399,6 @@ dpc_post_reset_ha:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
do_dpc_exit:
|
|
||||||
clear_bit(AF_DPC_SCHEDULED, &ha->flags);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user