wait_split_huge_page() is really only used in a few spots at the moment. I was trying to use it in fs/proc/task_mmu.c, but simply including huge_mm.h gets this: fs/proc/task_mmu.c: In function âsmaps_pte_rangeâ: fs/proc/task_mmu.c:392: error: dereferencing pointer to incomplete type I think it's due to the __anon_vma dereference below. #including rmap.h makes it go away, but I don't think it's really the correct thing to do here. Directly including rmap.h in huge_mm.h ends up with some really interesting header dependencies and does not work either. Any ideas? Should we move the existing huge_mm.h stuff to a private header and have a more public one that also brings in rmap.h? #define wait_split_huge_page(__anon_vma, __pmd) \ do { \ pmd_t *____pmd = (__pmd); \ spin_unlock_wait(&(__anon_vma)->root->lock); \ /* \ * spin_unlock_wait() is just a loop in C and so the \ * CPU can reorder anything around it. \ */ \ smp_mb(); \ BUG_ON(pmd_trans_splitting(*____pmd) || \ pmd_trans_huge(*____pmd)); \ } while (0) -- Dave -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom policy in Canada: sign http://dissolvethecrtc.ca/ Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>