On 17/11/2017 3:47 PM, Michael Lyle wrote: > A new field was introduced in 74d46992e0d9dee7f1f376de0d56d31614c8a17a, > bi_partno, instead of using bdev->bd_contains and encoding the partition > information in the bi_bdev field. __bio_clone_fast was changed to copy > the disk information, but not the partition information. At minimum, > this regressed bcache and caused data corruption. > Hi Michael, Thanks for the fix, it looks good to me. > Signed-off-by: Michael Lyle <mlyle@xxxxxxxx> > Fixes: 74d46992e0d9dee7f1f376de0d56d31614c8a17a > Reported-by: Pavel Goran <via-bcache@xxxxxxxxxxxx> > Reported-by: Campbell Steven <casteven@xxxxxxxxx> Reviewed-by: Coly Li <colyli@xxxxxxx> Coly Li > Cc: Christoph Hellwig <hch@xxxxxx> > Cc: Jens Axboe <axboe@xxxxxxxxx> > Cc: <stable@xxxxxxxxxxxxxxx> > --- > block/bio.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/block/bio.c b/block/bio.c > index 101c2a9b5481..33fa6b4af312 100644 > --- a/block/bio.c > +++ b/block/bio.c > @@ -597,6 +597,7 @@ void __bio_clone_fast(struct bio *bio, struct bio *bio_src) > * so we don't set nor calculate new physical/hw segment counts here > */ > bio->bi_disk = bio_src->bi_disk; > + bio->bi_partno = bio_src->bi_partno; > bio_set_flag(bio, BIO_CLONED); > bio->bi_opf = bio_src->bi_opf; > bio->bi_write_hint = bio_src->bi_write_hint; >