Messages in this thread | | | Subject | Re: [PATCH 1/6] scsi: libsas: Add sas_task_find_rq() | From | Jason Yan <> | Date | Wed, 28 Sep 2022 22:38:59 +0800 |
| |
On 2022/9/28 21:50, John Garry wrote: > 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. >
There are plenty of examples in the kernel, and in scsi itself. Such as
#define fc_host_node_name(x) \ (((struct fc_host_attrs *)(x)->shost_data)->node_name)
> thanks, > John > .
| |