]> asedeno.scripts.mit.edu Git - linux.git/commit
nvmet-tcp: set MSG_MORE only if we actually have more to send
authorSagi Grimberg <sagi@grimberg.me>
Thu, 12 Mar 2020 23:06:38 +0000 (16:06 -0700)
committerKeith Busch <kbusch@kernel.org>
Fri, 20 Mar 2020 19:37:53 +0000 (04:37 +0900)
commit98fd5c723730f560e5bea919a64ac5b83d45eb72
tree1f9302e25a129c5f9655151dd6b5701d911d81ee
parent9134ae2a2546cb96abddcd4469a79c77ee3a4480
nvmet-tcp: set MSG_MORE only if we actually have more to send

When we send PDU data, we want to optimize the tcp stack
operation if we have more data to send. So when we set MSG_MORE
when:
- We have more fragments coming in the batch, or
- We have a more data to send in this PDU
- We don't have a data digest trailer
- We optimize with the SUCCESS flag and omit the NVMe completion
  (used if sq_head pointer update is disabled)

This addresses a regression in QD=1 with SUCCESS flag optimization
as we unconditionally set MSG_MORE when we didn't actually have
more data to send.

Fixes: 70583295388a ("nvmet-tcp: implement C2HData SUCCESS optimization")
Reported-by: Mark Wunderlich <mark.wunderlich@intel.com>
Tested-by: Mark Wunderlich <mark.wunderlich@intel.com>
Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Keith Busch <kbusch@kernel.org>
drivers/nvme/target/tcp.c