mm: move anon_vma ref out from under CONFIG_foo
[pandora-kernel.git] / include / linux / rmap.h
index e9fd04c..fd56111 100644 (file)
 struct anon_vma {
        struct anon_vma *root;  /* Root of this anon_vma tree */
        spinlock_t lock;        /* Serialize access to vma list */
-#if defined(CONFIG_KSM) || defined(CONFIG_MIGRATION)
-
        /*
-        * The external_refcount is taken by either KSM or page migration
-        * to take a reference to an anon_vma when there is no
+        * The refcount is taken on an anon_vma when there is no
         * guarantee that the vma of page tables will exist for
         * the duration of the operation. A caller that takes
         * the reference is responsible for clearing up the
         * anon_vma if they are the last user on release
         */
-       atomic_t external_refcount;
-#endif
+       atomic_t refcount;
+
        /*
         * NOTE: the LSB of the head.next is set by
         * mm_take_all_locks() _after_ taking the above lock. So the
@@ -71,41 +68,12 @@ struct anon_vma_chain {
 };
 
 #ifdef CONFIG_MMU
-#if defined(CONFIG_KSM) || defined(CONFIG_MIGRATION)
-static inline void anonvma_external_refcount_init(struct anon_vma *anon_vma)
-{
-       atomic_set(&anon_vma->external_refcount, 0);
-}
-
-static inline int anonvma_external_refcount(struct anon_vma *anon_vma)
-{
-       return atomic_read(&anon_vma->external_refcount);
-}
-
 static inline void get_anon_vma(struct anon_vma *anon_vma)
 {
-       atomic_inc(&anon_vma->external_refcount);
-}
-
-void drop_anon_vma(struct anon_vma *);
-#else
-static inline void anonvma_external_refcount_init(struct anon_vma *anon_vma)
-{
+       atomic_inc(&anon_vma->refcount);
 }
 
-static inline int anonvma_external_refcount(struct anon_vma *anon_vma)
-{
-       return 0;
-}
-
-static inline void get_anon_vma(struct anon_vma *anon_vma)
-{
-}
-
-static inline void drop_anon_vma(struct anon_vma *anon_vma)
-{
-}
-#endif /* CONFIG_KSM */
+void put_anon_vma(struct anon_vma *);
 
 static inline struct anon_vma *page_anon_vma(struct page *page)
 {