lkml.org 
[lkml]   [2018]   [Jun]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH V6 21/30] btrfs: conver to bio_for_each_chunk_segment_all
    Date
    bio_for_each_segment_all() can't be used any more after multipage bvec is
    enabled, so we have to convert to bio_for_each_chunk_segment_all().

    Signed-off-by: Ming Lei <ming.lei@redhat.com>
    ---
    fs/btrfs/compression.c | 3 ++-
    fs/btrfs/disk-io.c | 3 ++-
    fs/btrfs/extent_io.c | 9 ++++++---
    fs/btrfs/inode.c | 6 ++++--
    fs/btrfs/raid56.c | 3 ++-
    5 files changed, 16 insertions(+), 8 deletions(-)

    diff --git a/fs/btrfs/compression.c b/fs/btrfs/compression.c
    index 02da66acc57d..388804e9dde6 100644
    --- a/fs/btrfs/compression.c
    +++ b/fs/btrfs/compression.c
    @@ -166,13 +166,14 @@ static void end_compressed_bio_read(struct bio *bio)
    } else {
    int i;
    struct bio_vec *bvec;
    + struct bvec_chunk_iter citer;

    /*
    * we have verified the checksum already, set page
    * checked so the end_io handlers know about it
    */
    ASSERT(!bio_flagged(bio, BIO_CLONED));
    - bio_for_each_segment_all(bvec, cb->orig_bio, i)
    + bio_for_each_chunk_segment_all(bvec, cb->orig_bio, i, citer)
    SetPageChecked(bvec->bv_page);

    bio_endio(cb->orig_bio);
    diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
    index 205092dc9390..e9ad3daa3247 100644
    --- a/fs/btrfs/disk-io.c
    +++ b/fs/btrfs/disk-io.c
    @@ -829,9 +829,10 @@ static blk_status_t btree_csum_one_bio(struct bio *bio)
    struct bio_vec *bvec;
    struct btrfs_root *root;
    int i, ret = 0;
    + struct bvec_chunk_iter citer;

    ASSERT(!bio_flagged(bio, BIO_CLONED));
    - bio_for_each_segment_all(bvec, bio, i) {
    + bio_for_each_chunk_segment_all(bvec, bio, i, citer) {
    root = BTRFS_I(bvec->bv_page->mapping->host)->root;
    ret = csum_dirty_buffer(root->fs_info, bvec->bv_page);
    if (ret)
    diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c
    index efb8db0fd73c..805bac595f3a 100644
    --- a/fs/btrfs/extent_io.c
    +++ b/fs/btrfs/extent_io.c
    @@ -2453,9 +2453,10 @@ static void end_bio_extent_writepage(struct bio *bio)
    u64 start;
    u64 end;
    int i;
    + struct bvec_chunk_iter citer;

    ASSERT(!bio_flagged(bio, BIO_CLONED));
    - bio_for_each_segment_all(bvec, bio, i) {
    + bio_for_each_chunk_segment_all(bvec, bio, i, citer) {
    struct page *page = bvec->bv_page;
    struct inode *inode = page->mapping->host;
    struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
    @@ -2524,9 +2525,10 @@ static void end_bio_extent_readpage(struct bio *bio)
    int mirror;
    int ret;
    int i;
    + struct bvec_chunk_iter citer;

    ASSERT(!bio_flagged(bio, BIO_CLONED));
    - bio_for_each_segment_all(bvec, bio, i) {
    + bio_for_each_chunk_segment_all(bvec, bio, i, citer) {
    struct page *page = bvec->bv_page;
    struct inode *inode = page->mapping->host;
    struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
    @@ -3678,9 +3680,10 @@ static void end_bio_extent_buffer_writepage(struct bio *bio)
    struct bio_vec *bvec;
    struct extent_buffer *eb;
    int i, done;
    + struct bvec_chunk_iter citer;

    ASSERT(!bio_flagged(bio, BIO_CLONED));
    - bio_for_each_segment_all(bvec, bio, i) {
    + bio_for_each_chunk_segment_all(bvec, bio, i, citer) {
    struct page *page = bvec->bv_page;

    eb = (struct extent_buffer *)page->private;
    diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
    index 89b208201783..deee00ca8e6d 100644
    --- a/fs/btrfs/inode.c
    +++ b/fs/btrfs/inode.c
    @@ -7894,6 +7894,7 @@ static void btrfs_retry_endio_nocsum(struct bio *bio)
    struct bio_vec *bvec;
    struct extent_io_tree *io_tree, *failure_tree;
    int i;
    + struct bvec_chunk_iter citer;

    if (bio->bi_status)
    goto end;
    @@ -7905,7 +7906,7 @@ static void btrfs_retry_endio_nocsum(struct bio *bio)

    done->uptodate = 1;
    ASSERT(!bio_flagged(bio, BIO_CLONED));
    - bio_for_each_segment_all(bvec, bio, i)
    + bio_for_each_chunk_segment_all(bvec, bio, i, citer)
    clean_io_failure(BTRFS_I(inode)->root->fs_info, failure_tree,
    io_tree, done->start, bvec->bv_page,
    btrfs_ino(BTRFS_I(inode)), 0);
    @@ -7984,6 +7985,7 @@ static void btrfs_retry_endio(struct bio *bio)
    int uptodate;
    int ret;
    int i;
    + struct bvec_chunk_iter citer;

    if (bio->bi_status)
    goto end;
    @@ -7997,7 +7999,7 @@ static void btrfs_retry_endio(struct bio *bio)
    failure_tree = &BTRFS_I(inode)->io_failure_tree;

    ASSERT(!bio_flagged(bio, BIO_CLONED));
    - bio_for_each_segment_all(bvec, bio, i) {
    + bio_for_each_chunk_segment_all(bvec, bio, i, citer) {
    ret = __readpage_endio_check(inode, io_bio, i, bvec->bv_page,
    bvec->bv_offset, done->start,
    bvec->bv_len);
    diff --git a/fs/btrfs/raid56.c b/fs/btrfs/raid56.c
    index 5e4ad134b9ad..c9f21039e1db 100644
    --- a/fs/btrfs/raid56.c
    +++ b/fs/btrfs/raid56.c
    @@ -1463,10 +1463,11 @@ static void set_bio_pages_uptodate(struct bio *bio)
    {
    struct bio_vec *bvec;
    int i;
    + struct bvec_chunk_iter citer;

    ASSERT(!bio_flagged(bio, BIO_CLONED));

    - bio_for_each_segment_all(bvec, bio, i)
    + bio_for_each_chunk_segment_all(bvec, bio, i, citer)
    SetPageUptodate(bvec->bv_page);
    }

    --
    2.9.5
    \
     
     \ /
      Last update: 2018-06-09 14:37    [W:4.353 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site