]> err.no Git - linux-2.6/blobdiff - include/linux/mm_inline.h
Merge branch 'master'
[linux-2.6] / include / linux / mm_inline.h
index 47762ca695a59de5e0b3b55c3b7cbd9255f07088..49cc68af01f8e6d971d870fd952d229d31810628 100644 (file)
@@ -38,3 +38,25 @@ del_page_from_lru(struct zone *zone, struct page *page)
                zone->nr_inactive--;
        }
 }
+
+/*
+ * Isolate one page from the LRU lists.
+ *
+ * - zone->lru_lock must be held
+ */
+static inline int __isolate_lru_page(struct page *page)
+{
+       if (unlikely(!TestClearPageLRU(page)))
+               return 0;
+
+       if (get_page_testone(page)) {
+               /*
+                * It is being freed elsewhere
+                */
+               __put_page(page);
+               SetPageLRU(page);
+               return -ENOENT;
+       }
+
+       return 1;
+}