[PATCH 5/6] [XFS] Replace per-ag array with a radix tree

Christoph Hellwig hch at infradead.org
Fri Dec 11 05:46:27 CST 2009


On Fri, Dec 11, 2009 at 11:43:53AM +1100, Dave Chinner wrote:
> > > +	spin_lock(&mp->m_perag_lock);
> > > +	pag = radix_tree_lookup(&mp->m_perag_tree, agno);
> > > +	spin_unlock(&mp->m_perag_lock);
> > > +	return pag;
> > 
> > Can't we do this as a lock-less (at least for lookups) radix tree?
> 
> I think it can be (RCU-based?) , but I think that makes sense as a
> followup optimisation once we have confidence the code is working
> as it should.

Nick, what are the rules for the lock-less radix tree reader side?

Dave is introducing a radix tree in XFS which has the following access
pattern:

 - lots of read side access during normal fs operations
 - insertations currently only happen during mount before the fs is life
   and during a very rare operation (filesystem resize)
 - currently items are never deleted, but we might need that in the
   future (for filesystem shrink support)
 - the objects pointed to are kmalloced and refcounted structures,
   but we don't even strictly need the refcounting until the filesystem
   shrink support is implemented




More information about the xfs mailing list