Why? The kmem_cache_free() doesn't touch the contents of the object,
does it?
Because the slab starts out with a series of objects left in a slab. It
needs to do build a list of objects etc in a way that is independent as
possible from the user of the slab page. It does that by locking the slab
page so that free operations stall until the reference has been
established. If it would not be shutting off frees then the objects could
vanish under us.
It doesn't matter. All we care about is that the dentry is on the
lru: it's cached but unused. Every other state (being created,
active, being freed, freed) is uninteresting.
Sure, and all that is possible without doing this messy 2 phase thing.
Unless I'm still missing something obvious...