.TH OFS 4
.SH NAME
ofs \- mount a file server speaking Op using Styx
.SH SYNOPSIS
.B ofs
[
.B \-Adv
]
[
.B \-C
.I alg
]
[
.B -k
.I keyfile
]
[
.B -m
.I mnt
]
[
.B -c
dir
]
.I netaddr
[
.I path
]
.SH DESCRIPTION
.I Ofs
dials the
.I Op
file server found at
.I addr
and mounts it at
.IR mnt .
Here,
.I addr
may be a file representing a connection, like
.B /fd/0
or any other file.
It speaks both Styx (as a server) and
Op (as a client) and provides a Styx file server
to mount in Inferno file trees served from Op
servers. Usually, the server mounted is
.IR oxport (4),
used to export a name space using Op.
The
.I path
(subtree) served by the Op server is
.B /
by default, but may be supplied as an option.
.PP
This program exists because Op is faster than Styx, regarding
latency, on network links
with bad latency, being the main reason that Op requires
less RPCs than Styx for doing the same thing. However, there
are some issues to be taken into account when using this program
to export devices. See
.IR intro (O)
for a discussion.
.PP
In general, files are retrieved from the server with a single
.IR get (O)
operation. Big files require further RPCs. All writes are indeed
write-through, although those that are not the first
write, and use a full Styx packet, are sent asynchronously
(like in delayed writes).
.PP
If
.I mnt
is given, it mounts itself using flags
.B MREPL
and
.B MCREATE
at the directory named by
.IR mnt .
Otherwise, it uses standard input to serve files speaking Styx (this
is intended for use with
.IR mount (1).
.PP
By default,
.I ofs
authenticates the client when
mounting itself, and encrypts the channel using
.BR RC4 .
Authentication can be disabled with the
.B -A
flag, and the algorithm used to sign/encrypt the channel
may be changed using
.B -C
and supplying the algorithm name in
.I arg
(as said in
.IR ssl (3)).
The key-file used for authentication follows the standard
convention used in Inferno, but may be otherwise specified to
be
.I keyfile
using
.BR -k .
.PP
When the special name
.B auto
is given in
.I mnt
the program reads a system name from the connection, before mounting it,
and uses
.BI /term/ remotename
to automatically mount the remote tree. The system name is read by first reading
9 bytes, which should be a UTF-8 string with 8 digits in printable form and a new line. Then, it
reads so many bytes and takes that string (in UTF-8) to be the remote system name.
.PP
Flag
.B -d
enables (very) verbose debug diagnostics. Trying to access a file named
.B !!DUMP
dumps the internal state of the cache, for debugging.
.PP
Flag
.B -v
makes the program report some protocol statistics before exiting.
.PP
Flag
.B -c
instructs
.B ofs
to use a local, on-disk, cache located at
.I dir
to keep files fetched/update from/to the server. The cache is only used to serve
read requests for files that are not entirely cached on-memory (that is, for files
that are not quite small). The directory structure reflects that of the server. One nice
side-effect of using this cache is that files updated to the server are still kept in the local
disk, should the connection to the server fail.
.SH EXAMPLE
Import (using Op) a remote file tree and mount it at
.BR /n/pc .
.IP
.B "o/ofs tcp!opserver.org!10000 /n/pc
.PP
Import a locally-served file tree using
.I mount
(ie., start
.I Ofs
using standard input as the Styx connection).
.IP
.B "mount -c {o/ofs -C rc4 tcp!127.0.0.1!10000} /n/pc
.PP
Listen for calls from a remote export program, and make
remote trees available at
.B /term/$remotesysname
(encrypting the channel). Where,
.B $remotesysname
is given by the export program at the other end.
.IP
.B "listen -tv 'tcp!*!17004' {
.br
.B " o/ofs -A -d -m auto /fd/0 >[2]/dev/cons&
.br
.B "}
.SH SOURCE
.B /usr/octopus/port/ofs
.SH SEE ALSO
.IR intro (O)
and
.IR oxport (4).
.SH BUGS
May be dangerous. Wait for some time to give us time
to do more testing.
.PP
It does not maintain (yet) a persistent cache of files.
|