I have a number of small patches in my branch targeted at making the grab & busy usage more consistent. This enables tighter assertions that are necessary for lockless lookup & busy. In these particular cases the busy lock is acquired for free in page_alloc and we are only paying an extra atomic to release.