On 6/18/19 11:10 AM, Himanshu Madhani wrote:
diff --git a/drivers/scsi/qla2xxx/qla_nvme.h b/drivers/scsi/qla2xxx/qla_nvme.h
index 2d088add7011..67bb4a2a3742 100644
--- a/drivers/scsi/qla2xxx/qla_nvme.h
+++ b/drivers/scsi/qla2xxx/qla_nvme.h
@@ -34,6 +34,7 @@ struct nvme_private {
struct work_struct ls_work;
struct work_struct abort_work;
int comp_status;
+ spinlock_t cmd_lock;
};
Hi Himanshu and Quinn,
From the qla2xxx driver:
static struct nvme_fc_port_template qla_nvme_fc_transport = {
[ ... ]
.lsrqst_priv_sz = sizeof(struct nvme_private),
.fcprqst_priv_sz = sizeof(struct nvme_private),
};
[ ... ]
struct nvme_private {
struct srb *sp;
struct nvmefc_ls_req *fd;
struct work_struct ls_work;
struct work_struct abort_work;
int comp_status;
};
Has it been considered to change "struct srb *sp" into "struct srb srb"?
That would guarantee that the srb and nvme_private data structures have
the same lifetime. As a result using the srb reference count would no
longer be necessary for NVMe and no new locking would have to be
introduced in the NVMe-FC completion paths.
I think a similar approach is possible for the SCSI-FC code.
Does this make sense to you?
Thanks,
Bart.