lkml.org 
[lkml]   [2018]   [Nov]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH V11 09/19] btrfs: move bio_pages_all() to btrfs
    Date
    BTRFS is the only user of this helper, so move this helper into
    BTRFS, and implement it via bio_for_each_segment_all(), since
    bio->bi_vcnt may not equal to number of pages after multipage bvec
    is enabled.

    Signed-off-by: Ming Lei <ming.lei@redhat.com>
    ---
    fs/btrfs/extent_io.c | 14 +++++++++++++-
    include/linux/bio.h | 6 ------
    2 files changed, 13 insertions(+), 7 deletions(-)

    diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c
    index 5d5965297e7e..874bb9aeebdc 100644
    --- a/fs/btrfs/extent_io.c
    +++ b/fs/btrfs/extent_io.c
    @@ -2348,6 +2348,18 @@ struct bio *btrfs_create_repair_bio(struct inode *inode, struct bio *failed_bio,
    return bio;
    }

    +static unsigned btrfs_bio_pages_all(struct bio *bio)
    +{
    + unsigned i;
    + struct bio_vec *bv;
    +
    + WARN_ON_ONCE(bio_flagged(bio, BIO_CLONED));
    +
    + bio_for_each_segment_all(bv, bio, i)
    + ;
    + return i;
    +}
    +
    /*
    * this is a generic handler for readpage errors (default
    * readpage_io_failed_hook). if other copies exist, read those and write back
    @@ -2368,7 +2380,7 @@ static int bio_readpage_error(struct bio *failed_bio, u64 phy_offset,
    int read_mode = 0;
    blk_status_t status;
    int ret;
    - unsigned failed_bio_pages = bio_pages_all(failed_bio);
    + unsigned failed_bio_pages = btrfs_bio_pages_all(failed_bio);

    BUG_ON(bio_op(failed_bio) == REQ_OP_WRITE);

    diff --git a/include/linux/bio.h b/include/linux/bio.h
    index 7560209d6a8a..9d6284f53c07 100644
    --- a/include/linux/bio.h
    +++ b/include/linux/bio.h
    @@ -282,12 +282,6 @@ static inline void bio_get_last_bvec(struct bio *bio, struct bio_vec *bv)
    bv->bv_len = iter.bi_bvec_done;
    }

    -static inline unsigned bio_pages_all(struct bio *bio)
    -{
    - WARN_ON_ONCE(bio_flagged(bio, BIO_CLONED));
    - return bio->bi_vcnt;
    -}
    -
    static inline struct bio_vec *bio_first_bvec_all(struct bio *bio)
    {
    WARN_ON_ONCE(bio_flagged(bio, BIO_CLONED));
    --
    2.9.5
    \
     
     \ /
      Last update: 2018-11-21 04:27    [W:4.553 / U:0.240 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site