lkml.org 
[lkml]   [2007]   [Apr]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH 11/13] reiserfs: use zero_user_page
    Use zero_user_page() instead of open-coding it. 

    Signed-off-by: Nate Diller <nate.diller@gmail.com>

    ---

    diff -urpN -X dontdiff linux-2.6.21-rc6-mm1/fs/reiserfs/file.c linux-2.6.21-rc6-mm1-test/fs/reiserfs/file.c
    --- linux-2.6.21-rc6-mm1/fs/reiserfs/file.c 2007-04-09 17:24:03.000000000 -0700
    +++ linux-2.6.21-rc6-mm1-test/fs/reiserfs/file.c 2007-04-09 18:18:23.000000000 -0700
    @@ -1059,20 +1059,12 @@ static int reiserfs_prepare_file_region_
    maping blocks, since there is none, so we just zero out remaining
    parts of first and last pages in write area (if needed) */
    if ((pos & ~((loff_t) PAGE_CACHE_SIZE - 1)) > inode->i_size) {
    - if (from != 0) { /* First page needs to be partially zeroed */
    - char *kaddr = kmap_atomic(prepared_pages[0], KM_USER0);
    - memset(kaddr, 0, from);
    - kunmap_atomic(kaddr, KM_USER0);
    - flush_dcache_page(prepared_pages[0]);
    - }
    - if (to != PAGE_CACHE_SIZE) { /* Last page needs to be partially zeroed */
    - char *kaddr =
    - kmap_atomic(prepared_pages[num_pages - 1],
    - KM_USER0);
    - memset(kaddr + to, 0, PAGE_CACHE_SIZE - to);
    - kunmap_atomic(kaddr, KM_USER0);
    - flush_dcache_page(prepared_pages[num_pages - 1]);
    - }
    + if (from != 0) /* First page needs to be partially zeroed */
    + zero_user_page(prepared_pages[0], 0, from);
    +
    + if (to != PAGE_CACHE_SIZE) /* Last page needs to be partially zeroed */
    + zero_user_page(prepared_pages[num_pages-1], to,
    + PAGE_CACHE_SIZE - to);

    /* Since all blocks are new - use already calculated value */
    return blocks;
    @@ -1199,13 +1191,9 @@ static int reiserfs_prepare_file_region_
    ll_rw_block(READ, 1, &bh);
    *wait_bh++ = bh;
    } else { /* Not mapped, zero it */
    - char *kaddr =
    - kmap_atomic(prepared_pages[0],
    - KM_USER0);
    - memset(kaddr + block_start, 0,
    - from - block_start);
    - kunmap_atomic(kaddr, KM_USER0);
    - flush_dcache_page(prepared_pages[0]);
    + zero_user_page(prepared_pages[0],
    + block_start,
    + from - block_start);
    set_buffer_uptodate(bh);
    }
    }
    @@ -1237,13 +1225,8 @@ static int reiserfs_prepare_file_region_
    ll_rw_block(READ, 1, &bh);
    *wait_bh++ = bh;
    } else { /* Not mapped, zero it */
    - char *kaddr =
    - kmap_atomic(prepared_pages
    - [num_pages - 1],
    - KM_USER0);
    - memset(kaddr + to, 0, block_end - to);
    - kunmap_atomic(kaddr, KM_USER0);
    - flush_dcache_page(prepared_pages[num_pages - 1]);
    + zero_user_page(prepared_pages[num_pages-1],
    + to, block_end - to);
    set_buffer_uptodate(bh);
    }
    }
    diff -urpN -X dontdiff linux-2.6.21-rc6-mm1/fs/reiserfs/inode.c linux-2.6.21-rc6-mm1-test/fs/reiserfs/inode.c
    --- linux-2.6.21-rc6-mm1/fs/reiserfs/inode.c 2007-04-09 10:41:47.000000000 -0700
    +++ linux-2.6.21-rc6-mm1-test/fs/reiserfs/inode.c 2007-04-09 18:18:23.000000000 -0700
    @@ -2148,13 +2148,8 @@ int reiserfs_truncate_file(struct inode
    length = offset & (blocksize - 1);
    /* if we are not on a block boundary */
    if (length) {
    - char *kaddr;
    -
    length = blocksize - length;
    - kaddr = kmap_atomic(page, KM_USER0);
    - memset(kaddr + offset, 0, length);
    - flush_dcache_page(page);
    - kunmap_atomic(kaddr, KM_USER0);
    + zero_user_page(page, offset, length);
    if (buffer_mapped(bh) && bh->b_blocknr != 0) {
    mark_buffer_dirty(bh);
    }
    @@ -2370,7 +2365,6 @@ static int reiserfs_write_full_page(stru
    ** last byte in the file
    */
    if (page->index >= end_index) {
    - char *kaddr;
    unsigned last_offset;

    last_offset = inode->i_size & (PAGE_CACHE_SIZE - 1);
    @@ -2379,10 +2373,7 @@ static int reiserfs_write_full_page(stru
    unlock_page(page);
    return 0;
    }
    - kaddr = kmap_atomic(page, KM_USER0);
    - memset(kaddr + last_offset, 0, PAGE_CACHE_SIZE - last_offset);
    - flush_dcache_page(page);
    - kunmap_atomic(kaddr, KM_USER0);
    + zero_user_page(page, last_offset, PAGE_CACHE_SIZE - last_offset);
    }
    bh = head;
    block = page->index << (PAGE_CACHE_SHIFT - s->s_blocksize_bits);
    -
    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: 2007-04-11 05:45    [W:0.036 / U:58.680 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site