Skip to contentSkip to conversation

nvme-fc: use blk_rq_nr_phys_segments

PATCH New Christoph Hellwig 3 participants 4 messages Jan 19, 2017 – Jan 25, 2017

Subsystems (2)
lore
Share & tools
lore

Christoph Hellwig

author maintainer
#0 lore raw

PATCH 1/1 nvme-fc: use blk_rq_nr_phys_segments

Without this deallocate won't work properly due to the mismatch of the bio/request size and the actual payload size.

Signed-off-by Christoph Hellwig <hch at lst.de>
---
 drivers/nvme/host/fc.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
drivers/nvme/host/fc.c +3 -3
index fcc9dcf..e65041c 100644
@@ -1663,13 +1663,13 @@ nvme_fc_map_data(struct nvme_fc_ctrl *ctrl, struct request *rq,
 		return 0;
 
 	freq->sg_table.sgl = freq->first_sgl;
-	ret = sg_alloc_table_chained(&freq->sg_table, rq->nr_phys_segments,
-			freq->sg_table.sgl);
+	ret = sg_alloc_table_chained(&freq->sg_table,
+			blk_rq_nr_phys_segments(rq), freq->sg_table.sgl);
 	if (ret)
 		return -ENOMEM;
 
 	op->nents = blk_rq_map_sg(rq->q, rq, freq->sg_table.sgl);
-	WARN_ON(op->nents > rq->nr_phys_segments);
+	WARN_ON(op->nents > blk_rq_nr_phys_segments(rq));
 	dir = (rq_data_dir(rq) == WRITE) ? DMA_TO_DEVICE : DMA_FROM_DEVICE;
 	freq->sg_cnt = fc_dma_map_sg(ctrl->lport->dev, freq->sg_table.sgl,
 				op->nents, dir);
Signature · 1 line
2.1.4
author maintainer
#1 lore raw

PATCH 1/1 nvme-fc: use blk_rq_nr_phys_segments

Folks, can I get a review fore this?

Without it we'll reliably crash on a discard on nvme-fc, so we should get this into 4.10.

Quoted 37 lines · Christoph Hellwig

Without this deallocate won't work properly due to the mismatch of the bio/request size and the actual payload size.

Signed-off-by Christoph Hellwig <hch at lst.de>
---
 drivers/nvme/host/fc.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
drivers/nvme/host/fc.c +3 -3
index fcc9dcf..e65041c 100644
@@ -1663,13 +1663,13 @@ nvme_fc_map_data(struct nvme_fc_ctrl *ctrl, struct request *rq,
 		return 0;
 
 	freq->sg_table.sgl = freq->first_sgl;
-	ret = sg_alloc_table_chained(&freq->sg_table, rq->nr_phys_segments,
-			freq->sg_table.sgl);
+	ret = sg_alloc_table_chained(&freq->sg_table,
+			blk_rq_nr_phys_segments(rq), freq->sg_table.sgl);
 	if (ret)
 		return -ENOMEM;
 
 	op->nents = blk_rq_map_sg(rq->q, rq, freq->sg_table.sgl);
-	WARN_ON(op->nents > rq->nr_phys_segments);
+	WARN_ON(op->nents > blk_rq_nr_phys_segments(rq));
 	dir = (rq_data_dir(rq) == WRITE) ? DMA_TO_DEVICE : DMA_FROM_DEVICE;
 	freq->sg_cnt = fc_dma_map_sg(ctrl->lport->dev, freq->sg_table.sgl,
 				op->nents, dir);
Signature · 7 lines
2.1.4


_______________________________________________
Linux-nvme mailing list
Linux-nvme at lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme

---end quoted text---

#2 lore raw

PATCH 1/1 nvme-fc: use blk_rq_nr_phys_segments

In reply to Christoph Hellwig
Quoted 5 lines · Christoph Hellwig

Without this deallocate won't work properly due to the mismatch of the bio/request size and the actual payload size.

Signed-off-by Christoph Hellwig <hch at lst.de>

---

Reviewed-by Johannes Thumshirn <jthumshirn at suse.de>

Might be worth adding a:

Fixes f9d03f96b ('block: improve handling of the magic discard payload')

as well.

Signature · 6 lines
Johannes Thumshirn                                          Storage
jthumshirn at suse.de                                +49 911 74053 689
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 N?rnberg
GF: Felix Imend?rffer, Jane Smithard, Graham Norton
HRB 21284 (AG N?rnberg)
Key fingerprint = EC38 9CAB C2C4 F25D 8600 D0D0 0393 969D 2D76 0850
#3 lore raw

PATCH 1/1 nvme-fc: use blk_rq_nr_phys_segments

In reply to Christoph Hellwig
Quoted 6 lines · Christoph Hellwig

Without this deallocate won't work properly due to the mismatch of the bio/request size and the actual payload size.

Signed-off-by Christoph Hellwig <hch at lst.de>

---

looks fine to me.

Reviewed-by James Smart <james.smart at broadcom.com>

-- james