# FUSE read

> Tag 0: the client reads a piece of a file of the volume, by the path of the entry within the volume, in the form the FUSE mount ask of the same tag has on the container proxy; the server answers with exactly one channel response, the bytes, the absence of the file, or an error, from the volume.

Canonical: https://protocol.diverge.network/2.3.0/endpoints/volumes-fuse-serve/client/read/
Specification revision: 2.3.0

The client opens this channel to perform on the served volume what a
program in a container performs on a FUSE mount. The ask names the
entry by its path within the volume, and names no volume: the scope
is the volume. It is, byte for byte, the ask of tag `0` a FUSE
mount's scope carries on the container proxy, and the server answers
it as a client answers that ask, from the volume.

- **The request.** The tag byte `0` followed by the ask.
  [Request](/2.3.0/endpoints/volumes-fuse-serve/client/read/request/) states its form.
- **The response.** Exactly one channel response and the channel
  response finish. [Response](/2.3.0/endpoints/volumes-fuse-serve/client/read/response/) states the
  sequence.
- **The meaning.** What the ask means, and what its answer means,
  [FUSE read](/2.3.0/container-proxy-endpoints/fuse-mount/server/read/) states for the mount, and
  [FUSE read](/2.3.0/endpoints/containers-agents-run/server/fuse-read/) states
  for the relay; the same holds here, the volume standing where the
  client's storage stands there.
- **The volume answers.** The server answers from the volume as it is
  at the time of the answer, and changes the volume as the ask asks
  before it answers `ok`. Nothing is buffered on the client's behalf.
- **Every mode.** A volume answers this ask whatever its `mode`; an `ephemeral` volume answers from its layer where the layer holds the entry, and from the volume where it does not.
