On Tue, Nov 16, 2021 at 08:38:05PM -0700, Jens Axboe wrote: > /** > * nvme_submit_cmd() - Copy a command into a queue and ring the doorbell > * @nvmeq: The queue to use > @@ -511,10 +520,7 @@ static void nvme_submit_cmd(struct nvme_queue *nvmeq, struct nvme_command *cmd, > bool write_sq) > { > spin_lock(&nvmeq->sq_lock); > - memcpy(nvmeq->sq_cmds + (nvmeq->sq_tail << nvmeq->sqes), > - cmd, sizeof(*cmd)); > - if (++nvmeq->sq_tail == nvmeq->q_depth) > - nvmeq->sq_tail = 0; > + nvme_copy_cmd(nvmeq, cmd); > nvme_write_sq_db(nvmeq, write_sq); > spin_unlock(&nvmeq->sq_lock); Given that nvme_submit_cmd only has two callers, I'd be tempted to just open code in the callers rather than creating a deep callchain here.