This patch set reduces latency of Twalk handling by reducing the amount of thread hops, similar to previous Treaddir optimization.
The performance gain of this patch set is not as spectacular as previously with Treaddir, but there is definitely a measurable difference. The actualy performance optimization is patch 7. With the benchmark of patch 2, the runtime of the Twalk test was cut in half. In real world tests I measured a performance gain (i.e. running an entire guest OS, and hence mixed with all other kinds of 9p requests) of about 2%, again measured in a mix, not concentrated on Twalk alone. v1 -> v2: * Added a separate [NEW PATCH 1] for fixing not_same_qid() semantic. * Code style: use sizeof(var-name) instead of sizeof(type-name) [PATCH 3]. * Split out dropping fid_to_qid() into separate [PATCH 4]. * Split out replacing not_same_qid() by same_stat_id() into separate [PATCH 5]. * Split out dropping root_qid into separate [PATCH 6]. Christian Schoenebeck (7): 9pfs: fix not_same_qid() 9pfs: Twalk benchmark 9pfs: capture root stat 9pfs: drop fid_to_qid() 9pfs: replace not_same_qid() by same_stat_id() 9pfs: drop root_qid 9pfs: reduce latency of Twalk hw/9pfs/9p.c | 128 +++++++++++++++++++++++------------ hw/9pfs/9p.h | 2 +- tests/qtest/virtio-9p-test.c | 30 ++++++++ 3 files changed, 116 insertions(+), 44 deletions(-) -- 2.20.1