mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
scsi: libsas: Move SMP task handlers to core
Move the SMP task handlers to the core host code as they will be re-used for executing internal abort and TMF tasks. Link: https://lore.kernel.org/r/1645112566-115804-7-git-send-email-john.garry@huawei.com Tested-by: Yihang Li <liyihang6@hisilicon.com> Tested-by: Damien Le Moal <damien.lemoal@opensource.wdc.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: John Garry <john.garry@huawei.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
committed by
Martin K. Petersen
parent
da19eaba6e
commit
4aef43b25d
@@ -28,26 +28,6 @@ static int sas_disable_routing(struct domain_device *dev, u8 *sas_addr);
|
||||
|
||||
/* ---------- SMP task management ---------- */
|
||||
|
||||
static void smp_task_timedout(struct timer_list *t)
|
||||
{
|
||||
struct sas_task_slow *slow = from_timer(slow, t, timer);
|
||||
struct sas_task *task = slow->task;
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&task->task_state_lock, flags);
|
||||
if (!(task->task_state_flags & SAS_TASK_STATE_DONE)) {
|
||||
task->task_state_flags |= SAS_TASK_STATE_ABORTED;
|
||||
complete(&task->slow_task->completion);
|
||||
}
|
||||
spin_unlock_irqrestore(&task->task_state_lock, flags);
|
||||
}
|
||||
|
||||
static void smp_task_done(struct sas_task *task)
|
||||
{
|
||||
del_timer(&task->slow_task->timer);
|
||||
complete(&task->slow_task->completion);
|
||||
}
|
||||
|
||||
/* Give it some long enough timeout. In seconds. */
|
||||
#define SMP_TIMEOUT 10
|
||||
|
||||
@@ -78,9 +58,9 @@ static int smp_execute_task_sg(struct domain_device *dev,
|
||||
task->smp_task.smp_req = *req;
|
||||
task->smp_task.smp_resp = *resp;
|
||||
|
||||
task->task_done = smp_task_done;
|
||||
task->task_done = sas_task_internal_done;
|
||||
|
||||
task->slow_task->timer.function = smp_task_timedout;
|
||||
task->slow_task->timer.function = sas_task_internal_timedout;
|
||||
task->slow_task->timer.expires = jiffies + SMP_TIMEOUT*HZ;
|
||||
add_timer(&task->slow_task->timer);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user