Lines Matching defs:ha
13 int sas_queue_work(struct sas_ha_struct *ha, struct sas_work *sw)
18 if (!test_bit(SAS_HA_REGISTERED, &ha->state))
21 if (test_bit(SAS_HA_DRAINING, &ha->state)) {
24 list_add_tail(&sw->drain_node, &ha->defer_q);
26 rc = queue_work(ha->event_q, &sw->work);
32 struct sas_ha_struct *ha)
37 spin_lock_irqsave(&ha->lock, flags);
38 rc = sas_queue_work(ha, work);
39 spin_unlock_irqrestore(&ha->lock, flags);
45 void __sas_drain_work(struct sas_ha_struct *ha)
50 set_bit(SAS_HA_DRAINING, &ha->state);
52 spin_lock_irq(&ha->lock);
53 spin_unlock_irq(&ha->lock);
55 drain_workqueue(ha->event_q);
56 drain_workqueue(ha->disco_q);
58 spin_lock_irq(&ha->lock);
59 clear_bit(SAS_HA_DRAINING, &ha->state);
60 list_for_each_entry_safe(sw, _sw, &ha->defer_q, drain_node) {
62 ret = sas_queue_work(ha, sw);
67 spin_unlock_irq(&ha->lock);
70 int sas_drain_work(struct sas_ha_struct *ha)
74 err = mutex_lock_interruptible(&ha->drain_mutex);
77 if (test_bit(SAS_HA_REGISTERED, &ha->state))
78 __sas_drain_work(ha);
79 mutex_unlock(&ha->drain_mutex);
85 void sas_disable_revalidation(struct sas_ha_struct *ha)
87 mutex_lock(&ha->disco_mutex);
88 set_bit(SAS_HA_ATA_EH_ACTIVE, &ha->state);
89 mutex_unlock(&ha->disco_mutex);
92 void sas_enable_revalidation(struct sas_ha_struct *ha)
96 mutex_lock(&ha->disco_mutex);
97 clear_bit(SAS_HA_ATA_EH_ACTIVE, &ha->state);
98 for (i = 0; i < ha->num_phys; i++) {
99 struct asd_sas_port *port = ha->sas_port[i];
114 mutex_unlock(&ha->disco_mutex);
138 struct sas_ha_struct *ha = phy->ha;
145 ret = sas_queue_event(event, &ev->work, ha);
181 struct sas_ha_struct *ha = phy->ha;
188 ret = sas_queue_event(event, &ev->work, ha);