[PATCH 13/15] aacraid: store callback in scsi_cmnd.host_scribble

Hannes Reinecke
2021-11-25T15:15:05Z

Store the container callback in scsi_cmnd.host_scribble to avoid
having to rely on the fake scsi device during container probing.

Signed-off-by: Hannes Reinecke <hare@suse.de>
---
drivers/scsi/aacraid/aachba.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/scsi/aacraid/aachba.c b/drivers/scsi/aacraid/aachba.c
index 580d74b2ee14..b21ccf7af43f 100644
--- a/drivers/scsi/aacraid/aachba.c
+++ b/drivers/scsi/aacraid/aachba.c
@@ -676,8 +676,8 @@ static void _aac_probe_container2(void * context, struct fib * fibptr)

aac_fib_complete(fibptr);
aac_fib_free(fibptr);
- callback = (int (*)(struct scsi_cmnd *))(scsicmd->SCp.ptr);
- scsicmd->SCp.ptr = NULL;
+ callback = (int (*)(struct scsi_cmnd *))(scsicmd->host_scribble);
+ scsicmd->host_scribble = NULL;
(*callback)(scsicmd);
return;
}
@@ -758,7 +758,7 @@ static int _aac_probe_container(struct scsi_cmnd * scsicmd, unsigned int cid,

dinfo->count = cpu_to_le32(fibptr->cid);
dinfo->type = cpu_to_le32(FT_FILESYS);
- scsicmd->SCp.ptr = (char *)callback;
+ scsicmd->host_scribble = (char *)callback;
scsicmd->SCp.phase = AAC_OWNER_FIRMWARE;

status = aac_fib_send(ContainerCommand,
@@ -775,9 +775,9 @@ static int _aac_probe_container(struct scsi_cmnd * scsicmd, unsigned int cid,
return 0;

if (status < 0) {
- scsicmd->SCp.ptr = NULL;
aac_fib_complete(fibptr);
aac_fib_free(fibptr);
+ scsicmd->host_scribble = NULL;
}
}
if (status < 0) {
@@ -798,7 +798,7 @@ static int _aac_probe_container(struct scsi_cmnd * scsicmd, unsigned int cid,
*/
static int aac_probe_container_callback1(struct scsi_cmnd * scsicmd)
{
- scsicmd->device = NULL;
+ scsicmd->host_scribble = NULL;
return 0;
}

@@ -827,7 +827,7 @@ int aac_probe_container(struct aac_dev *dev, unsigned int cid)
status = _aac_probe_container(scsicmd, cid,
aac_probe_container_callback1);
if (status == 0)
- while (scsicmd->device == scsidev)
+ while (scsicmd->host_scribble != NULL)
schedule();
kfree(scsidev);
kfree(scsicmd);
--
2.29.2