>>>>> "Ewan" == Ewan D Milne <emi...@redhat.com> writes:
>> I think what we need to understand is what caused the regression in
>> the first place, I probably should have been bisecting the original
>> failure rather than trying to find where it started working.
Ewan> Bisecting leads to this commit:
Author: Christoph Hellwig <h...@lst.de>
Date: Sun Jan 18 16:16:33 2015 +0100
block: merge __bio_map_user_iov into bio_map_user_iov
And also remove the unused bdev argument.
Signed-off-by: Christoph Hellwig <h...@lst.de>
Reviewed-by: Ming Lei <tom.leim...@gmail.com>
Signed-off-by: Jens Axboe <ax...@fb.com>
Specifically, the problem appears to be caused by the removal of
the setting of bio->bi_bdev, which would previously be set to NULL.
If I add:
diff --git a/block/bio.c b/block/bio.c
index 0723d4c..ecac37b 100644
@@ -1351,6 +1351,7 @@ struct bio *bio_map_user_iov(struct request_queue
if (iter->type & WRITE)
bio->bi_rw |= REQ_WRITE;
+ bio->bi_bdev = NULL;
bio->bi_flags |= (1 << BIO_USER_MAPPED);
Ewan> The test passes (no zero byte corruption).
Ewan> Setting dxferp would cause map_data.null_mapped to be set before
Ewan> it is passed to blk_rq_map_user(_iov) which would cause a
Ewan> difference in behavior.
Martin K. Petersen Oracle Linux Engineering
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html