This patchset has bounced between my ownership and that of Hannes Reinecke and now back again. The rationale remains the same: - strengthen the SCSI mid-level object tree "glue" by retiring linked lists where practical, especially the redundant one. Use xarrays and the idr mechanism at the host level - make the various 'lookup' exported functions O(ln(n)) rather than O(n). - lessen the reliance on the host_lock by making finer grain locks available (to be done) Version 4 of this patchset was sent to the linux-scsi list on 20200602 by Hannes with a similar subject name. That was against MKP's 5.8/scsi-queue branch. It had 6 parts and they form the first 6 patches of this patchset, with minor changes since it is now based on MKP's 5.9/scsi-queue branch. The last three patches have been added by the author, the first two have previously been sent to the Linux-scsi list in early June. The last patch could change the subject (adding 'hosts') but the subject line has been kept so former patchset versions can be more easily found. Douglas Gilbert (3): scsi: add starget_to_shost() specialization scsi: simplify scsi_target() inline scsi_host: switch ida to idr to hold shost ptr Hannes Reinecke (6): scsi: convert target lookup to xarray target_core_pscsi: use __scsi_device_lookup() scsi: move target device list to xarray scsi: remove direct device lookup per host scsi_error: use xarray lookup instead of wrappers scsi: avoid pointless memory allocation in scsi_alloc_target() drivers/scsi/hosts.c | 42 +++----- drivers/scsi/scsi.c | 153 ++++++++++++++++++++++------- drivers/scsi/scsi_error.c | 35 ++++--- drivers/scsi/scsi_lib.c | 9 +- drivers/scsi/scsi_priv.h | 2 + drivers/scsi/scsi_scan.c | 112 ++++++++++++--------- drivers/scsi/scsi_sysfs.c | 74 ++++++++++---- drivers/target/target_core_pscsi.c | 8 +- include/scsi/scsi_device.h | 44 ++++++--- include/scsi/scsi_host.h | 5 +- include/scsi/scsi_transport.h | 2 +- 11 files changed, 318 insertions(+), 168 deletions(-) -- 2.25.1