term% ls -F
term% cat index.txt
CWFS(4)                    Kernel Interfaces Manual                    CWFS(4)

       cwfs - cached-worm file server, dump

       cwfs [ -cf ] [ -a announce-string ] ... [ -m device-map ] config-device

       Cwfs  is a cached-worm file server that runs as a user-mode program and
       can maintain file systems created by fs(4), the original  Plan  9  file
       server  that  had  its own kernel and operated a standalone system with
       disks and optical-disc jukebox attached.   Unlike  fs(4),  which  could
       only  accept  9P connections over IL/IPv4 on Ethernets (or over Datakit
       and Cyclones, long ago), cwfs accepts 9P connections over  any  network
       medium  and protocol that it can announce on, by default TCP (over IPv4
       or IPv6).  Given suitable 9P clients, one could even run 9P over aan(8)
       or tls(3).

       The  stock cwfs implements a 16K file system block size and 32-bit disk
       addresses, in order to be compatible with some existing  file  systems,
       notably emelie's.  These parameters can be changed by recompilation.

       Cwfs expects to find the configuration block on config-device.

       Options are:

       -a     announce on announce-string instead of

       -c     use  a  newer, faster, and incompatible cache-device layout.  To
              convert an old file system's cache to the new layout,  dump  the
              file system, note the last superblock number, halt cwfs, restart
              cwfs with -cf, recover the file system, and start cwfs  with  -c

       -f     enter  the file server's configuration mode before starting nor‐
              mal operation.

       -m     the file device-map contains a simple device name (e.g.,  and  a
              replacement  per  line.   The device name is in the usual filsys
              notation of fsconfig(8).  The replacement can be the name of  an
              existing  file (which cwfs will not grow) or another such device
              name.  For example, the file

                     w0 /tmp/w0
                     h1 w2

              would map accesses to device to existing file  and  accesses  to
              device to device if no file named exists.

       The file server normally requires all users except to provide authenti‐
       cation tickets on each attach(5).   This  can  be  disabled  using  the
       noauth configuration command (see fsconfig(8)).

       The  group  numbered  9999,  normally called noworld, is special on the
       file server.  Any user belonging to that group  has  attenuated  access
       privileges.  Specifically, when checking such a user's access to files,
       the file's permission bits are first ANDed with 0770 for  normal  files
       or  0771  for  directories.  The effect is to deny world access permis‐
       sions to noworld users, except when walking directories.

       The user none is always allowed to attach to emelie without authentica‐
       tion but has minimal permissions.

       Emelie  maintains  three  file  systems  on  a combination of disks and
       write-once-read-many (WORM) magneto-optical disks.

       other  is a simple disk-based file system similar to kfs(4).

       main   is a worm-based file system with a disk-based look-aside  cache.
              The disk cache holds modified worm blocks to overcome the write-
              once property of the worm.  The cache also  holds  recently  ac‐
              cessed non-modified blocks to speed up the effective access time
              of the worm.  Occasionally (usually daily at 5AM)  the  modified
              blocks  in  the disk cache are dumped.  At this time, traffic to
              the file system is halted and the modified blocks are  relabeled
              to  the unwritten portion of the worm.  After the dump, the file
              system traffic is continued and the relabeled blocks are  copied
              to the worm by a background process.

       dump   Each  time  the main file system is dumped, its root is appended
              to a subdirectory of the dump file system.  Since the dump  file
              system  is not mirrored with a disk cache, it is read-only.  The
              name of the newly added root is created from  the  date  of  the
              dump:  /yyyy/mmdds.  Here yyyy is the full year, mm is the month
              number, dd is the day number and s is a sequence number if  more
              than  one dump is done in a day.  For the first dump, s is null.
              For the subsequent dumps s is 1, 2, 3, etc.

              The root of the main file system that is  frozen  on  the  first
              dump of March 1, 1992 will be named /1992/0301/ in the dump file

   Changes from fs(4)
       fs(4)'s IP configuration is ignored  and  the  underlying  system's  is

       Various  other  fs(4) commands have been omitted since they (or equiva‐
       lents) can now be executed directly on the underlying CPU  server,  no‐
       tably date and passwd (see auth/wrkey).

       fs(4)'s  device  names for IDE disks and for Marvell SATA disks are not
       supported; use -m to  map  wren  devices  to  appropriate  names  under

       The file server kernel seems to have scanned PCI buses in reverse order
       from the other Plan 9 kernels, so systems with multiple SCSI cards  may
       find  controller  numbering reversed.  -m can be used to compensate for
       this if you don't want to change filsys declarations.

       The file server kernel's config field in NVRAM was overloaded in recent
       times to hold a secstore(1) key for the CPU hostowner.  Since cwfs runs
       on a CPU kernel, the location of its configuration block must  be  sup‐
       plied on the command line.

       Disk  labels are now implemented for l devices.  At the first access of
       a side, cwfs will attempt to read the label and verify that it has  the
       correct side number and byte order; if either is wrong, it will issue a
       warning.  If the label cannot be read, cwfs will attempt to write a new

       Place the root of the dump file system on /n/dump and show the modified
       times of the MIPS C compiler over all dumps in February, 1992:

              cwfs w0
              9fs dump
              ls -l /n/dump/1992/02??/mips/bin/vc

       To get only one line of output for each version of the compiler:

              ls -lp /n/dump/1992/02??/mips/bin/vc | uniq


       yesterday(1), fs(3), sd(3), fossil(4),  fs(4),  srv(4),  fs(8),  fscon‐
       Sean  Quinlan,  ``A  Cached WORM File System'', Software - Practice and
       Experience, December, 1991
       Ken Thompson, Geoff  Collyer,  ``The  64-bit  Standalone  Plan  9  File

       For  the  moment,  the  file  server  serves both the old (9P1) and new
       (9P2000) versions of 9P, deciding which to serve by sniffing the  first
       packet on each connection.

       File  system block size and disk address size (32- or 64-bit) are fixed
       at compilation time, and this is not easily changed.

       Cwfs is probably not the right choice of file server for new file  sys‐
       tems.   It's  intended  to  cope  with existing file systems on optical
       jukeboxes or images thereof.