blktests nvme/062 lockdep â defer TLS inline send to io_work?
Xixin Liu
liuxixin at kylinos.cn
Mon Jun 29 00:00:00 PDT 2026
Hi Hannes,
Thanks for the feedback — I ran the lockdep and perf checks you suggested.
try_send vs send_all (lockdep)
------------------------------
With PROVE_LOCKING=y, blktests nvme/062:
Inline nvme_tcp_try_send() instead of send_all() does *not* fix the
lockdep splat: TLS would still call tls_sw_sendmsg() from queue_rq
under blk_mq srcu — same as you suspected.
Performance / latency (skip TLS inline send)
----------------------------------------------
Same-machine nvmet-tcp with TLS (lockdep disabled for timing). Compared
inline send_all (baseline) vs skipping inline send for TLS (io_work).
fio randwrite 4k, direct I/O:
- iodepth=128, 8 jobs, 30s: ~90k IOPS baseline vs deferred after
baseline warmup; no regression.
- iodepth=1, 1 job, 30s (3 runs, warmup discarded): mean ~786us
vs ~764us, p99 ~1.39ms on both sides.
- 20x (connect --tls, one 4k write, disconnect): ~917ms vs ~897ms
mean; dominated by TLS handshake, no measurable difference.
If the above is not enough on the latency side, I would be happy to
run other workloads you suggest.
Thanks,
Xixin Liu
More information about the Linux-nvme
mailing list