Patch "Btrfs: raid56: iterate raid56 internal bio with bio_for_each_segment_all" has been added to the 4.14-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
Btrfs: raid56: iterate raid56 internal bio with bio_for_each_segment_all
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
btrfs-raid56-iterate-raid56-internal-bio-with-bio_for_each_segment_all.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
0198e5b707cfeb5defbd1b71b1ec6e71580d7db9Mon Sep 17 00:00:00 2001
From: Liu Bo <[email protected]>
Date: Fri, 12 Jan 2018 18:07:01 -0700
Subject: Btrfs: raid56: iterate raid56 internal bio with bio_for_each_segment_all
From: Liu Bo <[email protected]>
commit 0198e5b707cfeb5defbd1b71b1ec6e71580d7db9 upstream.
Bio iterated by set_bio_pages_uptodate() is raid56 internal one, so it will never be a BIO_CLONED bio, and since this is called by end_io functions, bio->bi_iter.bi_size is zero, we mustn't use bio_for_each_segment() as that is a no-op if bi_size is zero.
--- fs/btrfs/raid56.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-)
fs/btrfs/raid56.c +5 -6
@@ -1432,14 +1432,13 @@ static int fail_bio_stripe(struct btrfs_*/ static void set_bio_pages_uptodate (struct bio *bio) { -struct bio_vec bvec; -struct bvec_iter iter; +struct bio_vec *bvec; +int i; -if (bio_flagged (bio,BIO_CLONED )) - bio->bi_iter =btrfs_io_bio (bio)->iter; +ASSERT (!bio_flagged (bio,BIO_CLONED )); -bio_for_each_segment (bvec, bio, iter) -SetPageUptodate (bvec.bv_page); +bio_for_each_segment_all (bvec, bio, i) +SetPageUptodate (bvec->bv_page); }/*
Patches currently in stable-queue which might be from [email protected] are
queue-4.14/btrfs-raid56-iterate-raid56-internal-bio-with-bio_for_each_segment_all.patch