lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Tue, 4 Oct 2022 19:27:07 +0800 From: John Garry <john.garry@...wei.com> To: <jinpu.wang@...ud.ionos.com>, <jejb@...ux.ibm.com>, <martin.petersen@...cle.com> CC: <hare@...e.de>, <damien.lemoal@...nsource.wdc.com>, <linux-scsi@...r.kernel.org>, <linux-kernel@...r.kernel.org>, <linuxarm@...wei.com>, <ipylypiv@...gle.com>, <changyuanl@...gle.com>, <yanaijie@...wei.com>, John Garry <john.garry@...wei.com> Subject: [PATCH v3 1/7] scsi: libsas: Add sas_task_find_rq() blk-mq already provides a unique tag per request. Some libsas LLDDs - like hisi_sas - already use this tag as the unique per-IO HW tag. Add a common function to provide the request associated with a sas_task for all libsas LLDDs. Signed-off-by: John Garry <john.garry@...wei.com> Reviewed-by: Jack Wang <jinpu.wang@...os.com> Reviewed-by: Jason Yan <yanaijie@...wei.com> Reviewed-by: Hannes Reinecke <hare@...e.de> --- include/scsi/libsas.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/include/scsi/libsas.h b/include/scsi/libsas.h index f86b56bf7833..f498217961db 100644 --- a/include/scsi/libsas.h +++ b/include/scsi/libsas.h @@ -644,6 +644,24 @@ 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_proto & SAS_PROTOCOL_STP_ALL) { + struct ata_queued_cmd *qc = task->uldd_task; + + scmd = qc ? qc->scsicmd : NULL; + } else { + scmd = task->uldd_task; + } + + if (!scmd) + return NULL; + + return scsi_cmd_to_rq(scmd); +} + struct sas_domain_function_template { /* The class calls these to notify the LLDD of an event. */ void (*lldd_port_formed)(struct asd_sas_phy *); -- 2.25.1
Powered by blists - more mailing lists