Messages in this thread | | | Date | Mon, 28 Jan 2019 07:57:52 -0800 | From | Christoph Hellwig <> | Subject | Re: [PATCH] block: set rq->cmd_flags with bio->opf instead of data->cmd_flags when bio is not Null |
| |
On Mon, Jan 28, 2019 at 03:36:58PM +0000, John Garry wrote: > As I understood, the problem is the scenario of calling > blk_mq_make_request()->bio_integrity_prep() where we then allocate a bio > integrity payload in calling bio_integrity_alloc(). > > In this case, bio_integrity_alloc() sets bio->bi_opf |= REQ_INTEGRITY, which > is no longer consistent with data.cmd_flags.
I don't see how that could happen:
static blk_qc_t blk_mq_make_request(struct request_queue *q, struct bio *bio) { ...
if (!bio_integrity_prep(bio)) return BLK_QC_T_NONE;
...
data.cmd_flags = bio->bi_opf; rq = blk_mq_get_request(q, bio, &data);
| |