Re: [PATCH] Use ida_simple for SCSI iSCSI transport session id
From: Chris Leech
Date: Mon Feb 15 2016 - 13:27:01 EST
On Fri, Feb 12, 2016 at 09:54:51AM -0800, James Bottomley wrote:
> On Fri, 2016-02-12 at 09:38 -0800, Lee Duncan wrote:
> > The scsi_transport_iscsi module already uses the ida_simple
> > routines for managing the target ID, if requested to do
> > so. This change replaces an ever-increasing atomic integer
> > that tracks the session ID itself with the ida_simple
> > family of routines. This means that the session ID
> > will be reclaimed and can be reused when the session
> > is freed.
>
> Is reusing session ID's really a good idea? For sequential sessions it
> means that the ID of the next session will be re-used, i.e. the same as
> the previous sessions, which could lead to target confusion. I think
> local uniqueness of session IDs is more important than wrap around
> because sessions are short lived entities and the chances of the same
> session being alive by the time we've wrapped is pretty tiny.
I've got a few complaints about target resources being tied up because
we don't reuse session IDs. The ISID becomes a component in the
I_T nexus identifier, so changing it invalidates persistent reservations.
> If you can demostrate a multi-target problem, perhaps we should rather
> fix this by making the next session id a target local quantity?
Mike's got a good point that we don't really need to base the ISID off
of our local session identifier (kobject name). I think getting reuse
right may be a bit trickier than being a target local value, because it
needs to be unique across target portal groups. Which probably furthers
the argument that we should deal with that in the userspace tools.
If we plan to split the protocol ISID cleanly from the kobject name,
I guess the question is if aggressive reuse of the local identifier is
better than dealing with the unlikely collision on rollover?
- Chris