Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/share/man/man4 Remove extra crud which hasn't been up-to-dat...
details: https://anonhg.NetBSD.org/src/rev/f80e4c46d6e1
branches: trunk
changeset: 749238:f80e4c46d6e1
user: pooka <pooka%NetBSD.org@localhost>
date: Sun Nov 22 18:36:16 2009 +0000
description:
Remove extra crud which hasn't been up-to-date in eons.
diffstat:
share/man/man4/puffs.4 | 237 ++----------------------------------------------
1 files changed, 13 insertions(+), 224 deletions(-)
diffs (272 lines):
diff -r b98035c0cf98 -r f80e4c46d6e1 share/man/man4/puffs.4
--- a/share/man/man4/puffs.4 Sun Nov 22 18:14:49 2009 +0000
+++ b/share/man/man4/puffs.4 Sun Nov 22 18:36:16 2009 +0000
@@ -1,6 +1,6 @@
-.\" $NetBSD: puffs.4,v 1.9 2009/11/22 18:02:22 mbalmer Exp $
+.\" $NetBSD: puffs.4,v 1.10 2009/11/22 18:36:16 pooka Exp $
.\"
-.\" Copyright (c) 2006 Antti Kantee. All rights reserved.
+.\" Copyright (c) 2009 Antti Kantee. All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
@@ -23,7 +23,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.Dd December 1, 2006
+.Dd November 22, 2009
.Dt PUFFS 4
.Os
.Sh NAME
@@ -33,240 +33,29 @@
.Cd "file-system PUFFS"
.Cd "pseudo-device putter"
.Sh DESCRIPTION
-.Em THIS DOCUMENT IS HOPELESSLY OUT OF DATE .
-While some parts are still valid, please refer to the source
-code for current reality.
-.Pp
-.Em IMPORTANT NOTE!
-This document describes interfaces which are not yet guaranteed to be
-stable.
-In case you update your system sources, please recompile everything
-and fix compilation errors.
-If your sources are out-of-sync, incorrect operation may result.
-.Pp
.Nm
provides a framework for creating file systems as userspace servers.
The in-kernel VFS attachment is controlled through a special device
node,
.Pa /dev/puffs .
-This document describes the operations on the device.
-People looking to implement file systems should prefer using the
+People looking to implement file systems should use the
system through the convenience library described in
.Xr puffs 3 .
-Users wanting to access the device node directly should include
-the header
-.Pa sys/fs/puffs/puffs_msgif.h
-for relevant definitions.
-.Ss Mounting
-The
+.Ss Termination
+A
.Nm
-device node should be opened once per file system instance (i.e. mount).
-The device itself is a cloning node, so the same node can be opened
-a practically unlimited number of times.
-Once the device is open, the file system can be mounted the normal
-way using the
-.Xr mount 2
-system call and using the argument structure to control mount options:
-.Bd -literal -offset indent
-struct puffs_args {
- int pa_vers;
- int pa_fd;
- unsigned int pa_flags;
- size_t pa_maxreqlen;
- char pa_name[PUFFSNAMESIZE];
- uint8_t pa_vnopmask[PUFFS_VN_MAX];
-};
-.Ed
-.Pp
-The member
-.Va pa_vers
-is currently always 0 and ignored.
-The
-.Va pa_fd
-member is the file descriptor number from opening the device node.
-.Va pa_flags
-controls some operations specific to puffs:
-.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 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.
-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
-.Va pa_maxreqlen
-member signifies the length of the incoming data buffer in userspace.
-A good value is
-.Dv PUFFS_REQ_MAXSIZE ,
-which is the maximum the kernel will use.
-A minimum value is also enforced, so the value of this field should
-be checked after the mount operation to determine the correct buffer
-size.
-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 successful mount system call, the ioctl
-.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;
- struct statvfs psr_sb;
-};
-.Ed
-.Pp
-The member
-.Va psr_cookie
-should be set before calling.
-This signals the cookie value of the root node of the file system
-(see
+file system can be unmounted regularly using
+.Xr umount 8 .
+The file system will automatically be unmounted in case the userspace
+server is killed or the control file descriptor closed.
+.Sh SEE ALSO
.Xr puffs 3
-for more details on cookie strategies).
-The value of
-.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
-Operations must be queried from the kernel using the ioctl
-.Dv PUFFSGETOP ,
-processed, and the results pushed back to the kernel using
-.Dv PUFFSPUTOP .
-Normally the system will block until an event is available for
-.Dv PUFFSGETOP ,
-but it is possible to set the file descriptor into non-blocking
-mode, in which case
-.Er EWOULDBLOCK
-is returned if no event is available.
-Asynchronous I/O calls (i.e.,
-.Xr select 2 ,
-.Xr poll 2 ,
-and
-.Xr kevent 2 )
-can be issued to be notified of events.
-.Pp
-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;
-
- int preq_rv;
-
- void *preq_aux;
- size_t preq_auxlen;
-};
-.Ed
-.Pp
-The member
-.Va preq_id
-is used as an identifier in the reply.
-It should not be modified during the processing of a
-.Dv PUFFSGETOP -
-.Dv PUFFSPUTOP
-sequence.
-The members
-.Va preq_opclass
-and
-.Va preq_optype
-identify the request; they also are used for typing the data
-pointed to by
-.Va preq_aux .
-Currently the mapping between these two is only documented in
-code in
-.Pa src/lib/libpuffs/puff.c:puffcall() .
-The handling of this will very likely change in the future towards
-a more automatic direction.
-The length of the buffer given to
-.Dv PUFFSGETOP
-is described by
-.Va preq_auxlen
-and will be modified by the kernel to indicate how much data
-actually was transmitted.
-This is for the benefit of calls such as write, which transmit a
-variable amount of data.
-Similarly, the user server should fill in the amount of data the
-kernel must copy for
-.Dv PUFFSPUTOP ;
-most of the time this will be constant for a given operation, but
-operations such as read want to adjust it dynamically.
-Finally,
-.Va preq_rv
-is used by the userspace server to fill in the success value of the
-operation in question.
-.Pp
-In case the macro
-.Fn PUFFSOP_WANTREPLY
-returns false for
-.Va preq_opclass ,
-a return value is not wanted and
-.Dv PUFFSPUTOP
-should not be issued.
-.Pp
-Additionally, an operation of type
-.Dv PUFFSSIZEOP
-is supported, but it is only used by the ioctl and fcntl operations
-and will likely go away in the future.
-It is not described here.
-.Ss Termination
-The file system can be unmounted regularly using
-.Xr umount 8 .
-It will automatically be unmounted in case the userspace server is
-killed or the control file descriptor closed, but in this case the
-userspace server will not be separately requested to unmount itself
-and this may result in data loss.
-.Sh SEE ALSO
-.Xr ioctl 2 ,
-.Xr mount 2 ,
-.Xr puffs 3 ,
-.Xr umount 8
-.Rs
-.%A Antti Kantee
-.%D March 2007
-.%J Proceedings of AsiaBSDCon 2007
-.%P pp. 29-42
-.%T puffs - Pass-to-Userspace Framework File System
-.Re
.Sh HISTORY
An unsupported experimental version of
.Nm
first appeared in
.Nx 4.0 .
+A stable version appeared in
+.Nx 5.0 .
.Sh AUTHORS
.An Antti Kantee Aq pooka%iki.fi@localhost
-.Sh BUGS
-.Nm
-is currently more like a souffle than puff pastry.
Home |
Main Index |
Thread Index |
Old Index