Re: [PATCH] bio: ensure __bio_clone_fast copies bi_partno
From: Coly Li <hidden>
Date: 2017-11-17 11:04:23
Also in:
linux-bcache, stable
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 <redacted> Fixes: 74d46992e0d9dee7f1f376de0d56d31614c8a17a Reported-by: Pavel Goran <redacted> Reported-by: Campbell Steven <redacted>
Reviewed-by: Coly Li <redacted> Coly Li
quoted hunk ↗ jump to hunk
Cc: Christoph Hellwig <hch@lst.de> Cc: Jens Axboe <axboe@kernel.dk> Cc: <redacted> --- 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;