]> git.baikalelectronics.ru Git - kernel.git/commit
scsi: iscsi: Speed up session unblocking and removal
authorMike Christie <michael.christie@oracle.com>
Sat, 26 Feb 2022 23:04:31 +0000 (17:04 -0600)
committerMartin K. Petersen <martin.petersen@oracle.com>
Wed, 2 Mar 2022 04:56:28 +0000 (23:56 -0500)
commit0c659f9fddae36ebc4795e2de2bfbd773daffcf2
tree5c5e7bd3c5731fe8605e89bd1dc2232b95d28a2b
parentc997e80de2d6e9457e5a93a20b54090c733b6aed
scsi: iscsi: Speed up session unblocking and removal

When the iSCSI class was added upstream, blocking a queue was fast because
it just set some flag bits and didn't handle I/O that was in the process of
being sent to the driver. That's no longer the case so blocking a queue is
expensive and we can end up with a backlog of blocks by the time we have
relogged in and are trying to start the queues.

For the session unblock case, this has try to cancel the block and recovery
work in case they are still queued so we can avoid unneeded queue
manipulations. For removal, we also now try to cancel all the recovery
related works since a couple lines down we will set the session and device
state so running those functions are not necessary.

Link: https://lore.kernel.org/r/20220226230435.38733-3-michael.christie@oracle.com
Reviewed-by: Lee Duncan <lduncan@suse.com>
Reviewed-by: Chris Leech <cleech@redhat.com>
Signed-off-by: Mike Christie <michael.christie@oracle.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/scsi_transport_iscsi.c