On 28/09/2022 14:13, Jason Yan wrote:
+++ b/include/scsi/libsas.h
@@ -644,6 +644,28 @@ static inline bool sas_is_internal_abort(struct
sas_task *task)
return task->task_proto == SAS_PROTOCOL_INTERNAL_ABORT;
}
+static inline struct request *sas_task_find_rq(struct sas_task *task)
+{
+ struct scsi_cmnd *scmd;
+
+ if (!task || !task->uldd_task)
+ return NULL;
+
+ if (task->task_proto & SAS_PROTOCOL_STP_ALL) {
+ struct ata_queued_cmd *qc;
+
+ qc = task->uldd_task;
+ scmd = qc->scsicmd;
Can we remove that local qc?
We could...
and
scmd = ((struct ata_queued_cmd *)task->uldd_task)->scsicmd;
... but I am not really sure that this is much better, specifically
because of the casting from void. If you feel really strongly about it I
could.
thanks,
John