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). Transports and LLDs have not been using these 'lookup' functions but perhaps they might if they knew they were O(ln(n)). - lessen the reliance on the host_lock by making finer grain locks available (to be done) Changes since version 5 [20200719] - rebased on MKP's 5.10/scsi-queue branch 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. Most of the testing done by the author in the last 3 months has been based on "xa" kernels which contain versions of this patchset. To test large numbers of SCSI devices (e.g. a recent test with 16 K devices) it is suggested to used a SCSI PDT that your distribution does _not_ know about. The default scsi_debug device is a disk (PDT=0) and distros like Ubuntu are not designed for that sort of "baggage". So the author uses PDT=1Dh (e.g. 'scsi_debug ptype=0x1d ...') to stop the distro going crazy. Douglas Gilbert (4): scsi: add starget_to_shost() specialization scsi: simplify scsi_target() inline scsi_host: switch ida to idr to hold shost ptr scsi_transport_sas: avoid dev_to_shost() walks 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 | 7 +- drivers/scsi/scsi_priv.h | 2 + drivers/scsi/scsi_scan.c | 112 ++++++++++++--------- drivers/scsi/scsi_sysfs.c | 74 ++++++++++---- drivers/scsi/scsi_transport_sas.c | 40 ++++---- 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 +- include/scsi/scsi_transport_sas.h | 8 +- 13 files changed, 343 insertions(+), 189 deletions(-) -- 2.25.1