| History log of /src/sys/fs/puffs/puffs_msgif.h |
| Revision | | Date | Author | Comments |
| 1.87 |
| 03-Dec-2021 |
pho | Avoid using register_t in <fs/puffs/puffs_msgif.h>
The purpose of this header file is to interface between the kernel-space and user-space, and is #include'd by a user-space header <puffs.h>. It should therefore not use any of kernel-only types, as it's not reasonable to require user-land filesystems to #define _KERNTYPES.
|
| 1.86 |
| 08-Mar-2021 |
christos | give names to the enums so we can cast by name for lint
|
| 1.85 |
| 23-Sep-2019 |
christos | branches: 1.85.8; Restore binary compatibility by using the statvfs90 structure internally.
|
| 1.84 |
| 15-Feb-2015 |
manu | branches: 1.84.18; Add PUFFS_KFLAG_NOFLUSH_META to prevent sending metadata flush to FUSE
FUSE filesystems do not expect to get metadata updates for [amc]time and size, they updates the value on their own after operations.
The PUFFS PUFFS_KFLAG_NOFLUSH_META option prevents regular metadata cache flushes to the filesystem , and libperfuse uses it to match Linux FUSE behavior.
While there, fix a bug in SETATTR: do not update kernel metadata cache from SETATTR reply when the request is asynchronous, as we do not have the reply yet.
|
| 1.83 |
| 31-Oct-2014 |
manu | branches: 1.83.2; Add PUFFS_HAVE_FALLOCATE in puffs_msgif.h so that filesystem can decide at build time wether fallocate is usable
|
| 1.82 |
| 31-Oct-2014 |
manu | Add PUFFS support for fallocate and fdiscard operations
|
| 1.81 |
| 16-Aug-2014 |
manu | Add a oflags input field to open requests so that the filesystem can pass back information about the file. Implement PUFFS_OPEN_IO_DIRECT, which will force direct IO (bypassing page cache) for the file.
|
| 1.80 |
| 10-Aug-2012 |
manu | branches: 1.80.2; 1.80.14; Add PUFFS_KFLAG_CACHE_DOTDOT so that vnodes hold a reference on their parent, keeping them active, and allowing to lookup .. without sending a request to the filesystem.
Enable the featuure for perfused, as this is how FUSE works.
|
| 1.79 |
| 21-Jul-2012 |
manu | - Improve PUFFS_KFLAG_CACHE_FS_TTL by reclaiming older inactive nodes.
The normal kernel behavior is to retain inactive nodes in the freelist until it runs out of vnodes. This has some merit for local filesystems, where the cost of an allocation is about the same as the cost of a lookup. But that situation is not true for distributed filesystems. On the other hand, keeping inactive nodes for a long time hold memory in the file server process, and when the kernel runs out of vnodes, it produce reclaim avalanches that increase lattency for other operations.
We do not reclaim inactive vnodes immediatly either, as they may be looked up again shortly. Instead we introduce a grace time and we reclaim nodes that have been inactive beyond the grace time.
- Fix lookup/reclaim race condition.
The above improvement undercovered a race condition between lookup and reclaim. If we reclaimed a vnode associated with a userland cookie while a lookup returning that same cookiewas inprogress, then the kernel ends up with a vnode associated with a cookie that has been reclaimed in userland. Next operation on the cookie will crash (or at least confuse) the filesystem.
We fix this by introducing a lookup count in kernel and userland. On reclaim, the kernel sends the count, which enable userland to detect situation where it initiated a lookup that is not completed in kernel. In such a situation, the reclaim must be ignored, as the node is about to be looked up again.
|
| 1.78 |
| 08-Apr-2012 |
manu | Add name and atttribute cache with filesytem provided TTL. lookup, create, mknod, mkdir, symlink, getattr and setattr messages have been extended so that attributes and their TTL can be provided by the filesytem. lookup, create, mknod, mkdir, and symlink messages are also extended so that the filesystem can provide name TTL.
|
| 1.77 |
| 27-Sep-2011 |
christos | branches: 1.77.2; 1.77.6; 1.77.8; don't get affected by the NAME_MAX bump. Use the same constant as the rest of the extrattr code.
|
| 1.76 |
| 04-Jul-2011 |
manu | Add a flag to VOP_LISTEXTATTR(9) so that the vnode interface can tell the filesystem in which format extended attribute shall be listed.
There are currently two formats: - NUL-terminated strings, used for listxattr(2), this is the default. - one byte length-pprefixed, non NUL-terminated strings, used for extattr_list_file(2), which is obtanined by setting the EXTATTR_LIST_PREFIXLEN flag to VOP_LISTEXTATTR(9)
This approach avoid the need for converting the list back and forth, except in libperfuse, since FUSE uses NUL-terminated strings, and the kernel may have requested EXTATTR_LIST_PREFIXLEN.
|
| 1.75 |
| 06-Jul-2010 |
pooka | Add compat to enable running puffs in a 64bit time_t kernel against a server which runs in 32bit time_t namespace.
|
| 1.74 |
| 07-Jun-2010 |
pooka | Make retval argument for pathconf a register_t to match VOP_PATHCONF. This makes the size the same on 64bit archs. Don't bother bumping any version, since you'd have explicitly had to jump through some hoops to use pathconf before.
|
| 1.73 |
| 21-May-2010 |
pooka | add option string for no attribute cache (foreseeing the odd event I might actually implement one some day)
|
| 1.72 |
| 21-May-2010 |
pooka | Since libpuffs needs a major bump for extattr support anyway, make some changes to the user-kernel protocol. Namely, try to be a little more resilient some future changes.
|
| 1.71 |
| 21-May-2010 |
pooka | Support extended attributes.
|
| 1.70 |
| 20-May-2010 |
pooka | Fix typo.
|
| 1.69 |
| 07-Jan-2010 |
pooka | branches: 1.69.2; 1.69.4; Add a PUFFS_UNMOUNT server->kernel request, which causes the kernel to initiate self destruct, i.e. unmount(MNT_FORCE). This, however, is a semi-controlled self-destruct, since all caches are flushed before the (possibly) violent unmount takes place.
|
| 1.68 |
| 17-Oct-2009 |
pooka | Bump protocol version once more to allow for previous to be pulled to netbsd-5 (protocols are not compatible due to time_t/dev_t change).
|
| 1.67 |
| 17-Oct-2009 |
pooka | Transmit VOP_ABORTOP() to the server.
|
| 1.66 |
| 12-Jan-2009 |
pooka | Bump interface version number for the time_t/dev_t changes.
|
| 1.65 |
| 28-Jan-2008 |
pooka | branches: 1.65.6; 1.65.10; 1.65.18; 1.65.20; 1.65.26; For code clarity typedef void *puffs_cookie_t.
No functional change.
|
| 1.64 |
| 08-Dec-2007 |
pooka | Now that "l" is gone both as an argument to operations and from componentname, remove all vestiges of puffs_cid.
|
| 1.63 |
| 05-Dec-2007 |
pooka | Send a response message for flush operations from the kernel instead of abusing the return value of write(2).
|
| 1.62 |
| 04-Dec-2007 |
pooka | Add a bit to differentiate if a message is a request or a response.
|
| 1.61 |
| 27-Nov-2007 |
pooka | branches: 1.61.2; Remove "puffs_cid" from the puffs interface following l-removal from the kernel vfs interfaces. puffs_cc_getcaller(pcc) can be used now should the same information be desired.
|
| 1.60 |
| 12-Nov-2007 |
pooka | * split the putter header into a kernel version and a userland version + install latter to /usr/include/dev/putter * remove last dependencies to puffs from putter, it's completely independent now
|
| 1.59 |
| 21-Oct-2007 |
pooka | branches: 1.59.2; Always provide caller information from the kernel based on curlwp. (but don't deprecate the old puffs_cid interface just yet)
|
| 1.58 |
| 19-Oct-2007 |
pooka | When doing a read operation, don't copy the whole kernel buffer to userspace, since it doesn't contain any information yet. I should still rework this more so this is just a quickie to get the read/write style interface more up to speed with the ioctl version.
|
| 1.57 |
| 11-Oct-2007 |
pooka | branches: 1.57.2; g/c garbage
|
| 1.56 |
| 11-Oct-2007 |
pooka | Part 1/n of some pretty extensive changes to how the kernel module interacts with the userspace file server:
* since the kernel-user communication is not purely request-response anymore (hasn't been since 2006), try to rename some "request" to "message". more similar mangling will take place in the future.
* completely rework how messages are allocated. previously most of them were borrowed from the stack (originally *all* of them), but now always allocate dynamically. this makes the structure of the code much cleaner. also makes it possible to fix a locking order violation. it enables plenty of future enhancements.
* start generalizing the transport interface to be independent of puffs
* move transport interface to read/write instead of ioctl. the old one had legacy design problems, and besides, ioctl's suck. implement a very generic version for now; this will be worked on later hopefully some day reaching "highly optimized".
* implement libpuffs support behind existing library request interfaces. this will change eventually (I hate those interfaces)
|
| 1.55 |
| 04-Oct-2007 |
pooka | g/c the "sizeop" code previous used for ioctl/fcntl. It was already commented out and has bitrotted beyond all recognition, so it needs complete rethinking.
|
| 1.54 |
| 02-Oct-2007 |
pooka | If kernel resource allocation fails after the file server has committed something, issue an abort. The abort is done through the regular op channel, e.g. failed mkdir leads to regular rmdir, inactive and reclaim. No internal interface is planned currently for the one file system out of a million which would implement it to benefit from the one case in a billion where kernel resource allocation actually does fail and out of that one case in a trillion where internal vs. external would make a difference.
|
| 1.53 |
| 01-Oct-2007 |
pooka | * better error checking: validate error values received from userland to be vaild errno values * include string describing error in PUFFS_ERR * get rid of union in puffs_req, it's nothing but trouble * pass pmp to async i/o callbacks
|
| 1.52 |
| 27-Sep-2007 |
pooka | nuke trailing , from enum. spotted by xtraeme
|
| 1.51 |
| 27-Sep-2007 |
pooka | Add error notifications, which are used to deliver errors from the kernel to the file server for silly things the file server did, e.g. attempting to create a file with size VSIZENOTSET. The file server can handle these as it chooses, but the default action is for it to throw its hands in the air and sing "goodbye, cruel world, it's over, walk on by".
|
| 1.50 |
| 23-Aug-2007 |
pooka | branches: 1.50.2; 1.50.4; Add a third type of fh option, passthrough, where the kernel does not attempt to handle struct fid at all and passes it as such to userspace.
|
| 1.49 |
| 22-Aug-2007 |
pooka | Mimic namei structure changes for puffs. bump both kernel & lib version.
|
| 1.48 |
| 15-Aug-2007 |
pooka | Nuke PUFFSLOOKUP_FOO and move to NAMEI_FOO
|
| 1.47 |
| 30-Jul-2007 |
pooka | branches: 1.47.4; 1.47.6; Move PUFFS_TYPEPREFIX to puffs_msgif.h since it's used in a macro there.
|
| 1.46 |
| 27-Jul-2007 |
pooka | include <uvm/uvm_prot.h>
|
| 1.45 |
| 27-Jul-2007 |
pooka | Change unused fflags parameter in VOP_MMAP to prot and pass in desired vm protection.
|
| 1.44 |
| 19-Jul-2007 |
pooka | define PUFFSREQSIZEOP ioctl, which can be used to fetch the maximum request size
|
| 1.43 |
| 18-Jul-2007 |
pooka | kill MFSNAMELEN limit
|
| 1.42 |
| 17-Jul-2007 |
pooka | branches: 1.42.2; Set a file server supplied file system type in the type field and set the mntfromname to be the place mounted from instead of the type.
|
| 1.41 |
| 16-Jul-2007 |
pooka | 1|2 is more correct when it's 3 instead of 2. This makes calls to the file server inactive less over-eagerly executed and masks some problems with the new mounting style. Effectively, it makes some file systems such as psshfs mountable again (only without -o allops).
|
| 1.40 |
| 02-Jul-2007 |
pooka | support turning REQUIREDIR off and extra consume in lookup
|
| 1.39 |
| 02-Jul-2007 |
pooka | Get rid of the "int *refs" parameter to inactive: the same can be accomplished now with puffs_setbacks.
|
| 1.38 |
| 01-Jul-2007 |
pooka | Give the file server to ability to request the entire pathname buffer under lookup by using PUFFS_KFLAG_LOOKUP_FULLPNBUF instead just the current component.
|
| 1.37 |
| 01-Jul-2007 |
pooka | Instead of supplying a plain pid, supply an abstract struct puffs_cid *, which can currently be used to query the pid and lwpid.
|
| 1.36 |
| 01-Jul-2007 |
pooka | make puffs_cred an opaque type
|
| 1.35 |
| 24-Jun-2007 |
pooka | Actually, keep PUFFS_KFLAG_NOCACHE and -o cache around as shorthand to neither page- nor namecache.
|
| 1.34 |
| 24-Jun-2007 |
pooka | Split the NOCACHE option in twain: NOCACHE_NAME & NOCACHE_PAGE.
|
| 1.33 |
| 06-Jun-2007 |
pooka | Move puffs to a two clause license where it already isn't so. And as agc pointed out, even files with the third clause were already effectively two clause because of a slight bug in the language...
|
| 1.32 |
| 18-May-2007 |
pooka | Introduce noref setbacks, which the file server can use to signal the kernel it has 0 references to the node in question. In other words, this can be used to avoid inactive(), or, if the file server does not implement inactive, prompt reclaim for removed nodes.
|
| 1.31 |
| 18-May-2007 |
pooka | Support VOP_POLL. This requires some acrobatics on the puffs_node, as we give a reference to userspace for the puffs_node for the duration of the poll call. So reference count puffs_node separately from the parent vnode. vref()/vrele() is not possible due to a possible surprise visit from VOP_INACTIVE.
|
| 1.30 |
| 17-May-2007 |
pooka | Make it possible for the file server to specify the root vnode type and other information instead of always using VDIR. To make this possible without races, require all root node information already in puffs_mount() and nuke puffs_start2() and the associated start operation completely.
requested/inspired by Tobias Nygren
|
| 1.29 |
| 07-May-2007 |
pooka | Introduce puffs "setbacks", which can be used to set certain flags for nodes upon return from the userspace. Currently it can be used to indicate that the file server should be notified of "inactive" in case the file server has opted to not receive inactive every time the reference count for a vnode drops to zero. (inactive is a common event, almost never requires any action and must be executed sychronously, so it is wasteful).
While doing this, cleanup the release-relock nonsense from the vntouser*() arguments. It was never enabled and the whole LOCKEDVP() concept was very broken to begin with.
|
| 1.28 |
| 22-Apr-2007 |
pooka | define PUFFS_KFLAG_WTCACHE, which makes the page cache write-through
|
| 1.27 |
| 16-Apr-2007 |
pooka | Give the file server the ability to specify the file handle length instead of defining a static length file handle on the framework-level.
|
| 1.26 |
| 13-Apr-2007 |
pooka | Allow file servers to request the number of hash cookie buckets for pnode -> vnode reverse lookup.
|
| 1.25 |
| 13-Apr-2007 |
pooka | * add fhlen to kernel argument structure * rename it to puffs_kargs instead of puffs_args
|
| 1.24 |
| 11-Apr-2007 |
pooka | * support VFS_FHTOVP and VFS_VPTOFH * support cookies in for VOP_READDIR
nfs exporting puffs file systems works now
|
| 1.23 |
| 06-Apr-2007 |
pooka | actually, we don't need a separate op for flushing the whole page cache of a node, just use the range op with endoff = 0
|
| 1.22 |
| 29-Mar-2007 |
pooka | Convert spinlocks & sleep/wakeup to newlock2 locking stuff. Fix a bunch of bugs.
* park structures are now always allocated from a pool instead of a mixed stack/malloc allocation * get rid of the whole adjbuf concept, always just alloc the maximal amount of memory to satisfy a request * little regression: don't allow interrupting wait from file system to userspace; this had problems already before, but now the problems really started to shine through. I'll try to make this work again some day. * fix bmap to return a sensible value in runp
|
| 1.21 |
| 20-Mar-2007 |
pooka | export puffs version of namei ISLASTCN macro to userspace
|
| 1.20 |
| 20-Mar-2007 |
pooka | * rework the page cache interaction a bit: cache metadata in the kernel and flush it out all at once instead of continuous updating * add support for delivering notifications to the file server about when a page was written to (but disabled by default for now). the file server can use this to request flushing or invalidating the kernel page cache
|
| 1.19 |
| 26-Jan-2007 |
pooka | branches: 1.19.2; 1.19.6; 1.19.8; 1.19.10; Initial attempt at suspend/snapshot support for userspace file servers. This is still pretty much on the level "if it breaks ...". It should work for single-threaded servers which handle one operation from start to finish in one go. Also, it does not yet totally correctly synchronize metadata and data in some cases. So needless to say, it needs improvement, but it is possible that will have to wait for some lock revampage.
|
| 1.18 |
| 16-Jan-2007 |
pooka | g/c revoke msg structure
|
| 1.17 |
| 09-Jan-2007 |
pooka | comment out flushmulti for now, it's not done and kdump will complain as mjf noted
|
| 1.16 |
| 09-Jan-2007 |
pooka | Introduce flush operations, which the fs server can use to control kernel caching. Currently supported are only flushing the name cache for a directory or flushing the name cache for the entire fs.
Also, get rid of PNODE_INACTIVE status, since it was racy and essentially didn't work. All this on top of being useless in the first place ....
|
| 1.15 |
| 07-Jan-2007 |
pooka | vfs sync, flushes regular file data only (user server can take care of flushing any metadata it might have hidden away)
|
| 1.14 |
| 02-Jan-2007 |
pooka | * check userspace version and prevent incompatible mount * some general maintenance
|
| 1.13 |
| 29-Dec-2006 |
pooka | branches: 1.13.2; rename the kernel-provided componentname to puffs_kcn; libpuffs now provides puffs_cn built on top of it
|
| 1.12 |
| 07-Dec-2006 |
pooka | branches: 1.12.2; let implementation ultimately decide if mmap is supported - pass VOP_MMAP to fs server
|
| 1.11 |
| 05-Dec-2006 |
pooka | Allow multiple requests to be transferred in each GET/PUTOP. For a single request, the performance is still the same.
|
| 1.10 |
| 01-Dec-2006 |
pooka | prefix kernel flags with PUFFS_KFLAG to have a separate namespace from the library flags
|
| 1.9 |
| 01-Dec-2006 |
pooka | don't call the fs server for all operations, only those it has told us that it implements
|
| 1.8 |
| 18-Nov-2006 |
pooka | branches: 1.8.2; Require statvfs info from startreq so that we have that info available. Also, don't pass fsid to userspace and just fill it in the kernel.
|
| 1.7 |
| 17-Nov-2006 |
pooka | Introduce uncached operation, makes sense when the file system backend can be modified from elsewhere than the file system interface
|
| 1.6 |
| 09-Nov-2006 |
pooka | few renames to better differentiate between mount & start.. plus some other renaming
|
| 1.5 |
| 07-Nov-2006 |
pooka | attach to genfs & support page cache. most noticeable effect is mmap and therefore execution of binaries starting to work, some speed improvements with large file I/O also. caching semantics and error case handling most likely need revisiting.
|
| 1.4 |
| 26-Oct-2006 |
pooka | support specfs
|
| 1.3 |
| 25-Oct-2006 |
pooka | pass VOP_INACTIVE() to userspace
|
| 1.2 |
| 23-Oct-2006 |
pooka | bump the reqstruct minsize to something more believable (but I should really fix this, still)
|
| 1.1 |
| 22-Oct-2006 |
pooka | kernel portion of puffs - the Pass-to-Userspace Framework File System. It contains the VFS attachment and userspace message-passing interface.
This work was initially started and completed for Google SoC 2005 and tweaked to work a bit better in the past few weeks. While being far from complete, it is functional enough to be able and stable to host a fairly general-purpose in-memory file system in userspace. Even so, puffs should be considered experimental and no binary compatibility for interfaces or crash-freedom or zero security implications should be relied upon just yet.
The GSoC project was mentored by William Studenmund and the final review for the code was done by Christos.
|
| 1.8.2.4 |
| 01-Feb-2007 |
ad | Sync with head.
|
| 1.8.2.3 |
| 12-Jan-2007 |
ad | Sync with head.
|
| 1.8.2.2 |
| 18-Nov-2006 |
ad | Sync with head.
|
| 1.8.2.1 |
| 18-Nov-2006 |
ad | file puffs_msgif.h was added on branch newlock2 on 2006-11-18 21:39:20 +0000
|
| 1.12.2.2 |
| 10-Dec-2006 |
yamt | sync with head.
|
| 1.12.2.1 |
| 07-Dec-2006 |
yamt | file puffs_msgif.h was added on branch yamt-splraiseipl on 2006-12-10 07:18:38 +0000
|
| 1.13.2.9 |
| 04-Feb-2008 |
yamt | sync with head.
|
| 1.13.2.8 |
| 21-Jan-2008 |
yamt | sync with head
|
| 1.13.2.7 |
| 07-Dec-2007 |
yamt | sync with head
|
| 1.13.2.6 |
| 15-Nov-2007 |
yamt | sync with head.
|
| 1.13.2.5 |
| 27-Oct-2007 |
yamt | sync with head.
|
| 1.13.2.4 |
| 03-Sep-2007 |
yamt | sync with head.
|
| 1.13.2.3 |
| 26-Feb-2007 |
yamt | sync with head.
|
| 1.13.2.2 |
| 30-Dec-2006 |
yamt | sync with head.
|
| 1.13.2.1 |
| 29-Dec-2006 |
yamt | file puffs_msgif.h was added on branch yamt-lazymbuf on 2006-12-30 20:50:00 +0000
|
| 1.19.10.1 |
| 29-Mar-2007 |
reinoud | Pullup to -current
|
| 1.19.8.1 |
| 11-Jul-2007 |
mjf | Sync with head.
|
| 1.19.6.7 |
| 12-Oct-2007 |
ad | Sync with head.
|
| 1.19.6.6 |
| 09-Oct-2007 |
ad | Sync with head.
|
| 1.19.6.5 |
| 20-Aug-2007 |
ad | Sync with HEAD.
|
| 1.19.6.4 |
| 15-Jul-2007 |
ad | Sync with head.
|
| 1.19.6.3 |
| 09-Jun-2007 |
ad | Sync with head.
|
| 1.19.6.2 |
| 08-Jun-2007 |
ad | Sync with head.
|
| 1.19.6.1 |
| 10-Apr-2007 |
ad | Sync with head.
|
| 1.19.2.4 |
| 17-May-2007 |
yamt | sync with head.
|
| 1.19.2.3 |
| 07-May-2007 |
yamt | sync with head.
|
| 1.19.2.2 |
| 15-Apr-2007 |
yamt | sync with head.
|
| 1.19.2.1 |
| 24-Mar-2007 |
yamt | sync with head.
|
| 1.42.2.2 |
| 03-Sep-2007 |
skrll | Sync with HEAD.
|
| 1.42.2.1 |
| 15-Aug-2007 |
skrll | Sync with HEAD.
|
| 1.47.6.2 |
| 30-Jul-2007 |
pooka | Move PUFFS_TYPEPREFIX to puffs_msgif.h since it's used in a macro there.
|
| 1.47.6.1 |
| 30-Jul-2007 |
pooka | file puffs_msgif.h was added on branch matt-mips64 on 2007-07-30 09:04:59 +0000
|
| 1.47.4.8 |
| 09-Dec-2007 |
jmcneill | Sync with HEAD.
|
| 1.47.4.7 |
| 27-Nov-2007 |
joerg | Sync with HEAD. amd64 Xen support needs testing.
|
| 1.47.4.6 |
| 14-Nov-2007 |
joerg | Sync with HEAD.
|
| 1.47.4.5 |
| 26-Oct-2007 |
joerg | Sync with HEAD.
Follow the merge of pmap.c on i386 and amd64 and move pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup code to restore CR4 before jumping back into kernel space as the large page option might cover that.
|
| 1.47.4.4 |
| 07-Oct-2007 |
joerg | Sync with HEAD.
|
| 1.47.4.3 |
| 02-Oct-2007 |
joerg | Sync with HEAD.
|
| 1.47.4.2 |
| 03-Sep-2007 |
jmcneill | Sync with HEAD.
|
| 1.47.4.1 |
| 16-Aug-2007 |
jmcneill | Sync with HEAD.
|
| 1.50.4.2 |
| 14-Oct-2007 |
yamt | sync with head.
|
| 1.50.4.1 |
| 06-Oct-2007 |
yamt | sync with head.
|
| 1.50.2.3 |
| 23-Mar-2008 |
matt | sync with HEAD
|
| 1.50.2.2 |
| 09-Jan-2008 |
matt | sync with HEAD
|
| 1.50.2.1 |
| 06-Nov-2007 |
matt | sync with HEAD
|
| 1.57.2.2 |
| 13-Nov-2007 |
bouyer | Sync with HEAD
|
| 1.57.2.1 |
| 25-Oct-2007 |
bouyer | Sync with HEAD.
|
| 1.59.2.4 |
| 18-Feb-2008 |
mjf | Sync with HEAD.
|
| 1.59.2.3 |
| 27-Dec-2007 |
mjf | Sync with HEAD.
|
| 1.59.2.2 |
| 08-Dec-2007 |
mjf | Sync with HEAD.
|
| 1.59.2.1 |
| 19-Nov-2007 |
mjf | Sync with HEAD.
|
| 1.61.2.2 |
| 26-Dec-2007 |
ad | Sync with head.
|
| 1.61.2.1 |
| 08-Dec-2007 |
ad | Sync with head.
|
| 1.65.26.1 |
| 21-Apr-2010 |
matt | sync to netbsd-5
|
| 1.65.20.3 |
| 17-Jul-2011 |
riz | Pull up following revision(s) (requested by manu in ticket #1645): lib/libc/sys/Makefile.inc 1.207 via patch lib/libc/sys/extattr_get_file.2 patch lib/libpuffs/dispatcher.c 1.34,1.36 via patch lib/libpuffs/puffs.c 1.107 via patch lib/libpuffs/puffs.h 1.115,1.118 via patch sys/fs/puffs/puffs_msgif.h 1.71,1.76 via patch sys/fs/puffs/puffs_vfsops.c 1.88 via patch sys/fs/puffs/puffs_vnops.c 1.145,1.154 via patch sys/kern/vfs_xattr.c 1.24-1.27 via patch sys/kern/vnode_if.c 1.87 via patch sys/sys/Makefile 1.133 via patch sys/sys/extattr.h 1.6 via patch sys/sys/vnode_if.h 1.81 via patch sys/ufs/ffs/ffs_vnops.c patch sys/ufs/ufs/ufs_extattr.c 1.31,1.34 via patch
* support extended attributes * bump major due to structure growth * add some spare space * remove ABI sillyness Support extended attributes. Fix multiple non compliances in our Linux-like extattr API, and make it public so that it can be used. Improve a bit listxattr(2). It attemps to list both system and user extended attributes, and it faled if calling user did not have privilege for reading system EA. Now we just lise user EA and skip system EA in reading them is not allowed. Fix bug introduced in previous commuit: Do not vrele() a vnode we did not obtained. Improve UFS1 extended attributes usability - autocreate attribute backing file for new attributes - autoload attributes when issuing extattrctl start - when autoloading attributes, do not display garbage warning when looking up entries that got ENOENT Add a flag to VOP_LISTEXTATTR(9) so that the vnode interface can tell the filesystem in which format extended attribute shall be listed. There are currently two formats: - NUL-terminated strings, used for listxattr(2), this is the default. - one byte length-pprefixed, non NUL-terminated strings, used for extattr_list_file(2), which is obtanined by setting the EXTATTR_LIST_PREFIXLEN flag to VOP_LISTEXTATTR(9) This approach avoid the need for converting the list back and forth, except in libperfuse, since FUSE uses NUL-terminated strings, and the kernel may have requested EXTATTR_LIST_PREFIXLEN.
|
| 1.65.20.2 |
| 14-Dec-2009 |
sborrill | Revert previous version bump which should not have been in the supplied patch. This maintains compatibility between 5.0 and 5.1 (at the cost of needing userland libraries recompiled if one's been tracking netbsd-5).
|
| 1.65.20.1 |
| 18-Oct-2009 |
sborrill | Pull up the following revisions(s) (requested by pooka in ticket #1100): lib/libpuffs/dispatcher.c: revision 1.33 lib/libpuffs/puffs.c: revision 1.99 lib/libpuffs/puffs.h: revision 1.111 sys/fs/puffs/puffs_msgif.h: revision 1.67 via patch sys/fs/puffs/puffs_vnops.c: revision 1.136
Support VOP_ABORTOP() in puffs.
|
| 1.65.18.1 |
| 19-Jan-2009 |
skrll | Sync with HEAD.
|
| 1.65.10.3 |
| 11-Aug-2010 |
yamt | sync with head.
|
| 1.65.10.2 |
| 11-Mar-2010 |
yamt | sync with head
|
| 1.65.10.1 |
| 04-May-2009 |
yamt | sync with head.
|
| 1.65.6.1 |
| 17-Jan-2009 |
mjf | Sync with HEAD.
|
| 1.69.4.3 |
| 05-Mar-2011 |
rmind | sync with head
|
| 1.69.4.2 |
| 03-Jul-2010 |
rmind | sync with head
|
| 1.69.4.1 |
| 30-May-2010 |
rmind | sync with head
|
| 1.69.2.1 |
| 17-Aug-2010 |
uebayasi | Sync with HEAD.
|
| 1.77.8.4 |
| 27-Feb-2015 |
martin | Pull up following revision(s) (requested by manu in ticket #1260): lib/libpuffs/puffs.3: revision 1,55,1.60 sys/fs/puffs/puffs_msgif.h: revision 1.84 lib/libperfuse/ops.c: revision 1.83 sys/fs/puffs/puffs_sys.h: revision 1.89 sys/fs/puffs/puffs_vfsops.c: revision 1.116 lib/libperfuse/perfuse.c: revision 1.36 sys/fs/puffs/puffs_vnops.c: revision 1.200-1.202
Use more markup. New sentence, new line. Bump date for previous.
Add PUFFS_KFLAG_NOFLUSH_META to prevent sending metadata flush to FUSE FUSE filesystems do not expect to get metadata updates for [amc]time and size, they updates the value on their own after operations.
The PUFFS PUFFS_KFLAG_NOFLUSH_META option prevents regular metadata cache flushes to the filesystem , and libperfuse uses it to match Linux FUSE behavior.
While there, fix a bug in SETATTR: do not update kernel metadata cache from SETATTR reply when the request is asynchronous, as we do not have the reply yet.
Update file size after write without metadata flush If we do not use metadata flush, we must make sure the size is updated in the filesystem after a write, otherwise the next GETATTR will get us a stale value and the file will be truncated.
|
| 1.77.8.3 |
| 03-Nov-2014 |
msaitoh | Pull up following revision(s) (requested by manu in ticket #1140): lib/libperfuse/ops.c 1.63-1.69 lib/libperfuse/perfuse.c 1.32-1.33 lib/libperfuse/perfuse_priv.h 1.32-1.34 lib/libperfuse/subr.c 1.20 lib/libpuffs/creds.c 1.16 lib/libpuffs/dispatcher.c 1.47 lib/libpuffs/puffs.h 1.125 lib/libpuffs/puffs_ops.3 1.37-1.38 lib/libpuffs/requests.c 1.24 sys/fs/puffs/puffs_msgif.h 1.81 sys/fs/puffs/puffs_sys.h 1.85 sys/fs/puffs/puffs_vnops.c 1.183 usr.sbin/perfused/msg.c 1.22 Bring libpuffs, libperfuse and perfused on par with -current: - implement FUSE direct I/O - remove useless code and warnings - fix missing GETATTR bugs - fix exended attribute get and list operations
|
| 1.77.8.2 |
| 12-Aug-2012 |
martin | Pull up following revision(s) (requested by manu in ticket #438): lib/libperfuse/perfuse_priv.h: revision 1.31 sys/fs/puffs/puffs_msgif.h: revision 1.80 sys/fs/puffs/puffs_vnops.c: revision 1.171 lib/libpuffs/puffs_ops.3: revision 1.31 sys/fs/puffs/puffs_vnops.c: revision 1.172 sys/fs/puffs/puffs_vnops.c: revision 1.173 sys/fs/puffs/puffs_vnops.c: revision 1.174 usr.sbin/perfused/perfused.c: revision 1.24 sys/fs/puffs/puffs_sys.h: revision 1.80 sys/fs/puffs/puffs_sys.h: revision 1.81 sys/fs/puffs/puffs_sys.h: revision 1.82 lib/libperfuse/subr.c: revision 1.19 lib/libperfuse/perfuse.c: revision 1.30 sys/fs/puffs/puffs_msgif.c: revision 1.90 sys/fs/puffs/puffs_msgif.c: revision 1.91 sys/fs/puffs/puffs_msgif.c: revision 1.92 lib/libperfuse/ops.c: revision 1.59 lib/libpuffs/puffs.3: revision 1.53 lib/libperfuse/debug.c: revision 1.12 lib/libpuffs/puffs.3: revision 1.54 sys/fs/puffs/puffs_vnops.c: revision 1.167 sys/fs/puffs/puffs_msgif.h: revision 1.79 usr.sbin/perfused/msg.c: revision 1.21 sys/fs/puffs/puffs_vfsops.c: revision 1.102 sys/fs/puffs/puffs_vfsops.c: revision 1.103 sys/fs/puffs/puffs_vfsops.c: revision 1.105 lib/libpuffs/puffs.h: revision 1.123 lib/libperfuse/perfuse_if.h: revision 1.20 lib/libperfuse/perfuse.c: revision 1.29 lib/libpuffs/dispatcher.c: revision 1.42 lib/libpuffs/dispatcher.c: revision 1.43 - Fix same vnodes associated with multiple cookies The scheme used to retreive known nodes on lookup was flawed, as it only used parent and name. This produced a different cookie for the same file if it was renamed, when looking up ../ or when dealing with multiple files associated with the same name through link(2). We therefore abandon the use of node name and introduce hashed lists of inodes. This causes a huge rewrite of reclaim code, which do not attempt to keep parents allocated until all their children are reclaimed - Fix race conditions in reclaim There are a few situations where we issue multiple FUSE operations for a PUFFS operation. On reclaim, we therefore have to wait for all FUSE operation to complete, not just the current exchanges. We do this by introducing node reference count with node_ref() and node_rele(). - Detect data loss caused by FAF VOP_PUTPAGES causes FAF writes where the kernel does not check the operation result. At least issue a warning on error. - Enjoy FAF shortcut on setattr No need to wait for the result if the kernel does not want it. There is however an exception for setattr that touch the size, we need to wait for completion because we have other operations queued for after the resize. - Fix fchmod() on write-open file fchmod() on a node open with write privilege will send setattr with both mode and size set. This confuses some FUSE filesystem. Therefore we send two FUSE operations, one for mode, and one for size. - Remove node TTL handling for netbsd-5 for simplicity sake. The code still builds on netbsd-5 but does not have the node TTL feature anymore. It works fine with kernel support on netbsd-6. - Improve PUFFS_KFLAG_CACHE_FS_TTL by reclaiming older inactive nodes. The normal kernel behavior is to retain inactive nodes in the freelist until it runs out of vnodes. This has some merit for local filesystems, where the cost of an allocation is about the same as the cost of a lookup. But that situation is not true for distributed filesystems. On the other hand, keeping inactive nodes for a long time hold memory in the file server process, and when the kernel runs out of vnodes, it produce reclaim avalanches that increase lattency for other operations. We do not reclaim inactive vnodes immediatly either, as they may be looked up again shortly. Instead we introduce a grace time and we reclaim nodes that have been inactive beyond the grace time. - Fix lookup/reclaim race condition. The above improvement undercovered a race condition between lookup and reclaim. If we reclaimed a vnode associated with a userland cookie while a lookup returning that same cookiewas inprogress, then the kernel ends up with a vnode associated with a cookie that has been reclaimed in userland. Next operation on the cookie will crash (or at least confuse) the filesystem. We fix this by introducing a lookup count in kernel and userland. On reclaim, the kernel sends the count, which enable userland to detect situation where it initiated a lookup that is not completed in kernel. In such a situation, the reclaim must be ignored, as the node is about to be looked up again. Fix hang unmount bug introduced by last commit. We introduced a slow queue for delayed reclaims, while the existing queue for unmount, flush and exist has been renamed fast queue. Both queues had timestamp for when an operation should be done, but it was useless for the fast queue, which is always used to run an operation ASAP. And the timestamp test had an error that turned ASAP into "at next tick", but nobody what there to wake the thread at next tick, hence the hang. The fix is to remove the useless and buggy timestamp test for fast queue. Rename slow sopreq queue into node sopreq queue, to refet the fact that is only intended for postponed node reclaims. When purging the node sopreq queue, do not call puffs_msg_sendresp(), as it makes no sense. Fix race condition between (create|mknod|mkdir|symlino) and reclaim, just like we did it between lookup and reclaim. Missing bit in previous commit (prevent race between create|mknod|mkdir|symlink and reclaim) Bump date for previous. New sentence, new line; remove trailing whitespace; fix typos; punctuation nits. Add PUFFS_KFLAG_CACHE_DOTDOT so that vnodes hold a reference on their parent, keeping them active, and allowing to lookup .. without sending a request to the filesystem. Enable the featuure for perfused, as this is how FUSE works. Missing bit in previous commit (PUFFS_KFLAG_CACHE_DOTDOT option to avoid looking up ..)
|
| 1.77.8.1 |
| 23-Apr-2012 |
riz | Pull up following revision(s) (requested by manu in ticket #195): lib/libskey/skeysubr.c: revision 1.27 lib/libkvm/kvm_getloadavg.c: revision 1.11 lib/libwrap/update.c: revision 1.9 lib/liby/yyerror.c: revision 1.9 lib/libpuffs/puffs_ops.3: revision 1.30 lib/libwrap/misc.c: revision 1.10 lib/libwrap/hosts_access.c: revision 1.20 lib/libpuffs/pnode.c: revision 1.11 lib/libperfuse/subr.c: revision 1.17 lib/libpuffs/pnode.c: revision 1.12 lib/libperfuse/subr.c: revision 1.18 lib/libwrap/options.c: revision 1.15 lib/libwrap/fix_options.c: revision 1.11 lib/libperfuse/ops.c: revision 1.52 lib/libperfuse/ops.c: revision 1.53 lib/libperfuse/ops.c: revision 1.54 lib/libwrap/hosts_ctl.c: revision 1.5 lib/libintl/gettext.c: revision 1.27 lib/libwrap/shell_cmd.c: revision 1.6 lib/libpuffs/dispatcher.c: revision 1.39 lib/libperfuse/perfuse_priv.h: revision 1.27 lib/libwrap/socket.c: revision 1.19 lib/libpuffs/puffs.3: revision 1.50 lib/libperfuse/perfuse_priv.h: revision 1.28 lib/libpuffs/puffs_priv.h: revision 1.45 lib/libpuffs/puffs.3: revision 1.51 lib/libperfuse/perfuse_priv.h: revision 1.29 lib/libwrap/percent_x.c: revision 1.5 lib/libpuffs/puffs.3: revision 1.52 lib/libperfuse/debug.c: revision 1.11 sys/fs/puffs/puffs_vnops.c: revision 1.165 lib/libwrap/tcpd.h: revision 1.13 sys/fs/puffs/puffs_vnops.c: revision 1.166 lib/libwrap/eval.c: revision 1.7 sys/fs/puffs/puffs_msgif.h: revision 1.78 sys/fs/puffs/puffs_vfsops.c: revision 1.101 lib/libwrap/rfc931.c: revision 1.9 lib/libwrap/clean_exit.c: revision 1.5 lib/libpuffs/puffs.h: revision 1.120 lib/libc/stdlib/jemalloc.c: revision 1.27 lib/librmt/rmtlib.c: revision 1.26 lib/libpuffs/puffs.h: revision 1.121 sys/fs/puffs/puffs_sys.h: revision 1.79 lib/librumpclient/rumpclient.c: revision 1.48 lib/libwrap/refuse.c: revision 1.5 lib/libperfuse/perfuse.c: revision 1.26 lib/libperfuse/perfuse.c: revision 1.27 tests/fs/puffs/t_fuzz.c: revision 1.5 lib/libperfuse/perfuse.c: revision 1.28 lib/libpuffs/dispatcher.c: revision 1.40 sys/fs/puffs/puffs_node.c: revision 1.24 lib/libwrap/diag.c: revision 1.9 lib/libintl/textdomain.c: revision 1.13 Use C89 function definition Add name and atttribute cache with filesytem provided TTL. lookup, create, mknod, mkdir, symlink, getattr and setattr messages have been extended so that attributes and their TTL can be provided by the filesytem. lookup, create, mknod, mkdir, and symlink messages are also extended so that the filesystem can provide name TTL. Add PUFFS_KFLAG_CACHE_FS_TTL flag to puffs_init(3) to use name and attribute cache with filesystem provided TTL. lookup, create, mknod, mkdir, symlink, getattr and setattr messages have been extended so that attributes and their TTL can be provided by the filesytem. lookup, create, mknod, mkdir, and symlink messages are also extended so that the filesystem can provide name TTL. The filesystem updates attributes and TTL using puffs_pn_getvap(3), puffs_pn_getvattl(3), and puffs_pn_getcnttl(3) Use new PUFFS_KFLAG_CACHE_FS_TTL option to puffs_init(3) so that FUSE TTL on name and attributes are used. This save many PUFFS operations and improves performances. PUFFS_KFLAG_CACHE_FS_TTL is #ifdef'ed in many places for now so that libperfuse can still be used on netbsd-5. Split file system. Comma fixes. Remove dangling "and". Bump date for previous. - Makesure update_va does not change vnode size when it should not. For instance when doing a fault-issued VOP_GETPAGES within VOP_WRITE, changing size leads to panic: genfs_getpages: past eof. -Handle ticks wrap around for vnode name andattribute timeout - When using PUFFS_KFLAG_CACHE_FS_TTL, do not use puffs_node to carry attribute and TTL fora newly created node. Instead extend puffs_newinfo and add puffs_newinfo_setva() and puffs_newinfo_setttl() - Remove node_mk_common_final in libperfuse. It used to set uid/gid for a newly created vnode but has been made redundant along time ago since uid and gid are properly set in FUSE header. - In libperfuse, check for corner case where opc = 0 on INACTIVE and RECLAIM (how is it possible? Check for it to avoid a crash anyway) - In libperfuse, make sure we unlimit RLIMIT_AS and RLIMIT_DATA so that we do notrun out of memory because the kernel is lazy at reclaiming vnodes. - In libperfuse, cleanup style of perfuse_destroy_pn() Do not set PUFFS_KFLAG_CACHE_FS_TTL for PUFFS tests
|
| 1.77.6.1 |
| 29-Apr-2012 |
mrg | sync to latest -current.
|
| 1.77.2.2 |
| 30-Oct-2012 |
yamt | sync with head
|
| 1.77.2.1 |
| 17-Apr-2012 |
yamt | sync with head
|
| 1.80.14.3 |
| 27-Feb-2015 |
martin | Pull up following revision(s) (requested by manu in ticket #555): lib/libpuffs/puffs.3: revision 1.60 sys/fs/puffs/puffs_msgif.h: revision 1.84 lib/libperfuse/ops.c: revision 1.83 sys/fs/puffs/puffs_sys.h: revision 1.89 sys/fs/puffs/puffs_vfsops.c: revision 1.116 lib/libperfuse/perfuse.c: revision 1.36 sys/fs/puffs/puffs_vnops.c: revision 1.200-1.202
Add PUFFS_KFLAG_NOFLUSH_META to prevent sending metadata flush to FUSE
FUSE filesystems do not expect to get metadata updates for [amc]time and size, they updates the value on their own after operations.
The PUFFS PUFFS_KFLAG_NOFLUSH_META option prevents regular metadata cache flushes to the filesystem , and libperfuse uses it to match Linux FUSE behavior.
While there, fix a bug in SETATTR: do not update kernel metadata cache from SETATTR reply when the request is asynchronous, as we do not have the reply yet.
Update file size after write without metadata flush If we do not use metadata flush, we must make sure the size is updated in the filesystem after a write, otherwise the next GETATTR will get us a stale value and the file will be truncated.
|
| 1.80.14.2 |
| 05-Nov-2014 |
snj | Pull up following revision(s) (requested by manu in ticket #181): lib/libperfuse/fuse.h: revision 1.6 lib/libperfuse/ops.c: revision 1.78 lib/libperfuse/perfuse.c: revision 1.35 lib/libperfuse/perfuse_priv.h: revision 1.36 lib/libpuffs/dispatcher.c: revision 1.48 lib/libpuffs/opdump.c: revision 1.37 lib/libpuffs/puffs.c: revision 1.118 lib/libpuffs/puffs.h: revision 1.126 lib/libpuffs/puffs_ops.3: revisions 1.40-1.41 sys/fs/puffs/puffs_msgif.h: revision 1.82-1.83 sys/fs/puffs/puffs_msgif.h: revision 1.82 sys/fs/puffs/puffs_vnops.c: revision 1.196 Add PUFFS support for fallocate and fdiscard operations -- libpuffs support for fallocate and fdiscard operations -- Add PUFFS_HAVE_FALLOCATE in puffs_msgif.h so that filesystem can decide at build time wether fallocate is usable -- FUSE fallocate support There seems to be no fdiscard FUSE operation at the moment, hence that one is left unused.
|
| 1.80.14.1 |
| 26-Aug-2014 |
riz | Pull up following revision(s) (requested by manu in ticket #52): sys/fs/puffs/puffs_msgif.h: revision 1.81 sys/fs/puffs/puffs_sys.h: revision 1.85 sys/fs/puffs/puffs_vnops.c: revision 1.183 Add a oflags input field to open requests so that the filesystem can pass back information about the file. Implement PUFFS_OPEN_IO_DIRECT, which will force direct IO (bypassing page cache) for the file.
|
| 1.80.2.1 |
| 03-Dec-2017 |
jdolecek | update from HEAD
|
| 1.83.2.1 |
| 06-Apr-2015 |
skrll | Sync with HEAD
|
| 1.84.18.1 |
| 13-Apr-2020 |
martin | Mostly merge changes from HEAD upto 20200411
|
| 1.85.8.1 |
| 03-Apr-2021 |
thorpej | Sync with HEAD.
|