On 2/26/19 3:35 PM, Christoph Hellwig wrote:
static u32 adpt_cmd_to_context(struct scsi_cmnd *cmd)
{
- return (u32)cmd->serial_number;
+ return (u32)cmd->request->tag + 1;
Why the +1 (with the corresponding -1 later)? Also why keep
this rather confusing helper?
Because the original driver always checked for a non-zero serial number,
and it might well be a firmware limitation (treating commands with a
zero identifier as invalid commands).
So to keep the original behaviour I've added the '+ 1' to the tag number.
}
/*
@@ -604,28 +604,12 @@ static struct scsi_cmnd *
adpt_cmd_from_context(adpt_hba * pHba, u32 context)
{
struct scsi_cmnd * cmd;
spin_unlock(pHba->host->host_lock);
+ cmd = scsi_host_find_tag(pHba->host, context - 1);
spin_lock(pHba->host->host_lock);
- return NULL;
+ return cmd;
No need to take the host_lock around scsi_host_find_tag.
Also we cant probably drop this helper.
Okay, will be doing so.
Cheers,
Hannes