aboutsummaryrefslogtreecommitdiff
path: root/lib/mpi/mpi-bit.c
diff options
context:
space:
mode:
authorUday Shankar <[email protected]>2023-05-25 12:22:04 -0600
committerKeith Busch <[email protected]>2023-05-30 20:57:42 -0700
commitc7275ce6a5fd32ca9f5a6294ed89cf0523181af9 (patch)
tree9751bb1f78691a18d83a3a84aa5f84cb052397b4 /lib/mpi/mpi-bit.c
parent774a9636514764ddc0d072ae0d1d1c01a47e6ddd (diff)
nvme: improve handling of long keep alives
Upon keep alive completion, nvme_keep_alive_work is scheduled with the same delay every time. If keep alive commands are completing slowly, this may cause a keep alive timeout. The following trace illustrates the issue, taking KATO = 8 and TBKAS off for simplicity: 1. t = 0: run nvme_keep_alive_work, send keep alive 2. t = ε: keep alive reaches controller, controller restarts its keep alive timer 3. t = 4: host receives keep alive completion, schedules nvme_keep_alive_work with delay 4 4. t = 8: run nvme_keep_alive_work, send keep alive Here, a keep alive having RTT of 4 causes a delay of at least 8 - ε between the controller receiving successive keep alives. With ε small, the controller is likely to detect a keep alive timeout. Fix this by calculating the RTT of the keep alive command, and adjusting the scheduling delay of the next keep alive work accordingly. Reported-by: Costa Sapuntzakis <[email protected]> Reported-by: Randy Jennings <[email protected]> Signed-off-by: Uday Shankar <[email protected]> Reviewed-by: Hannes Reinecke <[email protected]> Reviewed-by: Christoph Hellwig <[email protected]> Signed-off-by: Keith Busch <[email protected]>
Diffstat (limited to 'lib/mpi/mpi-bit.c')
0 files changed, 0 insertions, 0 deletions