瀏覽代碼

nvme-fabrics: set sqe.command_id in core not transports

Currently, core.c sets command_id only on rd/wr commands, leaving it to
the transport to set it again to ensure the request had a command id.

Move location of set in core so applies to all commands.
Remove transport sets.

Signed-off-by: James Smart <james.smart@broadcom.com>
Reviewed-by: Jay Freyensee <james_p_freyensee@linux.intel.com>
Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
James Smart 8 年之前
父節點
當前提交
721b3917c4
共有 4 個文件被更改,包括 2 次插入4 次删除
  1. 2 1
      drivers/nvme/host/core.c
  2. 0 1
      drivers/nvme/host/pci.c
  3. 0 1
      drivers/nvme/host/rdma.c
  4. 0 1
      drivers/nvme/target/loop.c

+ 2 - 1
drivers/nvme/host/core.c

@@ -303,7 +303,6 @@ static inline void nvme_setup_rw(struct nvme_ns *ns, struct request *req,
 
 
 	memset(cmnd, 0, sizeof(*cmnd));
 	memset(cmnd, 0, sizeof(*cmnd));
 	cmnd->rw.opcode = (rq_data_dir(req) ? nvme_cmd_write : nvme_cmd_read);
 	cmnd->rw.opcode = (rq_data_dir(req) ? nvme_cmd_write : nvme_cmd_read);
-	cmnd->rw.command_id = req->tag;
 	cmnd->rw.nsid = cpu_to_le32(ns->ns_id);
 	cmnd->rw.nsid = cpu_to_le32(ns->ns_id);
 	cmnd->rw.slba = cpu_to_le64(nvme_block_nr(ns, blk_rq_pos(req)));
 	cmnd->rw.slba = cpu_to_le64(nvme_block_nr(ns, blk_rq_pos(req)));
 	cmnd->rw.length = cpu_to_le16((blk_rq_bytes(req) >> ns->lba_shift) - 1);
 	cmnd->rw.length = cpu_to_le16((blk_rq_bytes(req) >> ns->lba_shift) - 1);
@@ -345,6 +344,8 @@ int nvme_setup_cmd(struct nvme_ns *ns, struct request *req,
 	else
 	else
 		nvme_setup_rw(ns, req, cmd);
 		nvme_setup_rw(ns, req, cmd);
 
 
+	cmd->common.command_id = req->tag;
+
 	return ret;
 	return ret;
 }
 }
 EXPORT_SYMBOL_GPL(nvme_setup_cmd);
 EXPORT_SYMBOL_GPL(nvme_setup_cmd);

+ 0 - 1
drivers/nvme/host/pci.c

@@ -611,7 +611,6 @@ static int nvme_queue_rq(struct blk_mq_hw_ctx *hctx,
 	if (ret != BLK_MQ_RQ_QUEUE_OK)
 	if (ret != BLK_MQ_RQ_QUEUE_OK)
 		goto out;
 		goto out;
 
 
-	cmnd.common.command_id = req->tag;
 	blk_mq_start_request(req);
 	blk_mq_start_request(req);
 
 
 	spin_lock_irq(&nvmeq->q_lock);
 	spin_lock_irq(&nvmeq->q_lock);

+ 0 - 1
drivers/nvme/host/rdma.c

@@ -1399,7 +1399,6 @@ static int nvme_rdma_queue_rq(struct blk_mq_hw_ctx *hctx,
 	if (ret != BLK_MQ_RQ_QUEUE_OK)
 	if (ret != BLK_MQ_RQ_QUEUE_OK)
 		return ret;
 		return ret;
 
 
-	c->common.command_id = rq->tag;
 	blk_mq_start_request(rq);
 	blk_mq_start_request(rq);
 
 
 	map_len = nvme_map_len(rq);
 	map_len = nvme_map_len(rq);

+ 0 - 1
drivers/nvme/target/loop.c

@@ -194,7 +194,6 @@ static int nvme_loop_queue_rq(struct blk_mq_hw_ctx *hctx,
 		BUG_ON(iod->req.sg_cnt > req->nr_phys_segments);
 		BUG_ON(iod->req.sg_cnt > req->nr_phys_segments);
 	}
 	}
 
 
-	iod->cmd.common.command_id = req->tag;
 	blk_mq_start_request(req);
 	blk_mq_start_request(req);
 
 
 	schedule_work(&iod->work);
 	schedule_work(&iod->work);