btrfs: don't access the bio directly in the raid5/6 code
authorChristoph Hellwig <hch@lst.de>
Fri, 25 Nov 2016 08:07:47 +0000 (09:07 +0100)
committerDavid Sterba <dsterba@suse.com>
Wed, 30 Nov 2016 12:45:19 +0000 (13:45 +0100)
Just use bio_for_each_segment_all to iterate over all segments.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Omar Sandoval <osandov@fb.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/raid56.c

index d016d4a798646d51c0cbc86e768f0899a331e019..eece126d6973dec87be96a48db73c832f484c7c6 100644 (file)
@@ -1144,10 +1144,10 @@ static void validate_rbio_for_rmw(struct btrfs_raid_bio *rbio)
 static void index_rbio_pages(struct btrfs_raid_bio *rbio)
 {
        struct bio *bio;
+       struct bio_vec *bvec;
        u64 start;
        unsigned long stripe_offset;
        unsigned long page_index;
-       struct page *p;
        int i;
 
        spin_lock_irq(&rbio->bio_list_lock);
@@ -1156,10 +1156,8 @@ static void index_rbio_pages(struct btrfs_raid_bio *rbio)
                stripe_offset = start - rbio->bbio->raid_map[0];
                page_index = stripe_offset >> PAGE_SHIFT;
 
-               for (i = 0; i < bio->bi_vcnt; i++) {
-                       p = bio->bi_io_vec[i].bv_page;
-                       rbio->bio_pages[page_index + i] = p;
-               }
+               bio_for_each_segment_all(bvec, bio, i)
+                       rbio->bio_pages[page_index + i] = bvec->bv_page;
        }
        spin_unlock_irq(&rbio->bio_list_lock);
 }
@@ -1433,13 +1431,11 @@ static int fail_bio_stripe(struct btrfs_raid_bio *rbio,
  */
 static void set_bio_pages_uptodate(struct bio *bio)
 {
+       struct bio_vec *bvec;
        int i;
-       struct page *p;
 
-       for (i = 0; i < bio->bi_vcnt; i++) {
-               p = bio->bi_io_vec[i].bv_page;
-               SetPageUptodate(p);
-       }
+       bio_for_each_segment_all(bvec, bio, i)
+               SetPageUptodate(bvec->bv_page);
 }
 
 /*