On Fri, 2013-11-29 at 16:42 +0800, majianpeng wrote: > Test cdrom on intel ahci, it will trigger this condition. > This is because scsi-mq don' test 'q->dma_drain_size && > blk_rq_bytes(rq)' like in blk_peek_request(). > > Signed-off-by: Jianpeng Ma <majianpeng@xxxxxxxxx> > --- > drivers/scsi/scsi-mq.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) > Applied, + squashed into current target-pending/scsi-mq code. Thanks Jianpeng! --nab > diff --git a/drivers/scsi/scsi-mq.c b/drivers/scsi/scsi-mq.c > index 933ba0f..78b05c1 100644 > --- a/drivers/scsi/scsi-mq.c > +++ b/drivers/scsi/scsi-mq.c > @@ -35,6 +35,16 @@ static int scsi_mq_queue_rq(struct blk_mq_hw_ctx *hctx, struct request *rq) > sc->device = sdev; > sc->sense_buffer = sense_buf; > sc->mq_sgl = sg; > + > + if (q->dma_drain_size && blk_rq_bytes(rq)) { > + /* > + * make sure space for the drain appears we > + * know we can do this because max_hw_segments > + * has been adjusted to be one fewer than the > + * device can handle > + */ > + rq->nr_phys_segments++; > + } > /* > * Mark the end of the pre-allocated SGL based upon the > * incoming number of physical segments from blk-mq -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html