MNT(3)                                                     MNT(3)

     NAME
          mnt - attach to 9P servers

     SYNOPSIS
          #M

     DESCRIPTION
          The mount driver is used by the mount system call (but not
          bind; see bind(2)) to connect the name space of a process to
          the service provided by a 9P server over a communications
          channel.  After the mount, system calls involving files in
          that portion of the name space will be converted by the
          mount driver into the appropriate 9P messages to the server.

          The mount system call issues session and attach(5) messages
          to the server to identify and validate the user of the con-
          nection.  Each distinct user of a connection must mount it
          separately; the mount driver multiplexes the access of the
          various users and their processes to the service.

          File-oriented system calls are converted by the kernel into
          messages in the 9P protocol.  Within the kernel, 9P is
          implemented by procedure calls to the various kernel device
          drivers.  The mount driver translates these procedure calls
          into remote procedure calls to be transmitted as messages
          over the communication channel to the server.  Each message
          is implemented by a write of the corresponding protocol mes-
          sage to the server channel followed by a read on the server
          channel to get the reply.  Errors in the reply message are
          turned into system call error returns.

          A read(2) or write system call on a file served by the mount
          driver may be translated into more than one message, since
          there is a maximum data size for a 9P message.  The system
          call will return when the specified number of bytes have
          been transferred or a short reply is returned.

          The string `#M' is an illegal file name, so this device can
          only be accessed directly by the kernel.

     SEE ALSO
          bind(2)

     SOURCE
          /sys/src/9/port/devmnt.c

     BUGS
          When mounting a service through the mount driver, that is,
          when the channel being multiplexed is itself a file being
          served by the mount driver, large messages may be broken in

     MNT(3)                                                     MNT(3)

          two.