On Tue, Mar 19, 2019 at 01:14:20PM +0100, Greg KH wrote:
> On Mon, Mar 18, 2019 at 02:17:11PM -0700, Matthew Wilcox wrote:
> > Signed-off-by: Matthew Wilcox <wi...@infradead.org>
> 
> Also something here saying acm_minors was an idr structure that is being
> converted to xarray.

ACK.

> > @@ -86,20 +86,15 @@ static struct acm *acm_get_by_minor(unsigned int minor)
> >   */
> >  static int acm_alloc_minor(struct acm *acm)
> >  {
> > -   int minor;
> > -
> > -   mutex_lock(&acm_minors_lock);
> > -   minor = idr_alloc(&acm_minors, acm, 0, ACM_TTY_MINORS, GFP_KERNEL);
> > -   mutex_unlock(&acm_minors_lock);
> > -
> > -   return minor;
> > +   return xa_alloc(&acm_minors, &acm->minor, acm,
> > +                   XA_LIMIT(0, ACM_TTY_MINORS - 1), GFP_KERNEL);
> 
> So, the only thing "better" here is that you don't need a lock anymore?

As far as this driver is concerned, I think that's the only advantage.
Other drivers see more advantages.

> Why not just replace the idr api "underneath" with xarray and then drop
> all of the locks over time?
> 
> idr was just a wrapper on top of ida, what's one more :)

umm, IDR was never a wrapper over IDA.  Originally, it was its own data
structure, then IDA was grafted on top of IDR, then I merged the IDR
and radix tree, now I'm replacing both the IDR and the radix tree.

> Anyway, no objection from me, I like tree-wide changes, and appreciate
> the effort that goes into it.  Thanks for doing it.  If you fix up the
> changelog entries for the ones that have none, I'll be glad to queue
> these up.

Thanks.

Reply via email to