lkml.org 
[lkml]   [2020]   [Apr]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH 3.16 020/245] btrfs: kill extent_buffer_page helper
    3.16.83-rc1 review patch.  If anyone has any objections, please let me know.

    ------------------

    From: David Sterba <dsterba@suse.cz>

    commit fb85fc9a675738ee2746b51c3aedde944b18ca02 upstream.

    It used to be more complex but now it's just a simple array access.

    Signed-off-by: David Sterba <dsterba@suse.cz>
    [bwh: Backported to 3.16 as dependency of various fixes: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    ---
    fs/btrfs/extent_io.c | 55 +++++++++++++++++++++-----------------------
    fs/btrfs/extent_io.h | 6 -----
    2 files changed, 26 insertions(+), 35 deletions(-)

    --- a/fs/btrfs/extent_io.c
    +++ b/fs/btrfs/extent_io.c
    @@ -2082,7 +2082,7 @@ int repair_eb_io_failure(struct btrfs_ro
    return -EROFS;

    for (i = 0; i < num_pages; i++) {
    - struct page *p = extent_buffer_page(eb, i);
    + struct page *p = eb->pages[i];
    ret = repair_io_failure(root->fs_info, start, PAGE_CACHE_SIZE,
    start, p, mirror_num);
    if (ret)
    @@ -3558,7 +3558,7 @@ lock_extent_buffer_for_io(struct extent_

    num_pages = num_extent_pages(eb->start, eb->len);
    for (i = 0; i < num_pages; i++) {
    - struct page *p = extent_buffer_page(eb, i);
    + struct page *p = eb->pages[i];

    if (!trylock_page(p)) {
    if (!flush) {
    @@ -3629,7 +3629,7 @@ static noinline_for_stack int write_one_
    bio_flags = EXTENT_BIO_TREE_LOG;

    for (i = 0; i < num_pages; i++) {
    - struct page *p = extent_buffer_page(eb, i);
    + struct page *p = eb->pages[i];

    clear_page_dirty_for_io(p);
    set_page_writeback(p);
    @@ -3652,10 +3652,8 @@ static noinline_for_stack int write_one_
    }

    if (unlikely(ret)) {
    - for (; i < num_pages; i++) {
    - struct page *p = extent_buffer_page(eb, i);
    - unlock_page(p);
    - }
    + for (; i < num_pages; i++)
    + unlock_page(eb->pages[i]);
    }

    return ret;
    @@ -4459,7 +4457,7 @@ static void btrfs_release_extent_buffer_

    do {
    index--;
    - page = extent_buffer_page(eb, index);
    + page = eb->pages[index];
    if (page && mapped) {
    spin_lock(&page->mapping->private_lock);
    /*
    @@ -4641,7 +4639,8 @@ static void mark_extent_buffer_accessed(

    num_pages = num_extent_pages(eb->start, eb->len);
    for (i = 0; i < num_pages; i++) {
    - struct page *p = extent_buffer_page(eb, i);
    + struct page *p = eb->pages[i];
    +
    if (p != accessed)
    mark_page_accessed(p);
    }
    @@ -4810,7 +4809,7 @@ again:
    */
    SetPageChecked(eb->pages[0]);
    for (i = 1; i < num_pages; i++) {
    - p = extent_buffer_page(eb, i);
    + p = eb->pages[i];
    ClearPageChecked(p);
    unlock_page(p);
    }
    @@ -4921,7 +4920,7 @@ void clear_extent_buffer_dirty(struct ex
    num_pages = num_extent_pages(eb->start, eb->len);

    for (i = 0; i < num_pages; i++) {
    - page = extent_buffer_page(eb, i);
    + page = eb->pages[i];
    if (!PageDirty(page))
    continue;

    @@ -4957,7 +4956,7 @@ int set_extent_buffer_dirty(struct exten
    WARN_ON(!test_bit(EXTENT_BUFFER_TREE_REF, &eb->bflags));

    for (i = 0; i < num_pages; i++)
    - set_page_dirty(extent_buffer_page(eb, i));
    + set_page_dirty(eb->pages[i]);
    return was_dirty;
    }

    @@ -4970,7 +4969,7 @@ int clear_extent_buffer_uptodate(struct
    clear_bit(EXTENT_BUFFER_UPTODATE, &eb->bflags);
    num_pages = num_extent_pages(eb->start, eb->len);
    for (i = 0; i < num_pages; i++) {
    - page = extent_buffer_page(eb, i);
    + page = eb->pages[i];
    if (page)
    ClearPageUptodate(page);
    }
    @@ -4986,7 +4985,7 @@ int set_extent_buffer_uptodate(struct ex
    set_bit(EXTENT_BUFFER_UPTODATE, &eb->bflags);
    num_pages = num_extent_pages(eb->start, eb->len);
    for (i = 0; i < num_pages; i++) {
    - page = extent_buffer_page(eb, i);
    + page = eb->pages[i];
    SetPageUptodate(page);
    }
    return 0;
    @@ -5026,7 +5025,7 @@ int read_extent_buffer_pages(struct exte

    num_pages = num_extent_pages(eb->start, eb->len);
    for (i = start_i; i < num_pages; i++) {
    - page = extent_buffer_page(eb, i);
    + page = eb->pages[i];
    if (wait == WAIT_NONE) {
    if (!trylock_page(page))
    goto unlock_exit;
    @@ -5049,7 +5048,7 @@ int read_extent_buffer_pages(struct exte
    eb->read_mirror = 0;
    atomic_set(&eb->io_pages, num_reads);
    for (i = start_i; i < num_pages; i++) {
    - page = extent_buffer_page(eb, i);
    + page = eb->pages[i];
    if (!PageUptodate(page)) {
    ClearPageError(page);
    err = __extent_read_full_page(tree, page,
    @@ -5074,7 +5073,7 @@ int read_extent_buffer_pages(struct exte
    return ret;

    for (i = start_i; i < num_pages; i++) {
    - page = extent_buffer_page(eb, i);
    + page = eb->pages[i];
    wait_on_page_locked(page);
    if (!PageUptodate(page))
    ret = -EIO;
    @@ -5085,7 +5084,7 @@ int read_extent_buffer_pages(struct exte
    unlock_exit:
    i = start_i;
    while (locked_pages > 0) {
    - page = extent_buffer_page(eb, i);
    + page = eb->pages[i];
    i++;
    unlock_page(page);
    locked_pages--;
    @@ -5111,7 +5110,7 @@ void read_extent_buffer(struct extent_bu
    offset = (start_offset + start) & (PAGE_CACHE_SIZE - 1);

    while (len > 0) {
    - page = extent_buffer_page(eb, i);
    + page = eb->pages[i];

    cur = min(len, (PAGE_CACHE_SIZE - offset));
    kaddr = page_address(page);
    @@ -5143,7 +5142,7 @@ int read_extent_buffer_to_user(struct ex
    offset = (start_offset + start) & (PAGE_CACHE_SIZE - 1);

    while (len > 0) {
    - page = extent_buffer_page(eb, i);
    + page = eb->pages[i];

    cur = min(len, (PAGE_CACHE_SIZE - offset));
    kaddr = page_address(page);
    @@ -5192,7 +5191,7 @@ int map_private_extent_buffer(struct ext
    return -EINVAL;
    }

    - p = extent_buffer_page(eb, i);
    + p = eb->pages[i];
    kaddr = page_address(p);
    *map = kaddr + offset;
    *map_len = PAGE_CACHE_SIZE - offset;
    @@ -5218,7 +5217,7 @@ int memcmp_extent_buffer(struct extent_b
    offset = (start_offset + start) & (PAGE_CACHE_SIZE - 1);

    while (len > 0) {
    - page = extent_buffer_page(eb, i);
    + page = eb->pages[i];

    cur = min(len, (PAGE_CACHE_SIZE - offset));

    @@ -5252,7 +5251,7 @@ void write_extent_buffer(struct extent_b
    offset = (start_offset + start) & (PAGE_CACHE_SIZE - 1);

    while (len > 0) {
    - page = extent_buffer_page(eb, i);
    + page = eb->pages[i];
    WARN_ON(!PageUptodate(page));

    cur = min(len, PAGE_CACHE_SIZE - offset);
    @@ -5282,7 +5281,7 @@ void memset_extent_buffer(struct extent_
    offset = (start_offset + start) & (PAGE_CACHE_SIZE - 1);

    while (len > 0) {
    - page = extent_buffer_page(eb, i);
    + page = eb->pages[i];
    WARN_ON(!PageUptodate(page));

    cur = min(len, PAGE_CACHE_SIZE - offset);
    @@ -5313,7 +5312,7 @@ void copy_extent_buffer(struct extent_bu
    (PAGE_CACHE_SIZE - 1);

    while (len > 0) {
    - page = extent_buffer_page(dst, i);
    + page = dst->pages[i];
    WARN_ON(!PageUptodate(page));

    cur = min(len, (unsigned long)(PAGE_CACHE_SIZE - offset));
    @@ -5391,8 +5390,7 @@ void memcpy_extent_buffer(struct extent_
    cur = min_t(unsigned long, cur,
    (unsigned long)(PAGE_CACHE_SIZE - dst_off_in_page));

    - copy_pages(extent_buffer_page(dst, dst_i),
    - extent_buffer_page(dst, src_i),
    + copy_pages(dst->pages[dst_i], dst->pages[src_i],
    dst_off_in_page, src_off_in_page, cur);

    src_offset += cur;
    @@ -5438,8 +5436,7 @@ void memmove_extent_buffer(struct extent

    cur = min_t(unsigned long, len, src_off_in_page + 1);
    cur = min(cur, dst_off_in_page + 1);
    - copy_pages(extent_buffer_page(dst, dst_i),
    - extent_buffer_page(dst, src_i),
    + copy_pages(dst->pages[dst_i], dst->pages[src_i],
    dst_off_in_page - cur + 1,
    src_off_in_page - cur + 1, cur);

    --- a/fs/btrfs/extent_io.h
    +++ b/fs/btrfs/extent_io.h
    @@ -286,12 +286,6 @@ static inline unsigned long num_extent_p
    (start >> PAGE_CACHE_SHIFT);
    }

    -static inline struct page *extent_buffer_page(struct extent_buffer *eb,
    - unsigned long i)
    -{
    - return eb->pages[i];
    -}
    -
    static inline void extent_buffer_get(struct extent_buffer *eb)
    {
    atomic_inc(&eb->refs);
    \
     
     \ /
      Last update: 2020-04-24 01:25    [W:2.684 / U:0.208 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site