From: Hannes Reinecke <hare@suse.de>
To: "Martin K. Petersen" <martin.petersen@oracle.com>
Cc: Christoph Hellwig <hch@lst.de>,
Doug Gilbert <dgilbert@interlog.com>,
Daniel Wagner <daniel.wagner@suse.com>,
Johannes Thumshirn <johannes.thumshirn@wdc.com>,
James Bottomley <james.bottomley@hansenpartnership.com>,
linux-scsi@vger.kernel.org, Hannes Reinecke <hare@suse.de>
Subject: [PATCHv4 0/5] scsi: use xarray for devices and targets
Date: Fri, 29 May 2020 15:47:25 +0200 [thread overview]
Message-ID: <20200529134730.146573-1-hare@suse.de> (raw)
Hi all,
based on the ideas from Doug Gilbert here's now my take on using
xarrays for devices and targets.
It revolves around two ideas:
- The scsi target 'channel' and 'id' numbers are never ever used
to the full 32 bit range; channels are well below 10, and no
driver is using more than 16 bits for the id. So we can reduce
the type of 'channel' and 'id' to 16 bits, and use the 32 bit
value 'channel << 16 | id' as the index into the target xarray.
- Most SCSI targets are only using the first 32 bits of the 64 bit
LUN structure. So there we can use the LUN number as the index into
the xarray; larger LUN numbers won't fit, so we'll allocate a
separate index for those. For these device lookup won't be as
efficient, but one can argue that we're running into scalability
issues long before that.
With these changes we can implement an efficient lookup mechanism,
devolving into direct lookup for most cases.
And iteration over devices should be as efficient as the current,
list-based, approach.
It also removes the current duality between host-based and
target-based device lists; now all devices are listed per target,
and a full iteration would need to iterate first over all targets
and then over all devices per target.
As usual, comments and reviews are welcome
Changes to v1:
- Fixup __scsi_iterate_devices()
- Include reviews from Johannes
- Minor fixes
- Include comments from Doug
Changes to v2:
- Reshuffle hunks as per suggestion from Johannes
Changes to v3:
- Use GFP_ATOMIC instead of GFP_KERNEL
- Fixup target iteration as reported by Doug Gilbert
- Update scsi_error to make use of the new iterators
Hannes Reinecke (5):
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
drivers/scsi/hosts.c | 4 +-
drivers/scsi/scsi.c | 151 +++++++++++++++++++++++++++++--------
drivers/scsi/scsi_error.c | 35 +++++----
drivers/scsi/scsi_lib.c | 9 +--
drivers/scsi/scsi_priv.h | 2 +
drivers/scsi/scsi_scan.c | 73 +++++++++---------
drivers/scsi/scsi_sysfs.c | 48 ++++++++----
drivers/target/target_core_pscsi.c | 8 +-
include/scsi/scsi_device.h | 32 +++++---
include/scsi/scsi_host.h | 5 +-
10 files changed, 243 insertions(+), 124 deletions(-)
--
2.16.4
next reply other threads:[~2020-05-29 13:47 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-29 13:47 Hannes Reinecke [this message]
2020-05-29 13:47 ` [PATCH 1/5] scsi: convert target lookup to xarray Hannes Reinecke
2020-05-29 13:47 ` [PATCH 2/5] target_core_pscsi: use __scsi_device_lookup() Hannes Reinecke
2020-05-29 22:06 ` Mike Christie
2020-05-29 13:47 ` [PATCH 3/5] scsi: move target device list to xarray Hannes Reinecke
2020-05-29 13:47 ` [PATCH 4/5] scsi: remove direct device lookup per host Hannes Reinecke
2020-05-29 13:47 ` [PATCH 5/5] scsi_error: use xarray lookup instead of wrappers Hannes Reinecke
2020-05-31 6:58 ` kbuild test robot
2020-05-29 20:53 ` [PATCHv4 0/5] scsi: use xarray for devices and targets Douglas Gilbert
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200529134730.146573-1-hare@suse.de \
--to=hare@suse.de \
--cc=daniel.wagner@suse.com \
--cc=dgilbert@interlog.com \
--cc=hch@lst.de \
--cc=james.bottomley@hansenpartnership.com \
--cc=johannes.thumshirn@wdc.com \
--cc=linux-scsi@vger.kernel.org \
--cc=martin.petersen@oracle.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).