# FUSE write

> Tag 1: the client writes a piece of a file of the served subtree in place, by the path of the entry within the subtree, in the form the FUSE mount ask of the same tag has on a mount scope; the server answers with exactly one channel response, ok or an error, from the filesystem of the container.

Canonical: https://protocol.diverge.network/2.3.0/container-proxy-endpoints/filesystem-fuse-serve/client/write/
Specification revision: 2.3.0

The client opens this channel to perform on the served subtree what a
program in a container performs on a FUSE mount: it is the last hop
of the [FUSE write](/2.3.0/endpoints/containers-fuse-serve/client/write/) channel of a
container FUSE serve. The ask names the entry by its path within the
subtree, and names no subtree: the scope is the subtree. It is, byte
for byte, the ask of tag `1` the server opens on a
[mount scope](/2.3.0/container-proxy-endpoints/fuse-mount/), going the other
way, and the server answers it from the filesystem of the container.

- **The request.** The tag byte `1` followed by the ask.
  [Request](/2.3.0/container-proxy-endpoints/filesystem-fuse-serve/client/write/request/) states its form.
- **The response.** Exactly one channel response and the channel
  response finish. [Response](/2.3.0/container-proxy-endpoints/filesystem-fuse-serve/client/write/response/) states the
  sequence.
- **The meaning.** What the ask means, and what its answer means,
  [FUSE write](/2.3.0/container-proxy-endpoints/fuse-mount/server/write/) states for the mount; the
  same holds here, the filesystem of the container standing where the
  client's storage stands there.
- **The filesystem answers.** The server answers from the filesystem
  of the container as it is at the time of the answer, and changes
  the container as the ask asks before it answers `ok`. A symbolic
  link is the link itself, a file. The server buffers nothing on the
  client's behalf.
- **No mode.** A container has no mode. Every change the server
  answers `ok` is in the container, where the program beside the
  proxy sees it; the read-only byte is never sent.
- **Left out.** Under `/proc`, `/sys` and `/dev` nothing is answered:
  a path there, or a path with a component `.` or `..`, is answered
  with an error, and the container is as it was.
