SYNOPSYS

     import "clive/zx/zxfs"

     var Verb bool ...  func MountServer(t zx.Getter,  mntdir  string)
     error func New(fs zx.Getter) (*FS, error) type Dir struct { ... }
     type FS struct { ... }
         func New(fs zx.Getter) (*FS, error) type Fd struct { ... }

     DESCRIPTION

     FUSE server for zx.

     In general, fuse requests are sent directly as zx requests.

     CONSTANTS

     TYPES

     type Dir struct {         fs.NodeRef

             sync.Mutex         //  contains  filtered  or  unexported
     fields }
         Implementation of fuse Node interface To match unix semantics
     we issue many
         more zx calls than needed so that each call is made when unix
     expects it.

     func (zd *Dir) Attr() (*fuse.Attr, fuse.Error)
         return the dir entry for a node

     func (zd  *Dir)  Create(elem  string,  flg  fuse.OpenFlags,  mode
     os.FileMode, intr fs.Intr) (fs.Node, fs.Handle, fuse.Error)

     func  (zd  *Dir)  Lookup(name  string,  intr  fs.Intr)  (fs.Node,
     fuse.Error)
         lookup a name in a dir

     func (zd *Dir) Mkdir(elem string, mode os.FileMode, intr fs.Intr)
     (fs.Node, fuse.Error)

     func (zd *Dir) Open(flg fuse.OpenFlags,  _  fs.Intr)  (fs.Handle,
     fuse.Error)
         open a dir/file

     func (zd *Dir) PutNode()

     func (zd *Dir) Remove(elem string, _ fs.Intr) fuse.Error
         Remove (EPERM otherwise)

     func (szd *Dir)  Rename(oelem,  nelem  string,  tond  fs.Node,  _
     fs.Intr) fuse.Error

     func  (zd  *Dir)  SetAttr(r  *fuse.SetattrRequest,   _   fs.Intr)
     fuse.Error
         Set attributes (EPERM otherwise).

     func (zd Dir) String() string

     func (zd *Dir) Wxattr(name string, v []byte) fuse.Error
         write extended attribute

     func (zd *Dir) Xattr(name string) ([]byte, fuse.Error)
         read extended attribute.

     func (zd *Dir) Xattrs() []string
         list extended attributes.

     type  FS  struct  {          sync.RWMutex           //   contains
     filtered or unexported fields }
         Implementation of fuse FS for a zx.Tree

         Keeps an  in-memory  cache  of  directory  entries  to  track
     generated inode
         numbers for each path/entry.

     func New(fs zx.Getter) (*FS, error)
         Create a fuse server for fs.

     func (zd *FS) DumpTo(w io.Writer, lvl int)
         Dump a debug representation of the state of z  into  w,  with
     lvl indent.

     func (z *FS) Root() (fs.Node, fuse.Error)
         return the root node

     func (z *FS) String() string

     type Fd struct {         // everything kept at and locked by  Dir
             *Dir }
         Implementation of fuse handle interface.

     func (fd *Fd) Close(_ fs.Intr) fuse.Error

     func (fd *Fd) IsCtl() bool

     func (fd *Fd) PutHandle()

     func (fd  *Fd)  Read(off  int64,  sz  int,  i  fs.Intr)  ([]byte,
     fuse.Error)

     func (fd *Fd) ReadDir(intr fs.Intr) ([]fuse.Dirent, fuse.Error)

     func (fd *Fd) String() string

     func (fd *Fd) Write(data []byte,  off  int64,  _  fs.Intr)  (int,
     fuse.Error)
         TODO: when we start a write, keep the  chan  open  after  the
     write, receiving
         async errors  from  previous  writes,  and  check  the  write
     offset. Any other
         operation including moves and lookups involving this file  or
     the parent must
         close the write chan and await until the  put  completes.  If
     there's no futher
         operation in, say, 1s, the put must be closed and  completed.
     This is good to
         coallesce multiple writes into a single put. Speed  seems  to
     be ok

     FUNCTIONS

     func MountServer(t zx.Getter, mntdir string) error
         Serve the tree for FUSE and  mount  it  at  the  given  path.
     Returns when
         unmounted.

     VARIABLES

     var (         Verb  bool // print errors to stderr          Debug
     bool )

     User's manual, 2nd ed. Section 2 Copyright © LSUB 2014-2016