crosvm/common/p9
Daniel Verkamp a323861bf5 p9: set filetype from directory to file in lcreate
The 9p lcreate operation takes a directory fid as input and creates a
file in that directory; when the operation completes, the same fid
becomes a reference to the newly-created file. We updated the internal
self.fids structure's file and path fields to point to the new file, but
we neglected to update the filetype field, which would remain as the
original FileType::Directory.

This caused an issue with commit 53cd18e062 ("p9: use *at() functions
for set_attr"), since that change causes set_attr requests to validate
the filetype is not a directory when attempting to set its length.

BUG=b:253838039
TEST=tast run <...>.DefaultSharedFolder

Change-Id: Ie46a660dd4616d669c924014e704e9b5703eb7e9
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3983116
Reviewed-by: Joel Hockey <joelhockey@chromium.org>
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
2022-10-26 23:23:53 +00:00
..
fuzz Update all copyright headers to match new style 2022-09-13 18:41:29 +00:00
src p9: set filetype from directory to file in lcreate 2022-10-26 23:23:53 +00:00
wire_format_derive Update all copyright headers to match new style 2022-09-13 18:41:29 +00:00
Cargo.lock Add Cargo.lock files to version control again 2022-08-15 19:38:44 +00:00
Cargo.toml crosvm: add serde to arg types 2022-06-30 17:47:59 +00:00
OWNERS
README.md docs: Use mdformat to format markdown files 2022-01-27 21:29:11 +00:00

p9 - Server implementation of the 9p file system protocol

This directory contains the protocol definition and a server implementation of the 9p file system protocol.

  • wire_format_derive - A procedural macro that derives the serialization and de-serialization implementation for a struct into the 9p wire format.
  • src/protocol - Defines all the messages used in the 9p protocol. Also implements serialization and de-serialization for some base types (integers, strings, vectors) that form the foundation of all 9p messages. Wire format implementations for all other messages are derived using the wire_format_derive macro.
  • src/server.rs - Implements a full 9p server, carrying out file system requests on behalf of clients.