mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-03-16 12:14:06 +00:00
scsi: fas216: Kill scmd->tag
The driver is attempting to allocate a tag internally which is a no-go with blk-mq. Switch the driver to use the request tag and kill usage of scmd->tag and scmd->device->current_tag. [jpg: Change to use scsi_cmd_to_rq()] Link: https://lore.kernel.org/r/1631696835-136198-2-git-send-email-john.garry@huawei.com Signed-off-by: Hannes Reinecke <hare@suse.de> Signed-off-by: John Garry <john.garry@huawei.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
5f85790388
commit
bc41fcbffd
1 changed files with 8 additions and 23 deletions
|
@ -77,7 +77,6 @@
|
|||
* I was thinking that this was a good chip until I found this restriction ;(
|
||||
*/
|
||||
#define SCSI2_SYNC
|
||||
#undef SCSI2_TAG
|
||||
|
||||
#undef DEBUG_CONNECT
|
||||
#undef DEBUG_MESSAGES
|
||||
|
@ -990,7 +989,7 @@ fas216_reselected_intr(FAS216_Info *info)
|
|||
info->scsi.disconnectable = 0;
|
||||
if (info->SCpnt->device->id == target &&
|
||||
info->SCpnt->device->lun == lun &&
|
||||
info->SCpnt->tag == tag) {
|
||||
scsi_cmd_to_rq(info->SCpnt)->tag == tag) {
|
||||
fas216_log(info, LOG_CONNECT, "reconnected previously executing command");
|
||||
} else {
|
||||
queue_add_cmd_tail(&info->queues.disconnected, info->SCpnt);
|
||||
|
@ -1791,8 +1790,9 @@ static void fas216_start_command(FAS216_Info *info, struct scsi_cmnd *SCpnt)
|
|||
/*
|
||||
* add tag message if required
|
||||
*/
|
||||
if (SCpnt->tag)
|
||||
msgqueue_addmsg(&info->scsi.msgs, 2, SIMPLE_QUEUE_TAG, SCpnt->tag);
|
||||
if (SCpnt->device->simple_tags)
|
||||
msgqueue_addmsg(&info->scsi.msgs, 2, SIMPLE_QUEUE_TAG,
|
||||
scsi_cmd_to_rq(SCpnt)->tag);
|
||||
|
||||
do {
|
||||
#ifdef SCSI2_SYNC
|
||||
|
@ -1815,20 +1815,8 @@ static void fas216_start_command(FAS216_Info *info, struct scsi_cmnd *SCpnt)
|
|||
|
||||
static void fas216_allocate_tag(FAS216_Info *info, struct scsi_cmnd *SCpnt)
|
||||
{
|
||||
#ifdef SCSI2_TAG
|
||||
/*
|
||||
* tagged queuing - allocate a new tag to this command
|
||||
*/
|
||||
if (SCpnt->device->simple_tags && SCpnt->cmnd[0] != REQUEST_SENSE &&
|
||||
SCpnt->cmnd[0] != INQUIRY) {
|
||||
SCpnt->device->current_tag += 1;
|
||||
if (SCpnt->device->current_tag == 0)
|
||||
SCpnt->device->current_tag = 1;
|
||||
SCpnt->tag = SCpnt->device->current_tag;
|
||||
} else
|
||||
#endif
|
||||
set_bit(SCpnt->device->id * 8 +
|
||||
(u8)(SCpnt->device->lun & 0x7), info->busyluns);
|
||||
set_bit(SCpnt->device->id * 8 +
|
||||
(u8)(SCpnt->device->lun & 0x7), info->busyluns);
|
||||
|
||||
info->stats.removes += 1;
|
||||
switch (SCpnt->cmnd[0]) {
|
||||
|
@ -2117,7 +2105,6 @@ request_sense:
|
|||
init_SCp(SCpnt);
|
||||
SCpnt->SCp.Message = 0;
|
||||
SCpnt->SCp.Status = 0;
|
||||
SCpnt->tag = 0;
|
||||
SCpnt->host_scribble = (void *)fas216_rq_sns_done;
|
||||
|
||||
/*
|
||||
|
@ -2223,7 +2210,6 @@ static int fas216_queue_command_lck(struct scsi_cmnd *SCpnt,
|
|||
init_SCp(SCpnt);
|
||||
|
||||
info->stats.queues += 1;
|
||||
SCpnt->tag = 0;
|
||||
|
||||
spin_lock(&info->host_lock);
|
||||
|
||||
|
@ -3003,9 +2989,8 @@ void fas216_print_devices(FAS216_Info *info, struct seq_file *m)
|
|||
dev = &info->device[scd->id];
|
||||
seq_printf(m, " %d/%llu ", scd->id, scd->lun);
|
||||
if (scd->tagged_supported)
|
||||
seq_printf(m, "%3sabled(%3d) ",
|
||||
scd->simple_tags ? "en" : "dis",
|
||||
scd->current_tag);
|
||||
seq_printf(m, "%3sabled ",
|
||||
scd->simple_tags ? "en" : "dis");
|
||||
else
|
||||
seq_puts(m, "unsupported ");
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue