sauce catchup

This commit is contained in:
pooka 2006-12-01 15:31:25 +00:00
parent 25e5748c32
commit b98361ea36
2 changed files with 39 additions and 14 deletions

View File

@ -1,4 +1,4 @@
.\" $NetBSD: puffs.3,v 1.6 2006/11/30 05:53:34 pooka Exp $
.\" $NetBSD: puffs.3,v 1.7 2006/12/01 15:31:25 pooka Exp $
.\"
.\" Copyright (c) 2006 Antti Kantee. All rights reserved.
.\"
@ -23,7 +23,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.Dd November 30, 2006
.Dd December 1, 2006
.Dt PUFFS 3
.Os
.Sh NAME
@ -217,7 +217,7 @@ Flags for
can be given via
.Fa pflags .
Currently
.Dv PUFFSFLAG_OPDUMP
.Dv PUFFS_FLAG_OPDUMP
is supported, this dumps each received operation to stdout before handling it.
Finally, the maximum operation buffer length is requested by
.Fa maxreqlen .

View File

@ -1,4 +1,4 @@
.\" $NetBSD: puffs.4,v 1.3 2006/11/19 00:05:42 wiz Exp $
.\" $NetBSD: puffs.4,v 1.4 2006/12/01 15:31:25 pooka Exp $
.\"
.\" Copyright (c) 2006 Antti Kantee. All rights reserved.
.\"
@ -23,7 +23,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.Dd November 17, 2006
.Dd December 1, 2006
.Dt PUFFS 4
.Os
.Sh NAME
@ -69,6 +69,7 @@ struct puffs_args {
unsigned int pa_flags;
size_t pa_maxreqlen;
char pa_name[PUFFSNAMESIZE];
uint8_t pa_vnopmask[PUFFS_VN_MAX];
};
.Ed
.Pp
@ -80,13 +81,13 @@ The
member is the file descriptor number from opening the device node.
.Va pa_flags
controls some operations specific to puffs:
.Bl -tag -width "PUFFSFLAG_ALLOWCTL"
.It Dv PUFFSFLAG_ALLOWCTL
.Bl -tag -width "PUFFS_KFLAG_ALLOWCTL"
.It Dv PUFFS_KFLAG_ALLOWCTL
Allow file system fcntl and ioctl operations.
Allowing these has security implications as the file system can
technically read anything out of a calling processes address space.
This flag may additionally be enforced by the kernel security policy.
.It Dv PUFFSFLAG_NOCACHE
.It Dv PUFFS_KFLAG_NOCACHE
Do not store data in the page cache.
This causes operations to always consult the user server instead of
consulting the page cache.
@ -94,6 +95,10 @@ This makes sense in situations where there is relatively little
bulk data to be transferred and the user server does not want to take
part in complex cache management routines in case the file system data
can be modified through routes other than the file system interface.
.It Dv PUFFS_KFLAG_ALLOPS
Transport all vnode operations to the file system server instead of just
the ones specified by
.Va pa_vnopmask .
.El
.Pp
The
@ -109,14 +114,30 @@ During operation, in case request fetch is attempted with a buffer
too short, the error
.Er E2BIG
will be returned.
The file system type is give in
.Va pa_name .
It will always be prepended by "puffs:" by the kernel.
Finally, the array
.Va pa_vnopmask
specifies which operations are supported by the file system server.
The array is indexed with
.Dv PUFFS_VN_FOO
and 0 means vnode operation
.Dv FOO
is unimplemented while non-zero means an implemented operation.
This array is ignored if
.Dv PUFFS_KFLAG_ALLOPS
is given.
.Pp
After a succesful mount system call, the the ioctl
.Dv PUFFSMOUNTOP
.Dv PUFFSSTARTOP
must be issued through the open device node.
The parameter for this ioctl is the following structure:
.Bd -literal -offset indent
struct puffs_startreq {
void *psr_cookie; fsid_t psr_fsidx; };
void *psr_cookie;
struct statvfs psr_sb;
};
.Ed
.Pp
The member
@ -127,8 +148,9 @@ This signals the cookie value of the root node of the file system
.Xr puffs 3
for more details on cookie strategies).
The value of
.Va psr_fsidx
will be filled by the kernel and should be recorded for future use.
.Va psr_sb
should be filled with the same results as for a regular statvfs
call.
After successfully executing this operation the file system is
active.
.Ss Operation
@ -152,8 +174,10 @@ can be issued to be notified of events.
As the argument both get and push use the following structure:
.Bd -literal -offset indent
struct puffs_req {
uint64_t preq_id; uint8_t preq_opclass;
uint8_t preq_optype; void *preq_cookie;
uint64_t preq_id;
uint8_t preq_opclass;
uint8_t preq_optype;
void *preq_cookie;
int preq_rv;
@ -225,6 +249,7 @@ and this may result in data loss.
.Xr puffs 3 ,
.Xr umount 8
.Sh HISTORY
An unsupported experimental version of
.Nm
first appeared in
.Nx 4.0 .