Re: [PATCH 3/4] scsi: move target device list to xarray

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

 



On 5/29/20 1:21 PM, Matthew Wilcox wrote:
On Fri, May 29, 2020 at 08:50:21AM +0200, Hannes Reinecke wrote:
I meant just use xa_alloc() for everything instead of using xa_insert for
0-255.

But then I'll have to use xa_find() to get to the actual element as the 1:1
mapping between SCSI LUN and array index is lost.
And seeing that most storage arrays will expose only up to 256 LUNs I
thought this was a good improvement on lookup.
Of course, this only makes sense if xa_load() is more efficient than
xa_find(). If not then of course it's a bit futile.

xa_load() is absolutely more efficient than xa_find().  It's just a
question of whether it matters ;-)  Carry on ...

Thanks. I will.

BTW, care to update the documentation?

 * Return: 0 on success, -ENOMEM if memory could not be allocated or
 * -EBUSY if there are no free entries in @limit.
 */
int __xa_alloc(struct xarray *xa, u32 *id, void *entry,
		struct xa_limit limit, gfp_t gfp)
{
	XA_STATE(xas, xa, 0);

	if (WARN_ON_ONCE(xa_is_advanced(entry)))
		return -EINVAL;
	if (WARN_ON_ONCE(!xa_track_free(xa)))
		return -EINVAL;

So looks as if the documentation is in need of updating to cover -EINVAL.
And, please, state somewhere that whenever you want to use xa_alloc() you _need_ to specify XA_ALLOC_FLAGS in xa_init_flags(), otherwise
you trip across the above.

It's not entirely obvious, and took me the better half of a day to figure out.

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