lkml.org 
[lkml]   [2004]   [Oct]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 1/2] delete_from_page_cache
    Both reiser4 and cachefs want remove_from_page_cache to be exported.
    Before that, could we please make it symmetric with add_to_page_cache,
    add_to_swap_cache and delete_from_swap_cache? by doing its own
    page_cache_release, instead of commenting that each time it's called.
    But safer if we change the name too: delete_from_page_cache.

    Signed-off-by: Hugh Dickins <hugh@veritas.com>
    ---
    This patch is against 2.6.10-rc1, which doesn't include reiser4 and
    cachefs. The next patch is against 2.6.9-mm1 and patches those.
    But I can understand if you ignore both patches as a waste of time.

    fs/hugetlbfs/inode.c | 3 +--
    include/linux/pagemap.h | 2 +-
    mm/filemap.c | 7 +++----
    mm/swap_state.c | 3 +--
    mm/truncate.c | 3 +--
    5 files changed, 7 insertions(+), 11 deletions(-)

    --- 2.6.10-rc1/fs/hugetlbfs/inode.c 2004-10-18 22:57:03.000000000 +0100
    +++ linux/fs/hugetlbfs/inode.c 2004-10-23 20:43:24.000000000 +0100
    @@ -168,8 +168,7 @@ void truncate_huge_page(struct page *pag
    {
    clear_page_dirty(page);
    ClearPageUptodate(page);
    - remove_from_page_cache(page);
    - put_page(page);
    + delete_from_page_cache(page);
    }

    void truncate_hugepages(struct address_space *mapping, loff_t lstart)
    --- 2.6.10-rc1/include/linux/pagemap.h 2004-10-18 22:55:54.000000000 +0100
    +++ linux/include/linux/pagemap.h 2004-10-23 20:43:24.000000000 +0100
    @@ -95,7 +95,7 @@ int add_to_page_cache(struct page *page,
    unsigned long index, int gfp_mask);
    int add_to_page_cache_lru(struct page *page, struct address_space *mapping,
    unsigned long index, int gfp_mask);
    -extern void remove_from_page_cache(struct page *page);
    +extern void delete_from_page_cache(struct page *page);
    extern void __remove_from_page_cache(struct page *page);

    extern atomic_t nr_pagecache;
    --- 2.6.10-rc1/mm/filemap.c 2004-10-23 12:44:13.000000000 +0100
    +++ linux/mm/filemap.c 2004-10-23 20:43:24.000000000 +0100
    @@ -119,16 +119,15 @@ void __remove_from_page_cache(struct pag
    pagecache_acct(-1);
    }

    -void remove_from_page_cache(struct page *page)
    +void delete_from_page_cache(struct page *page)
    {
    struct address_space *mapping = page->mapping;

    - if (unlikely(!PageLocked(page)))
    - PAGE_BUG(page);
    -
    + BUG_ON(!PageLocked(page));
    spin_lock_irq(&mapping->tree_lock);
    __remove_from_page_cache(page);
    spin_unlock_irq(&mapping->tree_lock);
    + page_cache_release(page); /* drop pagecache ref */
    }

    static int sync_page(void *word)
    --- 2.6.10-rc1/mm/swap_state.c 2004-10-18 22:56:29.000000000 +0100
    +++ linux/mm/swap_state.c 2004-10-23 20:43:24.000000000 +0100
    @@ -227,8 +227,7 @@ int move_to_swap_cache(struct page *page
    {
    int err = __add_to_swap_cache(page, entry, GFP_ATOMIC);
    if (!err) {
    - remove_from_page_cache(page);
    - page_cache_release(page); /* pagecache ref */
    + delete_from_page_cache(page);
    if (!swap_duplicate(entry))
    BUG();
    SetPageDirty(page);
    --- 2.6.10-rc1/mm/truncate.c 2004-10-23 12:44:13.000000000 +0100
    +++ linux/mm/truncate.c 2004-10-23 20:43:24.000000000 +0100
    @@ -54,8 +54,7 @@ truncate_complete_page(struct address_sp
    clear_page_dirty(page);
    ClearPageUptodate(page);
    ClearPageMappedToDisk(page);
    - remove_from_page_cache(page);
    - page_cache_release(page); /* pagecache ref */
    + delete_from_page_cache(page);
    }

    /*
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-03-22 14:07    [W:0.025 / U:0.172 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site