]> git.baikalelectronics.ru Git - kernel.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)
commit1d62a0cca9bcf057d6ec26378a2ca510e3f73062
tree1f9302e25a129c5f9655151dd6b5701d911d81ee
parent9f774b2a9576d0592a1faf5cbdcbfa31f34746d4
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: cb1eee469e8f ("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