MUX(4)                                                     MUX(4)

     NAME
          mux - file system multiplexor with fail over support

     SYNOPSIS
          o/mux [ -abcd ] [ -m mnt ] attr val ...

     DESCRIPTION
          Mux serves a name space coresponding to any resource regis-
          tered using registry(4) that matches attributes and values
          specified by attr and val arguments, including special val-
          ues described in query(1). By default, it speaks Styx in the
          standard input, for use with mount(1) as in the example.
          Flag -m can be used to ask mux to mount itself at mnt.
          Options -abc determine the mount flag, as in bind(1).

          Mux assumes that, for each registered resource, an attribute
          with name path contains an absolute path for reaching its
          root directory in the current name space. It simply picks
          one of the matching resources and serves (using Styx) its
          file tree. Note that the convention in the Octopus is that
          the registry contains paths valid on the PC Inferno's names-
          pace. Terminals and host systems namespaces may differ.

          Upon failures (eg., I/O errors) of the resource, mux
          switches over to any other resource also matching the
          attributes.

          Upon failure, open fids for the failing resource report I/O
          error to the client process(es). However, any other fids are
          switched to use files in the new resource used. Qids are
          rewritten by mux so that bind(2) could be used, and caching
          of multiplexed files still works.

          Flag -d is used to debug the program, and makes it very ver-
          bose.

     EXAMPLE
          Given this registry, leave at /n/who any resource named who
          that works. Also, mount at /n/uwho any such resource, as
          long as its known location is the same known for the user,
          as reported in /n/who/$user/where.
          % cat /mnt/registry/index
          pc!where arch Plan9386 loc none path /term/pc/where name where
          pc!who arch Plan9386 loc none path /term/pc/who name who
          pc!what arch Plan9386 loc none path /term/pc/what name what
          Atlantian.local!who loc home path /term/Atlantian.local/who name who
          Atlantian.local!what loc home path /term/Atlantian.local/what name what
          % mount -Ac {o/mux name who} /n/who
          % o/mux -m /n/uwho name who loc '$user'

     MUX(4)                                                     MUX(4)

     SOURCE
          /usr/octopus/port/mux

     SEE ALSO
          namespace(4), netget(1), and pcns(1).