mbox series

[v2,0/7] 9pfs: fix 'Twalk' protocol violation

Message ID cover.1647083430.git.qemu_oss@crudebyte.com (mailing list archive)
Headers show
Series 9pfs: fix 'Twalk' protocol violation | expand

Message

Christian Schoenebeck March 12, 2022, 11:10 a.m. UTC
Currently the implementation of 'Twalk' does not behave exactly as specified
by the 9p2000 protocol specification. Actual fix is patch 5; see the
description of that patch for details of what this overall fix and series is
about.

Patch 4 is a preparatory (pure) refactoring change to make patch 5 better
readable.

All the other patches are just additional test cases for guarding 'Twalk'
behaviour.

v1 -> v2:

  * Use Tgetattr instead of Tstat. [patch 3]

  * Add is_same_qid() function. [patch 3]

  * No need to stat root fid. [patch 3]

  * Adjust commit log: 'retrieved/walked' -> 'walked'. [patch 4]

  * Rename variable 'nvalid' -> 'nwalked'. [patch 4]

  * Fix typo in commit log 'unaffected'. [patch 5]

  * Compare 'any_err < 0' like previously done for 'err'. [patch 5]

  * Fix English wording 'says' in commit log. [patch 6]

  * Ensure fid unaffected in fs_walk_2nd_nonexistent(). [NEW patch 7]

Christian Schoenebeck (7):
  tests/9pfs: walk to non-existent dir
  tests/9pfs: Twalk with nwname=0
  tests/9pfs: compare QIDs in fs_walk_none() test
  9pfs: refactor 'name_idx' -> 'nwalked' in v9fs_walk()
  9pfs: fix 'Twalk' to only send error if no component walked
  tests/9pfs: guard recent 'Twalk' behaviour fix
  tests/9pfs: check fid being unaffected in fs_walk_2nd_nonexistent

 hw/9pfs/9p.c                 |  43 +++++---
 tests/qtest/virtio-9p-test.c | 191 ++++++++++++++++++++++++++++++++++-
 2 files changed, 215 insertions(+), 19 deletions(-)