Re: [PATCHv4 0/6] scsi: use xarray for devices and targets

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 6/3/20 2:53 PM, Christoph Hellwig wrote:
On Tue, Jun 02, 2020 at 01:33:05PM +0200, Hannes Reinecke wrote:
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.
- Nearly every target only ever uses the first two levels of the
   4-level SCSI LUN structure, which means that we can use the
   linearized SCSI LUN id as an index into the xarray.
   If we ever come across targets utilizing more that 2 levels of
   the LUN structure we'll allocate the first unused index and have
   to resort to a less efficient lookup instead of direct indexing.

With these changes we can implement an efficient lookup mechanism,
devolving into direct lookup for most cases. It also allows us to
detect duplicate entries or accidental overwrites of existing elements
by using xa_cmpxchg().
And iteration over targets and devices should be as efficient as the
current, list-based, approach.

As usual, comments and reviews are welcome.

I see absolutely no argument for what the point of this series.  It adds
more code, and I don't really see any indications for it fixing bugs,
speeding up workloads, or reducing memory usage.

From my perspective this is a proof-of-concept; using xarrays to store targets and LUNs has the benefit that we can directly access the elements, and the lookup will be more efficient for larger setups.

But it's not a clear-cut solution, merely replacing one concept with some issues with another concept with another set of issues.

Guess the real benefit will come only if we manage to move to explicit scsi target removal, and not the implicit model of making the scsi target dependent on the underlying scsi devices we have now.
I'll be experimenting with that and will post an update for it.

I _do_ like the xarray for targets, though; they have a fixed location where they can go and as such xarray are a far more natural choice. For LUNs it's less compelling as xarrays can't use 64bits generically as index, but still.

Cheers,

Hannes
--
Dr. Hannes Reinecke            Teamlead Storage & Networking
hare@xxxxxxx                               +49 911 74053 688
SUSE Software Solutions GmbH, Maxfeldstr. 5, 90409 Nürnberg
HRB 36809 (AG Nürnberg), Geschäftsführer: Felix Imendörffer



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux