Asynchronous 9P2000.L client.
This is the network counterpart to the ZeroFS 9P server: it speaks the exact same wire protocol but from the client side.
Reconnection
9P sessions are stateful: every fid (the attach root, the per-inode "path" fids and open file handles) and every byte-range lock lives on the connection. A dropped socket therefore invalidates all of it, which is why the in-kernel v9fs client simply wedges the mount on disconnect.
Instead, this client records, per fid, the stable inode id it points at
(plus open flags) and which locks it holds, in [SessionState]. When the
connection drops, a supervisor task reconnects (retrying indefinitely with
backoff) and replays that state onto the fresh session.
While a reconnect is in progress every request blocks (the mount "hangs" rather than failing) and is resent once the session is restored. The one caveat is a request in flight at the instant of the drop: we can't know whether the server applied it, so resending a non-idempotent op (mkdir/create/rename/unlink) could apply it twice.