]> git.hungrycats.org Git - linux/commitdiff
[PATCH] __add_to_swap_cache and add_to_pagecache() simplification
authorAndrew Morton <akpm@osdl.org>
Sat, 22 May 2004 14:59:57 +0000 (07:59 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Sat, 22 May 2004 14:59:57 +0000 (07:59 -0700)
Simplify the logic in there a bit.

mm/filemap.c
mm/swap_state.c

index 38da105bbe0fbc2240aed8eefe02c2c1f94b59d7..b4dd01c24fb3c0a06500692850d01e865796f545 100644 (file)
@@ -252,17 +252,15 @@ int add_to_page_cache(struct page *page, struct address_space *mapping,
        int error = radix_tree_preload(gfp_mask & ~__GFP_HIGHMEM);
 
        if (error == 0) {
-               page_cache_get(page);
                spin_lock_irq(&mapping->tree_lock);
                error = radix_tree_insert(&mapping->page_tree, offset, page);
                if (!error) {
+                       page_cache_get(page);
                        SetPageLocked(page);
                        page->mapping = mapping;
                        page->index = offset;
                        mapping->nrpages++;
                        pagecache_acct(1);
-               } else {
-                       page_cache_release(page);
                }
                spin_unlock_irq(&mapping->tree_lock);
                radix_tree_preload_end();
index fd18d031e8e748f99a9d864e72200a6b3c823b34..cc7a51f698709eeaabe7edcb700c373f1d5b5700 100644 (file)
@@ -68,18 +68,17 @@ static int __add_to_swap_cache(struct page *page,
        BUG_ON(PagePrivate(page));
        error = radix_tree_preload(gfp_mask);
        if (!error) {
-               page_cache_get(page);
                spin_lock_irq(&swapper_space.tree_lock);
                error = radix_tree_insert(&swapper_space.page_tree,
                                                entry.val, page);
                if (!error) {
+                       page_cache_get(page);
                        SetPageLocked(page);
                        SetPageSwapCache(page);
                        page->private = entry.val;
                        total_swapcache_pages++;
                        pagecache_acct(1);
-               } else
-                       page_cache_release(page);
+               }
                spin_unlock_irq(&swapper_space.tree_lock);
                radix_tree_preload_end();
        }