nvmet: Use direct IO for writes
Subsystems (2)
Sagi Grimberg
maintainerPATCH 1/1 nvmet: Use direct IO for writes
We're designed to work with high-end devices where direct IO makes perfect sense. We noticed that we context switch by scheduling kblockd instead of going directly to the device without REQ_SYNC for writes.
--- drivers/nvme/target/io-cmd.c | 1 + 1 file changed, 1 insertion(+)
drivers/nvme/target/io-cmd.c +1 -0
@@ -58,6 +58,7 @@ static void nvmet_execute_rw(struct nvmet_req *req)if (req->cmd->rw.opcode == nvme_cmd_write) { op =REQ_OP_WRITE ; + op_flags =WRITE_ODIRECT ;if (req->cmd->rw.control &cpu_to_le16 (NVME_RW_FUA )) op_flags |=REQ_FUA ; }else {
Signature · 1 line
1.9.1
Christoph Hellwig
maintainerPATCH 1/1 nvmet: Use direct IO for writes
Quoted 4 lines · Sagi Grimberg
We're designed to work with high-end devices where direct IO makes perfect sense. We noticed that we context switch by scheduling kblockd instead of going directly to the device without
REQ_SYNCfor writes.
This looks reasonable. But I still wonder why we bother to inject delay for any fast blk-mq device (background: Sagi told me he is observing issues without this on a NVMe PCIe card backend)
Jens Axboe
maintainerPATCH 1/1 nvmet: Use direct IO for writes
Quoted 9 lines · Christoph Hellwig
Quoted 4 lines · Sagi Grimberg
We're designed to work with high-end devices where direct IO makes perfect sense. We noticed that we context switch by scheduling kblockd instead of going directly to the device without
REQ_SYNCfor writes.This looks reasonable. But I still wonder why we bother to inject delay for any fast blk-mq device (background: Sagi told me he is observing issues without this on a NVMe PCIe card backend)
Batching/merging. It's not like we're doing a calculated explicit delay, it's just async running the queue.
Signature · 1 line
Jens Axboe
Sagi Grimberg
maintainerPATCH 1/1 nvmet: Use direct IO for writes
Quoted 7 lines
Quoted 4 lines
This looks reasonable. But I still wonder why we bother to inject delay for any fast blk-mq device (background: Sagi told me he is observing issues without this on a NVMe PCIe card backend)
Batching/merging. It's not like we're doing a calculated explicit delay, it's just async running the queue.
So are we OK with bypassing that in nvmet?
Jens Axboe
maintainerPATCH 1/1 nvmet: Use direct IO for writes
Quoted 9 lines · Sagi Grimberg
Quoted 7 lines
Quoted 4 lines
This looks reasonable. But I still wonder why we bother to inject delay for any fast blk-mq device (background: Sagi told me he is observing issues without this on a NVMe PCIe card backend)
Batching/merging. It's not like we're doing a calculated explicit delay, it's just async running the queue.
So are we OK with bypassing that in nvmet?
I'm OK with the patch as posted.
Signature · 1 line
Jens Axboe
Sagi Grimberg
maintainerPATCH 1/1 nvmet: Use direct IO for writes
Quoted 4 lines
Quoted 2 lines
So are we OK with bypassing that in nvmet?
I'm OK with the patch as posted.
Thanks, I'll queue it up for 4.9
Jens Axboe
maintainerPATCH 1/1 nvmet: Use direct IO for writes
Quoted 6 lines · Sagi Grimberg
Quoted 4 lines
Quoted 2 lines
So are we OK with bypassing that in nvmet?
I'm OK with the patch as posted.
Thanks, I'll queue it up for 4.9
You can add my Reviewed-by, fwiw.
Signature · 1 line
Jens Axboe
Christoph Hellwig
maintainerPATCH 1/1 nvmet: Use direct IO for writes
In reply to Sagi GrimbergQuoted 6 lines · Sagi Grimberg
Quoted 4 lines
Quoted 2 lines
So are we OK with bypassing that in nvmet?
I'm OK with the patch as posted.
Thanks, I'll queue it up for 4.9
Btw, it might be a good idea to send our for-4.9 branch to Jens so it gets some linux-next exposure.