mbox series

[v6,00/10] scsi: use xarray for devices and targets

Message ID 20200821154204.9298-1-dgilbert@interlog.com
Headers show
Series scsi: use xarray for devices and targets | expand

Message

Douglas Gilbert Aug. 21, 2020, 3:41 p.m. UTC
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(-)