]> 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)
commit6f981bf967cfd669d44f7307bb7849b742e42ecd
tree1f9302e25a129c5f9655151dd6b5701d911d81ee
parent2712c1ad13f340cbe24c1f55e59b00a42d18fee1
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: d0b9db9d3604 ("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