| History log of /src/sys/fs/puffs/puffs_vfsops.c |
| Revision | | Date | Author | Comments |
| 1.126 |
| 01-Apr-2021 |
christos | Put a copy of our existing data first in the non-error case (noticed by RVP).
|
| 1.125 |
| 27-Feb-2020 |
ad | branches: 1.125.6; 1.125.8; Tighten up the locking around vp->v_iflag a little more after the recent split of vmobjlock & v_interlock.
|
| 1.124 |
| 17-Jan-2020 |
ad | VFS_VGET(), VFS_ROOT(), VFS_FHTOVP(): give them a "int lktype" argument, to allow us to get shared locks (or no lock) on the returned vnode. Matches FreeBSD.
|
| 1.123 |
| 27-Sep-2019 |
christos | branches: 1.123.2; Fix copying issue that was causing errors in unit_test puffs_tstavfs by removing code.
|
| 1.122 |
| 23-Sep-2019 |
christos | Restore binary compatibility by using the statvfs90 structure internally.
|
| 1.121 |
| 28-May-2018 |
chs | branches: 1.121.2; add a genfs method to allow a file system to limit the range of pages that are given to a single GOP_WRITE() call. needed by ZFS.
|
| 1.120 |
| 01-Apr-2017 |
riastradh | branches: 1.120.12; KASSERT(mutex_owned(vp->v_interlock)) in vnode iterator selector.
|
| 1.119 |
| 17-Feb-2017 |
hannken | Add generic genfs_suspendctl() and use it for all file systems. Layered file systems need work.
|
| 1.118 |
| 20-Dec-2015 |
christos | branches: 1.118.2; 1.118.4; PR/50573: Andreas Gustafsson: puffs can crash kernel for lack of argument checking
|
| 1.117 |
| 16-Feb-2015 |
martin | Remove debug printf
|
| 1.116 |
| 15-Feb-2015 |
manu | 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.115 |
| 10-Nov-2014 |
maxv | branches: 1.115.2; Do not uselessly include <sys/malloc.h>.
|
| 1.114 |
| 28-Aug-2014 |
hannken | Change puffs from hashlist to vcache. - field "pa_nhashbuckets" of struct "puffs_kargs" becomes a no-op. and should be removed on the next protocol version bump.
|
| 1.113 |
| 25-May-2014 |
christos | branches: 1.113.2; use standard dirty vnode test.
|
| 1.112 |
| 25-May-2014 |
hannken | The pageflush_selector gets a vnode with v_interlock held. Remove the mutex_enter()/mutex_exit() and simplify.
Hi christos...
|
| 1.111 |
| 24-May-2014 |
christos | Introduce a selector function to the vfs vnode iterator so that we don't need to vget() vnodes that we are not interested at, and optimize locking a bit. Iterator changes reviewed by Hannken (thanks), the rest of the bugs are mine.
|
| 1.110 |
| 16-Apr-2014 |
maxv | An (un)privileged user can easily make the kernel dereference a NULL pointer.
The kernel allows 'data' to be NULL; it's the fs's responsibility to ensure that it isn't NULL (if the fs actually needs data).
ok christos@
|
| 1.109 |
| 23-Mar-2014 |
hannken | branches: 1.109.2; Change all vfsops to use C99 designated initializers.
No functional changes intended.
|
| 1.108 |
| 17-Mar-2014 |
hannken | Change pageflush() to use vfs_vnode_iterator.
|
| 1.107 |
| 16-Jan-2013 |
pooka | branches: 1.107.2; Do the protocol consistency check hack only when compiling ELF.
|
| 1.106 |
| 09-Aug-2012 |
manu | branches: 1.106.2; Backout previous bugfix attempt for unmounts. That changes did not address the real problem.
|
| 1.105 |
| 27-Jul-2012 |
manu | 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.
|
| 1.104 |
| 27-Jul-2012 |
manu | puffs mounts share global pools. This means that the puffs_vfsops cannot be vfs_detach'ed by module autounload before puffs_vfsop_unmount() completes and has freed ressource from the pools. By holding a reference on puffs_vfsops from each mount, we ensure that no race can occur here.
Works around the crash in kern/46734
|
| 1.103 |
| 22-Jul-2012 |
manu | 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.
|
| 1.102 |
| 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.101 |
| 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.100 |
| 19-Oct-2011 |
manu | branches: 1.100.2; 1.100.6; 1.100.8; Remove #ifdef DIAGNOSTIC guards around KASSERT, as the macro contains them
|
| 1.99 |
| 18-Oct-2011 |
manu | Make sure pagedaemon does not sleep for memory in puffs_vnop_sleep. Add KASSERT on any sleeping memory allocation to check it cannot happen again.
|
| 1.98 |
| 07-Oct-2011 |
hannken | As vnalloc() always allocates with PR_WAITOK there is no longer the need to test its result for NULL.
|
| 1.97 |
| 21-Sep-2011 |
manu | Make sure ioflush does not sleep in PUFFS code path, waiting for a mutex, a memory allocation, or a response from the filesystem.
This avoids deadlocks in the following situations: 1) when memory is low: ioflush waits the fileystem, the fielsystem waits for memory 2) when the filesystem does not respond (e.g.: network outage ona distributed filesystem)
|
| 1.96 |
| 12-Jun-2011 |
rmind | Welcome to 5.99.53! Merge rmind-uvmplock branch:
- Reorganize locking in UVM and provide extra serialisation for pmap(9). New lock order: [vmpage-owner-lock] -> pmap-lock.
- Simplify locking in some pmap(9) modules by removing P->V locking.
- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).
- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner. Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.
- Unify /dev/mem et al in MI code and provide required locking (removes kernel-lock on some ports). Also, avoid cache-aliasing issues.
Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches formed the core changes of this branch.
|
| 1.95 |
| 21-Jul-2010 |
hannken | branches: 1.95.6; Make holding v_interlock mandatory for callers of vget().
Announced some time ago on tech-kern.
|
| 1.94 |
| 15-Jul-2010 |
pooka | f_namemax is one of the static fields overridden by copy_statvfs_info(), so be sure to set it to the value coming from the file server as part of mount args.
exposed, like so many other problems, by njoly's tests
|
| 1.93 |
| 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.92 |
| 06-Jul-2010 |
pooka | ctassert size of some key structures does not change
|
| 1.91 |
| 06-Jul-2010 |
pooka | Make sure that pa_spare is zero-filled and does not contain any garbage which might disrupt future use.
|
| 1.90 |
| 24-Jun-2010 |
hannken | Clean up vnode lock operations pass 2:
VOP_UNLOCK(vp, flags) -> VOP_UNLOCK(vp): Remove the unneeded flags argument.
Welcome to 5.99.32.
Discussed on tech-kern.
|
| 1.89 |
| 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.88 |
| 21-May-2010 |
pooka | Support extended attributes.
|
| 1.87 |
| 17-Feb-2010 |
pooka | branches: 1.87.2; * add a rant about why MPSAFE isn't enabled even though puffs code is * predict_false that we are mounting when calling statvfs * KNF
|
| 1.86 |
| 14-Jan-2010 |
pooka | branches: 1.86.2; In case the operations thread has exited, do not queue any more operations. This prevents kernel memory leaks (one of which happened every time the file system was unmounted via PUFFSOP_UNMOUNT ... and incidentally would've been trivially caught with the old malloc(9) interface. I wonder if the message is to use a ton of pools instead of regression-attractive kmem interface).
|
| 1.85 |
| 07-Jan-2010 |
pooka | Rename PUFFS_SOPREQ_EXIT to PUFFS_SOPREQSYS_EXIT to better signal it comes from within the kernel instead of as a direct result of a user request.
no functional change
|
| 1.84 |
| 07-Dec-2009 |
pooka | Process flush requests from the file server in a separate thread context. This fixes a long-standing but seldomly seen deadlock, where the kernel was holding pages busy (due to e.g. readahead request) while waiting for the server to respond, and the server made a callback into the kernel asking to invalidate those pages. ... or, well, theoretically fixes, since I didn't have any reliable way of repeating the deadlock and I think I saw it only twice.
|
| 1.83 |
| 05-Nov-2009 |
pooka | Kill suspend support. It was never implemented correctly: * it depended on the biglock (in a very cruel way) * it was attached to userspace transactions rather than logical fs operations
(If someone wants to revisit it some day, most of the stuff can be reused from cvs history)
|
| 1.82 |
| 18-Mar-2009 |
cegger | Ansify function definitions w/o arguments. Generated with sed.
|
| 1.81 |
| 20-May-2008 |
jmcneill | branches: 1.81.6; 1.81.8; 1.81.12; 1.81.16; Add module dependency on putter.
|
| 1.80 |
| 10-May-2008 |
rumble | Convert file systems to dynamically attach with the new module interface. Make VFS hooks dynamic while we're here and say farewell to VFS_ATTACH and VFS_HOOKS_ATTACH linksets.
As a consequence, most of the file systems can now be loaded as new style modules.
Quick sanity check by ad@.
|
| 1.79 |
| 29-Apr-2008 |
ad | branches: 1.79.2; PR kern/38057 ffs makes assuptions about devvp file system PR kern/33406 softdeps get stuck in endless loop
Introduce VFS_FSYNC() and call it when syncing a block device, if it has a mounted file system.
|
| 1.78 |
| 28-Jan-2008 |
dholland | branches: 1.78.6; 1.78.8; 1.78.10; Fix some race conditions in rename. Introduce a per-FS rename lock and new vfsops to manipulate it. Get this lock while renaming. Also add another relookup() in do_sys_rename, which is a hack to kludge around some of the worst deficiencies of ufs_rename. reviewed-by: pooka (and an earlier rev by ad) posted on tech-kern with no objections.
|
| 1.77 |
| 03-Jan-2008 |
pooka | fix vmlocking2 fallout: fstrans_mount/unmount
|
| 1.76 |
| 03-Jan-2008 |
pooka | valloc -> vnalloc, vfree -> vnfree Avoids collision with userland valloc(3).
no functional change ad ok
|
| 1.75 |
| 02-Jan-2008 |
pooka | More type-punning workarounds. Curiously the kernel compilation flags cause gcc to not complain.
|
| 1.74 |
| 02-Jan-2008 |
ad | Merge vmlocking2 to head.
|
| 1.73 |
| 30-Dec-2007 |
pooka | namespace a bit: vfsops -> puffs_vfsop_x() and vops -> puffs_vnop_x()
|
| 1.72 |
| 27-Nov-2007 |
pooka | branches: 1.72.2; 1.72.6; 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.71 |
| 26-Nov-2007 |
pooka | Remove the "struct lwp *" argument from all VFS and VOP interfaces. The general trend is to remove it from all kernel interfaces and this is a start. In case the calling lwp is desired, curlwp should be used.
quick consensus on tech-kern
|
| 1.70 |
| 20-Nov-2007 |
pooka | Retire M_PUFFS, use kmem(9) instead.
|
| 1.69 |
| 16-Nov-2007 |
pooka | Restructure the messaging interface a bit more: make all interfacing with the file server happen through puffs_msg_enqueue() and puffs_msg_wait() instead of having a billion different routines. Build the existing system upon these two. Most importantly though, decouple insertation into the op queue from the actual wait. This is useful for a number of reasons coming soon to a cvs repo near you.
|
| 1.68 |
| 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.67 |
| 12-Nov-2007 |
pooka | Move putter code from directly under dev/ to dev/putter/
no functional change
|
| 1.66 |
| 10-Nov-2007 |
pooka | Part 2/n of extensive changes to request transport to/from userspace:
Rip the transport code completely out of puffs and generalize it into an independent module which will be used for multiple purposes in the future. This module is called the Pass-to-Userspace Transporter (known as "putter" among friends).
This is very much work-in-progress and one dependency with puffs remains: the request framing format.
The device name is still /dev/puffs, but that will change soon.
Users of puffs need the following in their kernel configs now: pseudo-device putter
|
| 1.65 |
| 11-Oct-2007 |
pooka | branches: 1.65.2; 1.65.4; Handle suspend and flush requests from the file server.
|
| 1.64 |
| 11-Oct-2007 |
pooka | in case of version mismatch, print the numbers
|
| 1.63 |
| 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.62 |
| 11-Oct-2007 |
pooka | Cache vnode member variables necessary for operations after the userspace call, namely our private mount structure, in the activation record. This avoids problems in situations where the userspace file server happens to die during our upcall and the vnode is forcibly reclaimed before we roll back to the current stack frame.
|
| 1.61 |
| 09-Oct-2007 |
pooka | g/c more unused stuff
|
| 1.60 |
| 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.59 |
| 27-Sep-2007 |
pooka | Differentiate between cookie2vnode returning an error and return to caller, address unknown: no such cookie, no such node. Make the callers use this info to either create a new vnode or bail.
|
| 1.58 |
| 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.57 |
| 27-Sep-2007 |
pooka | Fix a race in how new cookies are checked. Previously the checking was done separate of inserting the cookie into the lookup structure and without any form of interlock. This could lead to the same cookie pointing to two different nodes. Remedy the race by creating a separate "checked and ready to be inserted" cookie list which serves as an interlock without having to hold a fs-global creation lock.
|
| 1.56 |
| 05-Sep-2007 |
pooka | branches: 1.56.2; move static KASSERT from mount to init
|
| 1.55 |
| 04-Sep-2007 |
pooka | * don't allow the file server to specify a node size to be VSIZENOTSET * KASSERT that VNOVAL == VSIZENOTSET
|
| 1.54 |
| 23-Aug-2007 |
pooka | branches: 1.54.2; 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.53 |
| 31-Jul-2007 |
pooka | branches: 1.53.2; 1.53.4; * nuke the nameidata parameter from VFS_MOUNT(). Nobody on tech-kern knew what it was supposed to be used for and wrstuden gave a go-ahead * while rototilling, convert file systems which went easily to use VFS_PROTOS() instead of manually prototyping the methods
|
| 1.52 |
| 19-Jul-2007 |
pooka | Make the minimum request size twice the minimum request structure size. Otherwise ops with payload would have no room for payload.
|
| 1.51 |
| 17-Jul-2007 |
pooka | branches: 1.51.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.50 |
| 17-Jul-2007 |
pooka | Make set_statvfs_info() take a parameter for the vfs name instead of always retrieving it from mp->mnt_op->vfs_name
christos ok
|
| 1.49 |
| 14-Jul-2007 |
dsl | Remove the copyout() of the mount args from puffs_mount(), the buffer supplied is a kernel address. The puffs userspace code has been changed to do a 2nd call with MNT_GETARGS to retrieve the information.
|
| 1.48 |
| 12-Jul-2007 |
dsl | Change the VFS_MOUNT() interface so that the 'data' buffer passed to the fs code is a kernel buffer, pass though the length of the buffer as well. Since the length of the userspace buffer isn'it (yet) passed through the mount system call, add a field to the vfsops structure containing the default length. Split sys_mount() for calls from compat code. Ride one of the recent kernel version changes - old fs LKMs will load, but sys_mount() will reject any attempt to use them.
|
| 1.47 |
| 09-Jul-2007 |
ad | Merge some of the less invasive changes from the vmlocking branch:
- kthread, callout, devsw API changes - select()/poll() improvements - miscellaneous MT safety improvements
|
| 1.46 |
| 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.45 |
| 21-Jun-2007 |
pooka | Refactor the pnode2vnode translation slightly so that VFS_ROOT can use it directly.
|
| 1.44 |
| 21-Jun-2007 |
pooka | Reorganize how the root vnode is fetched so that it doesn't always go through VFS_ROOT() and allow to fetch it without locking it. This allows us to call the cache flush operations also for the root vnode and most notably fixes e.g. a "No such file or directory" for a psshfs root directory ls -l when a file was locally deleted and remotely re-created.
Also fix some sloppy programming in root node fetch (mostly cosmetic).
|
| 1.43 |
| 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.42 |
| 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.41 |
| 01-May-2007 |
pooka | Fix a problem introduced when I converted puffs to use newlock2: when unmounting the file system in case of a certain timing (and possibly some other conditions), a thread would wait on a condition variable, while another thread broadcast the cv and immediately proceeded to destroy it. The result was a system frozen completely solid shorly after the process waiting for the cv woke up. So introduce reference counting to synchronize destruction of the resources in unmount.
I was able to repeat the problem only on my laptop in some special cases, so I do not know how common it was. Ironically, killing the file server process violently instead of unmount() didn't have this problem because it never entered the unmount path from two directions.
|
| 1.40 |
| 16-Apr-2007 |
pooka | Sanity-check & possibly adjust number of hash buckets already before returning the mount argument structure to userspace.
|
| 1.39 |
| 16-Apr-2007 |
pooka | catch invalid size file handles already in the kernel
|
| 1.38 |
| 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.37 |
| 14-Apr-2007 |
xtraeme | size_t is unsigned, so use zu rather than zd which is for ssize_t, as Matt Thomas pointed out.
|
| 1.36 |
| 14-Apr-2007 |
xtraeme | Use zd to printf size_t.
|
| 1.35 |
| 13-Apr-2007 |
pooka | Allow file servers to request the number of hash cookie buckets for pnode -> vnode reverse lookup.
|
| 1.34 |
| 13-Apr-2007 |
pooka | * add fhlen to kernel argument structure * rename it to puffs_kargs instead of puffs_args
|
| 1.33 |
| 11-Apr-2007 |
pooka | * support VFS_FHTOVP and VFS_VPTOFH * support cookies in for VOP_READDIR
nfs exporting puffs file systems works now
|
| 1.32 |
| 29-Mar-2007 |
pooka | convert to MALLOC_JUSTDEFINE
|
| 1.31 |
| 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.30 |
| 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.29 |
| 13-Mar-2007 |
ad | branches: 1.29.2; Pass an ipl argument to pool_init/POOL_INIT to be used when initializing the pool's lock.
|
| 1.28 |
| 16-Feb-2007 |
hannken | branches: 1.28.2; 1.28.6; 1.28.8; Make fstrans(9) the default helper for file system suspension. Replaces the now obsolete vn_start_write()/vn_finished_write().
|
| 1.27 |
| 29-Jan-2007 |
hannken | Change fstrans enum types to upper case. No functional change.
From Antti Kantee <pooka@netbsd.org>
|
| 1.26 |
| 26-Jan-2007 |
pooka | 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.25 |
| 25-Jan-2007 |
pooka | don't hold spinlocks (except vnode interlock) when doing vget()
|
| 1.24 |
| 23-Jan-2007 |
pooka | fix comment (no functional change)
|
| 1.23 |
| 19-Jan-2007 |
hannken | New file system suspension API to replace vn_start_write and vn_finished_write. The suspension helpers are now put into file system specific operations. This means every file system not supporting these helpers cannot be suspended and therefore snapshots are no longer possible.
Implemented for file systems of type ffs.
The new API is enabled on a kernel option NEWVNGATE. This option is not enabled by default in any kernel config.
Presented and discussed on tech-kern with much input from Bill Studenmund <wrstuden@netbsd.org> and YAMAMOTO Takashi <yamt@netbsd.org>.
Welcome to 4.99.9 (new vfs op vfs_suspendctl).
|
| 1.22 |
| 15-Jan-2007 |
pooka | Store puffs_node's on lists hashed with the cookie value instead of just one flat list.
|
| 1.21 |
| 09-Jan-2007 |
pooka | In vfs_sync(), call VOP_PUTPAGES() for dirty vnodes directly instead of rolling around VOP_FSYNC(). The user server will be given the VFS_SYNC instruction and it can do its own equivalent of VOP_FSYNC() if it pleases, no need for the kernel to explicitly issue #{vnodes} FSYNCs.
|
| 1.20 |
| 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.19 |
| 09-Jan-2007 |
pooka | in vfs_sync flush page cache only for vnodes with dirty pages, not for vnodes with pages (dirty or otherwise)
|
| 1.18 |
| 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.17 |
| 02-Jan-2007 |
pooka | * check userspace version and prevent incompatible mount * some general maintenance
|
| 1.16 |
| 10-Dec-2006 |
pooka | branches: 1.16.2; Fix a race condition that would cause the mountpoint to be cleaned from under someone waiting for the fs server response in puffs_unmount() if the descriptor was closed during the response wait (such as bug leading to a crash in fs implementation unmount()).
|
| 1.15 |
| 09-Dec-2006 |
chs | branches: 1.15.2; a smorgasbord of improvements to vnode locking and path lookup: - LOCKPARENT is no longer relevant for lookup(), relookup() or VOP_LOOKUP(). these now always return the parent vnode locked. namei() works as before. lookup() and various other paths no longer acquire vnode locks in the wrong order via vrele(). fixes PR 32535. as a nice side effect, path lookup is also up to 25% faster. - the above allows us to get rid of PDIRUNLOCK. - also get rid of WANTPARENT (just use LOCKPARENT and unlock it). - remove an assumption in layer_node_find() that all file systems implement a recursive VOP_LOCK() (unionfs doesn't). - require that all file systems supply vfs_vptofh and vfs_fhtovp routines. fill in eopnotsupp() for file systems that don't support being exported and remove the checks for NULL. (layerfs calls these without checking.) - in union_lookup1(), don't change refcounts in the ISDOTDOT case, just adjust which vnode is locked. fixes PR 33374. - apply fixes for ufs_rename() from ufs_vnops.c rev. 1.61 to ext2fs_rename().
|
| 1.14 |
| 07-Dec-2006 |
pooka | In case of an error, return an error. Otherwise the worst case was that dostatvfs() wrote to a recently deceased struct mount.
|
| 1.13 |
| 01-Dec-2006 |
pooka | branches: 1.13.2; prefix kernel flags with PUFFS_KFLAG to have a separate namespace from the library flags
|
| 1.12 |
| 01-Dec-2006 |
pooka | don't call the fs server for all operations, only those it has told us that it implements
|
| 1.11 |
| 18-Nov-2006 |
pooka | branches: 1.11.2; Always override f_iosize from stat() to DEV_BSIZE for now. Places such as vnd use the information, so until "dealing with it" is defined, it's overriden by the kernel.
|
| 1.10 |
| 18-Nov-2006 |
pooka | prevent value 0 for mnt_stat.f_iosize, it is sometimes used as a divider
|
| 1.9 |
| 18-Nov-2006 |
pooka | 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.8 |
| 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.7 |
| 09-Nov-2006 |
pooka | few renames to better differentiate between mount & start.. plus some other renaming
|
| 1.6 |
| 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.5 |
| 06-Nov-2006 |
pooka | make it possible to build & load puffs as an LKM
by Lubomir Kundrak, PR kern/35000
|
| 1.4 |
| 27-Oct-2006 |
pooka | support fifos
|
| 1.3 |
| 26-Oct-2006 |
pooka | support specfs
|
| 1.2 |
| 26-Oct-2006 |
pooka | debug print fixes
|
| 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.11.2.4 |
| 01-Feb-2007 |
ad | Sync with head.
|
| 1.11.2.3 |
| 12-Jan-2007 |
ad | Sync with head.
|
| 1.11.2.2 |
| 18-Nov-2006 |
ad | Sync with head.
|
| 1.11.2.1 |
| 18-Nov-2006 |
ad | file puffs_vfsops.c was added on branch newlock2 on 2006-11-18 21:39:20 +0000
|
| 1.13.2.1 |
| 17-Feb-2007 |
tron | Apply patch (requested by chs in ticket #422): - Fix various deadlock problems with nullfs and unionfs. - Speed up path lookups by upto 25%.
|
| 1.15.2.3 |
| 18-Dec-2006 |
yamt | sync with head.
|
| 1.15.2.2 |
| 10-Dec-2006 |
yamt | sync with head.
|
| 1.15.2.1 |
| 09-Dec-2006 |
yamt | file puffs_vfsops.c was added on branch yamt-splraiseipl on 2006-12-10 07:18:38 +0000
|
| 1.16.2.9 |
| 04-Feb-2008 |
yamt | sync with head.
|
| 1.16.2.8 |
| 21-Jan-2008 |
yamt | sync with head
|
| 1.16.2.7 |
| 07-Dec-2007 |
yamt | sync with head
|
| 1.16.2.6 |
| 15-Nov-2007 |
yamt | sync with head.
|
| 1.16.2.5 |
| 27-Oct-2007 |
yamt | sync with head.
|
| 1.16.2.4 |
| 03-Sep-2007 |
yamt | sync with head.
|
| 1.16.2.3 |
| 26-Feb-2007 |
yamt | sync with head.
|
| 1.16.2.2 |
| 30-Dec-2006 |
yamt | sync with head.
|
| 1.16.2.1 |
| 10-Dec-2006 |
yamt | file puffs_vfsops.c was added on branch yamt-lazymbuf on 2006-12-30 20:50:01 +0000
|
| 1.28.8.1 |
| 11-Jul-2007 |
mjf | Sync with head.
|
| 1.28.6.12 |
| 28-Oct-2007 |
ad | Fix up mnt_vnodelist handling.
|
| 1.28.6.11 |
| 12-Oct-2007 |
ad | Sync with head.
|
| 1.28.6.10 |
| 09-Oct-2007 |
ad | Sync with head.
|
| 1.28.6.9 |
| 20-Aug-2007 |
ad | Sync with HEAD.
|
| 1.28.6.8 |
| 15-Jul-2007 |
ad | Sync with head.
|
| 1.28.6.7 |
| 17-Jun-2007 |
ad | - Increase the number of thread priorities from 128 to 256. How the space is set up is to be revisited. - Implement soft interrupts as kernel threads. A generic implementation is provided, with hooks for fast-path MD code that can run the interrupt threads over the top of other threads executing in the kernel. - Split vnode::v_flag into three fields, depending on how the flag is locked (by the interlock, by the vnode lock, by the file system). - Miscellaneous locking fixes and improvements.
|
| 1.28.6.6 |
| 09-Jun-2007 |
ad | Sync with head.
|
| 1.28.6.5 |
| 08-Jun-2007 |
ad | Sync with head.
|
| 1.28.6.4 |
| 10-Apr-2007 |
ad | Sync with head.
|
| 1.28.6.3 |
| 05-Apr-2007 |
ad | Compile fixes.
|
| 1.28.6.2 |
| 13-Mar-2007 |
ad | Pull in the initial set of changes for the vmlocking branch.
|
| 1.28.6.1 |
| 13-Mar-2007 |
ad | Sync with head.
|
| 1.28.2.3 |
| 07-May-2007 |
yamt | sync with head.
|
| 1.28.2.2 |
| 15-Apr-2007 |
yamt | sync with head.
|
| 1.28.2.1 |
| 24-Mar-2007 |
yamt | sync with head.
|
| 1.29.2.1 |
| 29-Mar-2007 |
reinoud | Pullup to -current
|
| 1.51.2.3 |
| 10-Sep-2007 |
skrll | Sync with HEAD.
|
| 1.51.2.2 |
| 03-Sep-2007 |
skrll | Sync with HEAD.
|
| 1.51.2.1 |
| 15-Aug-2007 |
skrll | Sync with HEAD.
|
| 1.53.4.2 |
| 31-Jul-2007 |
pooka | * nuke the nameidata parameter from VFS_MOUNT(). Nobody on tech-kern knew what it was supposed to be used for and wrstuden gave a go-ahead * while rototilling, convert file systems which went easily to use VFS_PROTOS() instead of manually prototyping the methods
|
| 1.53.4.1 |
| 31-Jul-2007 |
pooka | file puffs_vfsops.c was added on branch matt-mips64 on 2007-07-31 21:14:19 +0000
|
| 1.53.2.7 |
| 27-Nov-2007 |
joerg | Sync with HEAD. amd64 Xen support needs testing.
|
| 1.53.2.6 |
| 21-Nov-2007 |
joerg | Sync with HEAD.
|
| 1.53.2.5 |
| 14-Nov-2007 |
joerg | Sync with HEAD.
|
| 1.53.2.4 |
| 11-Nov-2007 |
joerg | Sync with HEAD.
|
| 1.53.2.3 |
| 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.53.2.2 |
| 02-Oct-2007 |
joerg | Sync with HEAD.
|
| 1.53.2.1 |
| 03-Sep-2007 |
jmcneill | Sync with HEAD.
|
| 1.54.2.3 |
| 23-Mar-2008 |
matt | sync with HEAD
|
| 1.54.2.2 |
| 09-Jan-2008 |
matt | sync with HEAD
|
| 1.54.2.1 |
| 06-Nov-2007 |
matt | sync with HEAD
|
| 1.56.2.2 |
| 14-Oct-2007 |
yamt | sync with head.
|
| 1.56.2.1 |
| 06-Oct-2007 |
yamt | sync with head.
|
| 1.65.4.3 |
| 18-Feb-2008 |
mjf | Sync with HEAD.
|
| 1.65.4.2 |
| 08-Dec-2007 |
mjf | Sync with HEAD.
|
| 1.65.4.1 |
| 19-Nov-2007 |
mjf | Sync with HEAD.
|
| 1.65.2.3 |
| 21-Nov-2007 |
bouyer | Sync with HEAD
|
| 1.65.2.2 |
| 18-Nov-2007 |
bouyer | Sync with HEAD
|
| 1.65.2.1 |
| 13-Nov-2007 |
bouyer | Sync with HEAD
|
| 1.72.6.2 |
| 08-Jan-2008 |
bouyer | Sync with HEAD
|
| 1.72.6.1 |
| 02-Jan-2008 |
bouyer | Sync with HEAD
|
| 1.72.2.1 |
| 04-Dec-2007 |
ad | Pull the vmlocking changes into a new branch.
|
| 1.78.10.4 |
| 11-Aug-2010 |
yamt | sync with head.
|
| 1.78.10.3 |
| 11-Mar-2010 |
yamt | sync with head
|
| 1.78.10.2 |
| 04-May-2009 |
yamt | sync with head.
|
| 1.78.10.1 |
| 16-May-2008 |
yamt | sync with head.
|
| 1.78.8.2 |
| 04-Jun-2008 |
yamt | sync with head
|
| 1.78.8.1 |
| 18-May-2008 |
yamt | sync with head.
|
| 1.78.6.1 |
| 02-Jun-2008 |
mjf | Sync with HEAD.
|
| 1.79.2.1 |
| 23-Jun-2008 |
wrstuden | Sync w/ -current. 34 merge conflicts to follow.
|
| 1.81.16.1 |
| 21-Apr-2010 |
matt | sync to netbsd-5
|
| 1.81.12.1 |
| 13-May-2009 |
jym | Sync with HEAD.
Commit is split, to avoid a "too many arguments" protocol error.
|
| 1.81.8.4 |
| 25-Apr-2014 |
sborrill | Pull up the following revisions(s) (requested by maxv in ticket #1901): sys/kern/vfs_syscalls.c: revision 1.478, 1.480 via patch sys/coda/coda_vfsops.c: revision 1.81 sys/fs/adosfs/advfsops.c: revision 1.70 sys/fs/cd9660/cd9660_vfsops.c: revision 1.84 sys/fs/efs/efs_vfsops.c: revision 1.25 sys/fs/filecorefs/filecore_vfsops.c: revision 1.76 sys/fs/hfs/hfs_vfsops.c: revision 1.31 sys/fs/msdosfs/msdosfs_vfsops.c: revision 1.107 sys/fs/ntfs/ntfs_vfsops.c: revision 1.94 sys/fs/ptyfs/ptyfs_vfsops.c: revision 1.50 via patch sys/fs/puffs/puffs_vfsops.c: revision 1.110 via patch sys/fs/smbfs/smbfs_vfsops.c: revision 1.100 sys/fs/sysvbfs/sysvbfs_vfsops.c: revision 1.43 sys/fs/tmpfs/tmpfs_vfsops.c: revision 1.59 via patch sys/fs/udf/udf_vfsops.c: revision 1.67 sys/fs/union/union_vfsops.c: revision 1.72 sys/fs/unionfs/unionfs_vfsops.c: revision 1.13 sys/kern/vfs_syscalls.c: revision 1.479 sys/miscfs/nullfs/null_vfsops.c: revision 1.88 via patch sys/miscfs/overlay/overlay_vfsops.c: revision 1.61 sys/miscfs/procfs/procfs_vfsops.c: revision 1.91 sys/miscfs/umapfs/umap_vfsops.c: revision 1.92 sys/nfs/nfs_vfsops.c: revision 1.227 sys/ufs/ext2fs/ext2fs_vfsops.c: revision 1.180 sys/ufs/ffs/ffs_vfsops.c: revision 1.297 sys/ufs/lfs/lfs_vfsops.c: revision 1.321 sys/ufs/mfs/mfs_vfsops.c: revision 1.107
Due to missing checks in the mount syscall, and a wrong assumption on the file systems side, the kernel could allocate an unbounded or zero-sized memory buffer, and could dereference a NULL pointer when particular arguments are given by a user.
|
| 1.81.8.3 |
| 02-Nov-2011 |
riz | branches: 1.81.8.3.2; Pull up following revision(s) (requested by manu in ticket #1679): sys/fs/puffs/puffs_vnops.c: revision 1.157 sys/fs/puffs/puffs_vnops.c: revision 1.158 sys/fs/puffs/puffs_vnops.c: revision 1.159 sys/fs/puffs/puffs_vfsops.c: revision 1.97 sys/fs/puffs/puffs_vfsops.c: revision 1.99 sys/fs/puffs/puffs_vnops.c: revision 1.160 sys/fs/puffs/puffs_vfsops.c: revision 1.100 sys/miscfs/syncfs/sync_subr.c: revision 1.47 sys/fs/puffs/puffs_node.c: revision 1.21 sys/fs/puffs/puffs_node.c: revision 1.22 sys/fs/puffs/puffs_msgif.c: revision 1.88 sys/fs/puffs/puffs_msgif.c: revision 1.89 sys/fs/puffs/puffs_vnops.c: revision 1.156 Make sure ioflush does not sleep in PUFFS code path, waiting for a mutex, a memory allocation, or a response from the filesystem. This avoids deadlocks in the following situations: 1) when memory is low: ioflush waits the fileystem, the fielsystem waits for memory 2) when the filesystem does not respond (e.g.: network outage ona distributed filesystem) Fix the build that was broken by struct lwp *updateproc reference in RUMP-visible code. Instead of checking that updateproc (aka ioflush, aka syncer) will not sleep in PUFFS code, I check for any kernel thread: after all none of them are designed to hang awaiting for a remote filesystem operation to complete. Roll back the change that forced kernel threads to not sleep in PUFFS. The change does not make consensus, since only pagedaemon should need it. Other threads will tolerate sleeping, and problems here are only symptoms that something is going wrong in memory management. The cause, not the symptoms, need to be fixed. Make sure pagedaemon does not sleep for memory in puffs_vnop_sleep. Add KASSERT on any sleeping memory allocation to check it cannot happen again. Remove #ifdef DIAGNOSTIC guards around KASSERT, as the macro contains them
|
| 1.81.8.2 |
| 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.81.8.1 |
| 09-Jan-2010 |
snj | branches: 1.81.8.1.2; Pull up following revision(s) (requested by pooka in ticket #1212): sys/fs/puffs/puffs_msgif.c: revision 1.76 via patch sys/fs/puffs/puffs_sys.h: revision 1.73 via patch sys/fs/puffs/puffs_vfsops.c: revision 1.84 via patch Process flush requests from the file server in a separate thread context. This fixes a long-standing but seldomly seen deadlock, where the kernel was holding pages busy (due to e.g. readahead request) while waiting for the server to respond, and the server made a callback into the kernel asking to invalidate those pages. ... or, well, theoretically fixes, since I didn't have any reliable way of repeating the deadlock and I think I saw it only twice.
|
| 1.81.8.3.2.1 |
| 28-Apr-2014 |
sborrill | Pull up the following revisions(s) (requested by maxv in ticket #1901): sys/kern/vfs_syscalls.c: revision 1.478, 1.480 via patch sys/coda/coda_vfsops.c: revision 1.81 sys/fs/adosfs/advfsops.c: revision 1.70 sys/fs/cd9660/cd9660_vfsops.c: revision 1.84 sys/fs/efs/efs_vfsops.c: revision 1.25 sys/fs/filecorefs/filecore_vfsops.c: revision 1.76 sys/fs/hfs/hfs_vfsops.c: revision 1.31 sys/fs/msdosfs/msdosfs_vfsops.c: revision 1.107 sys/fs/ntfs/ntfs_vfsops.c: revision 1.94 sys/fs/ptyfs/ptyfs_vfsops.c: revision 1.50 via patch sys/fs/puffs/puffs_vfsops.c: revision 1.110 via patch sys/fs/smbfs/smbfs_vfsops.c: revision 1.100 sys/fs/sysvbfs/sysvbfs_vfsops.c: revision 1.43 sys/fs/tmpfs/tmpfs_vfsops.c: revision 1.59 via patch sys/fs/udf/udf_vfsops.c: revision 1.67 sys/fs/union/union_vfsops.c: revision 1.72 sys/fs/unionfs/unionfs_vfsops.c: revision 1.13 sys/kern/vfs_syscalls.c: revision 1.479 sys/miscfs/nullfs/null_vfsops.c: revision 1.88 via patch sys/miscfs/overlay/overlay_vfsops.c: revision 1.61 sys/miscfs/procfs/procfs_vfsops.c: revision 1.91 sys/miscfs/umapfs/umap_vfsops.c: revision 1.92 sys/nfs/nfs_vfsops.c: revision 1.227 sys/ufs/ext2fs/ext2fs_vfsops.c: revision 1.180 sys/ufs/ffs/ffs_vfsops.c: revision 1.297 sys/ufs/lfs/lfs_vfsops.c: revision 1.321 sys/ufs/mfs/mfs_vfsops.c: revision 1.107
Due to missing checks in the mount syscall, and a wrong assumption on the file systems side, the kernel could allocate an unbounded or zero-sized memory buffer, and could dereference a NULL pointer when particular arguments are given by a user.
|
| 1.81.8.1.2.1 |
| 28-Apr-2014 |
sborrill | Pull up the following revisions(s) (requested by maxv in ticket #1901): sys/kern/vfs_syscalls.c: revision 1.478, 1.480 via patch sys/coda/coda_vfsops.c: revision 1.81 sys/fs/adosfs/advfsops.c: revision 1.70 sys/fs/cd9660/cd9660_vfsops.c: revision 1.84 sys/fs/efs/efs_vfsops.c: revision 1.25 sys/fs/filecorefs/filecore_vfsops.c: revision 1.76 sys/fs/hfs/hfs_vfsops.c: revision 1.31 sys/fs/msdosfs/msdosfs_vfsops.c: revision 1.107 sys/fs/ntfs/ntfs_vfsops.c: revision 1.94 sys/fs/ptyfs/ptyfs_vfsops.c: revision 1.50 via patch sys/fs/puffs/puffs_vfsops.c: revision 1.110 via patch sys/fs/smbfs/smbfs_vfsops.c: revision 1.100 sys/fs/sysvbfs/sysvbfs_vfsops.c: revision 1.43 sys/fs/tmpfs/tmpfs_vfsops.c: revision 1.59 via patch sys/fs/udf/udf_vfsops.c: revision 1.67 sys/fs/union/union_vfsops.c: revision 1.72 sys/fs/unionfs/unionfs_vfsops.c: revision 1.13 sys/kern/vfs_syscalls.c: revision 1.479 sys/miscfs/nullfs/null_vfsops.c: revision 1.88 via patch sys/miscfs/overlay/overlay_vfsops.c: revision 1.61 sys/miscfs/procfs/procfs_vfsops.c: revision 1.91 sys/miscfs/umapfs/umap_vfsops.c: revision 1.92 sys/nfs/nfs_vfsops.c: revision 1.227 sys/ufs/ext2fs/ext2fs_vfsops.c: revision 1.180 sys/ufs/ffs/ffs_vfsops.c: revision 1.297 sys/ufs/lfs/lfs_vfsops.c: revision 1.321 sys/ufs/mfs/mfs_vfsops.c: revision 1.107
Due to missing checks in the mount syscall, and a wrong assumption on the file systems side, the kernel could allocate an unbounded or zero-sized memory buffer, and could dereference a NULL pointer when particular arguments are given by a user.
|
| 1.81.6.1 |
| 28-Apr-2009 |
skrll | Sync with HEAD.
|
| 1.86.2.2 |
| 17-Aug-2010 |
uebayasi | Sync with HEAD.
|
| 1.86.2.1 |
| 30-Apr-2010 |
uebayasi | Sync with HEAD.
|
| 1.87.2.4 |
| 05-Mar-2011 |
rmind | sync with head
|
| 1.87.2.3 |
| 03-Jul-2010 |
rmind | sync with head
|
| 1.87.2.2 |
| 30-May-2010 |
rmind | sync with head
|
| 1.87.2.1 |
| 16-Mar-2010 |
rmind | Change struct uvm_object::vmobjlock to be dynamically allocated with mutex_obj_alloc(). It allows us to share the locks among UVM objects.
|
| 1.95.6.1 |
| 23-Jun-2011 |
cherry | Catchup with rmind-uvmplock merge.
|
| 1.100.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.100.8.3 |
| 21-Apr-2014 |
bouyer | Pull up following revision(s) (requested by maxv in ticket #1050): sys/ufs/chfs/chfs_vfsops.c: revision 1.11 sys/fs/unionfs/unionfs_vfsops.c: revision 1.13 sys/fs/nilfs/nilfs_vfsops.c: revision 1.16 sys/ufs/mfs/mfs_vfsops.c: revision 1.107 sys/fs/sysvbfs/sysvbfs_vfsops.c: revision 1.43 sys/ufs/ffs/ffs_vfsops.c: revision 1.297 sys/kern/vfs_syscalls.c: revision 1.478 sys/kern/vfs_syscalls.c: revision 1.479 sys/fs/puffs/puffs_vfsops.c: revision 1.110 sys/fs/cd9660/cd9660_vfsops.c: revision 1.84 sys/nfs/nfs_vfsops.c: revision 1.227 sys/fs/v7fs/v7fs_vfsops.c: revision 1.10 sys/ufs/ext2fs/ext2fs_vfsops.c: revision 1.180 sys/miscfs/umapfs/umap_vfsops.c: revision 1.92 sys/fs/filecorefs/filecore_vfsops.c: revision 1.76 sys/miscfs/nullfs/null_vfsops.c: revision 1.88 sys/fs/ptyfs/ptyfs_vfsops.c: revision 1.50 sys/coda/coda_vfsops.c: revision 1.81 sys/ufs/lfs/lfs_vfsops.c: revision 1.321 sys/fs/tmpfs/tmpfs_vfsops.c: revision 1.59 sys/fs/hfs/hfs_vfsops.c: revision 1.31 sys/miscfs/overlay/overlay_vfsops.c: revision 1.61 sys/fs/union/union_vfsops.c: revision 1.72 sys/fs/ntfs/ntfs_vfsops.c: revision 1.94 sys/kern/vfs_syscalls.c: revision 1.480 sys/fs/efs/efs_vfsops.c: revision 1.25 sys/kern/vfs_syscalls.c: revision 1.482 sys/fs/msdosfs/msdosfs_vfsops.c: revision 1.107 external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vfsops.c: revision 1.12 sys/miscfs/procfs/procfs_vfsops.c: revision 1.91 sys/fs/smbfs/smbfs_vfsops.c: revision 1.100 sys/fs/adosfs/advfsops.c: revision 1.70 sys/fs/udf/udf_vfsops.c: revision 1.67 Limit check for 'data_len'. Otherwise a (un)privileged user can easily panic the system by passing a huge size. ok christos@ An (un)privileged user can easily make the kernel dereference a NULL pointer. The kernel allows 'data' to be NULL; it's the fs's responsibility to ensure that it isn't NULL (if the fs actually needs data). ok christos@ Some fs's - like kernfs - set their vfs_min_mount_data to zero. Add a check to prevent an (un)privileged user from requesting a zero-sized allocation (and thus a panic). This thing is totally buggy: 'data_len' is modified by the fs, so calling kmem_free with it while its value has changed since the kmem_alloc is far from being a good idea. If the kernel figures out that something mismatches, it will panic (typically with kernfs).
|
| 1.100.8.2 |
| 12-Aug-2012 |
martin | branches: 1.100.8.2.4; 1.100.8.2.6; 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.100.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.100.8.2.6.1 |
| 21-Apr-2014 |
bouyer | Pull up following revision(s) (requested by maxv in ticket #1050): sys/ufs/chfs/chfs_vfsops.c: revision 1.11 sys/fs/unionfs/unionfs_vfsops.c: revision 1.13 sys/fs/nilfs/nilfs_vfsops.c: revision 1.16 sys/ufs/mfs/mfs_vfsops.c: revision 1.107 sys/fs/sysvbfs/sysvbfs_vfsops.c: revision 1.43 sys/ufs/ffs/ffs_vfsops.c: revision 1.297 sys/kern/vfs_syscalls.c: revision 1.478 sys/kern/vfs_syscalls.c: revision 1.479 sys/fs/puffs/puffs_vfsops.c: revision 1.110 sys/fs/cd9660/cd9660_vfsops.c: revision 1.84 sys/nfs/nfs_vfsops.c: revision 1.227 sys/fs/v7fs/v7fs_vfsops.c: revision 1.10 sys/ufs/ext2fs/ext2fs_vfsops.c: revision 1.180 sys/miscfs/umapfs/umap_vfsops.c: revision 1.92 sys/fs/filecorefs/filecore_vfsops.c: revision 1.76 sys/miscfs/nullfs/null_vfsops.c: revision 1.88 sys/fs/ptyfs/ptyfs_vfsops.c: revision 1.50 sys/coda/coda_vfsops.c: revision 1.81 sys/ufs/lfs/lfs_vfsops.c: revision 1.321 sys/fs/tmpfs/tmpfs_vfsops.c: revision 1.59 sys/fs/hfs/hfs_vfsops.c: revision 1.31 sys/miscfs/overlay/overlay_vfsops.c: revision 1.61 sys/fs/union/union_vfsops.c: revision 1.72 sys/fs/ntfs/ntfs_vfsops.c: revision 1.94 sys/kern/vfs_syscalls.c: revision 1.480 sys/fs/efs/efs_vfsops.c: revision 1.25 sys/kern/vfs_syscalls.c: revision 1.482 sys/fs/msdosfs/msdosfs_vfsops.c: revision 1.107 external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vfsops.c: revision 1.12 sys/miscfs/procfs/procfs_vfsops.c: revision 1.91 sys/fs/smbfs/smbfs_vfsops.c: revision 1.100 sys/fs/adosfs/advfsops.c: revision 1.70 sys/fs/udf/udf_vfsops.c: revision 1.67 Limit check for 'data_len'. Otherwise a (un)privileged user can easily panic the system by passing a huge size. ok christos@ An (un)privileged user can easily make the kernel dereference a NULL pointer. The kernel allows 'data' to be NULL; it's the fs's responsibility to ensure that it isn't NULL (if the fs actually needs data). ok christos@ Some fs's - like kernfs - set their vfs_min_mount_data to zero. Add a check to prevent an (un)privileged user from requesting a zero-sized allocation (and thus a panic). This thing is totally buggy: 'data_len' is modified by the fs, so calling kmem_free with it while its value has changed since the kmem_alloc is far from being a good idea. If the kernel figures out that something mismatches, it will panic (typically with kernfs).
|
| 1.100.8.2.4.1 |
| 21-Apr-2014 |
bouyer | Pull up following revision(s) (requested by maxv in ticket #1050): sys/ufs/chfs/chfs_vfsops.c: revision 1.11 sys/fs/unionfs/unionfs_vfsops.c: revision 1.13 sys/fs/nilfs/nilfs_vfsops.c: revision 1.16 sys/ufs/mfs/mfs_vfsops.c: revision 1.107 sys/fs/sysvbfs/sysvbfs_vfsops.c: revision 1.43 sys/ufs/ffs/ffs_vfsops.c: revision 1.297 sys/kern/vfs_syscalls.c: revision 1.478 sys/kern/vfs_syscalls.c: revision 1.479 sys/fs/puffs/puffs_vfsops.c: revision 1.110 sys/fs/cd9660/cd9660_vfsops.c: revision 1.84 sys/nfs/nfs_vfsops.c: revision 1.227 sys/fs/v7fs/v7fs_vfsops.c: revision 1.10 sys/ufs/ext2fs/ext2fs_vfsops.c: revision 1.180 sys/miscfs/umapfs/umap_vfsops.c: revision 1.92 sys/fs/filecorefs/filecore_vfsops.c: revision 1.76 sys/miscfs/nullfs/null_vfsops.c: revision 1.88 sys/fs/ptyfs/ptyfs_vfsops.c: revision 1.50 sys/coda/coda_vfsops.c: revision 1.81 sys/ufs/lfs/lfs_vfsops.c: revision 1.321 sys/fs/tmpfs/tmpfs_vfsops.c: revision 1.59 sys/fs/hfs/hfs_vfsops.c: revision 1.31 sys/miscfs/overlay/overlay_vfsops.c: revision 1.61 sys/fs/union/union_vfsops.c: revision 1.72 sys/fs/ntfs/ntfs_vfsops.c: revision 1.94 sys/kern/vfs_syscalls.c: revision 1.480 sys/fs/efs/efs_vfsops.c: revision 1.25 sys/kern/vfs_syscalls.c: revision 1.482 sys/fs/msdosfs/msdosfs_vfsops.c: revision 1.107 external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vfsops.c: revision 1.12 sys/miscfs/procfs/procfs_vfsops.c: revision 1.91 sys/fs/smbfs/smbfs_vfsops.c: revision 1.100 sys/fs/adosfs/advfsops.c: revision 1.70 sys/fs/udf/udf_vfsops.c: revision 1.67 Limit check for 'data_len'. Otherwise a (un)privileged user can easily panic the system by passing a huge size. ok christos@ An (un)privileged user can easily make the kernel dereference a NULL pointer. The kernel allows 'data' to be NULL; it's the fs's responsibility to ensure that it isn't NULL (if the fs actually needs data). ok christos@ Some fs's - like kernfs - set their vfs_min_mount_data to zero. Add a check to prevent an (un)privileged user from requesting a zero-sized allocation (and thus a panic). This thing is totally buggy: 'data_len' is modified by the fs, so calling kmem_free with it while its value has changed since the kmem_alloc is far from being a good idea. If the kernel figures out that something mismatches, it will panic (typically with kernfs).
|
| 1.100.6.1 |
| 29-Apr-2012 |
mrg | sync to latest -current.
|
| 1.100.2.4 |
| 22-May-2014 |
yamt | sync with head.
for a reference, the tree before this commit was tagged as yamt-pagecache-tag8.
this commit was splitted into small chunks to avoid a limitation of cvs. ("Protocol error: too many arguments")
|
| 1.100.2.3 |
| 23-Jan-2013 |
yamt | sync with head
|
| 1.100.2.2 |
| 30-Oct-2012 |
yamt | sync with head
|
| 1.100.2.1 |
| 17-Apr-2012 |
yamt | sync with head
|
| 1.106.2.3 |
| 03-Dec-2017 |
jdolecek | update from HEAD
|
| 1.106.2.2 |
| 20-Aug-2014 |
tls | Rebase to HEAD as of a few days ago.
|
| 1.106.2.1 |
| 25-Feb-2013 |
tls | resync with head
|
| 1.107.2.1 |
| 18-May-2014 |
rmind | sync with head
|
| 1.109.2.1 |
| 10-Aug-2014 |
tls | Rebase.
|
| 1.113.2.4 |
| 15-Mar-2015 |
snj | Pull up following revision(s) (requested by tron in ticket #587): sys/fs/puffs/puffs_vfsops.c: revision 1.117 Remove debug printf
|
| 1.113.2.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.113.2.2 |
| 17-Jan-2015 |
martin | Pull up following revision(s) (requested by maxv in ticket #427): sys/compat/svr4/svr4_schedctl.c: revision 1.8 sys/netinet/tcp_timer.c: revision 1.88 sys/miscfs/genfs/layer_vfsops.c: revision 1.45 sys/compat/svr4/svr4_ioctl.c: revision 1.37 sys/ufs/chfs/chfs_vfsops.c: revision 1.14 sys/miscfs/fdesc/fdesc_vfsops.c: revision 1.91 sys/compat/linux/arch/i386/linux_ptrace.c: revision 1.30 sys/compat/common/kern_time_50.c: revision 1.28 sys/netinet6/ip6_forward.c: revision 1.74 sys/miscfs/umapfs/umap_vnops.c: revision 1.57 sys/compat/svr4/svr4_fcntl.c: revision 1.74 distrib/sets/lists/comp/mi: revision 1.1931 sys/netinet6/udp6_output.c: revision 1.46 sys/fs/puffs/puffs_compat.c: revision 1.3 sys/fs/udf/udf_rename.c: revision 1.11 sys/compat/svr4/svr4_filio.c: revision 1.24 sys/fs/udf/udf_rename.c: revision 1.12 sys/netinet/tcp_usrreq.c: revision 1.202 sys/miscfs/umapfs/umap_subr.c: revision 1.29 sys/compat/linux/common/linux_fadvise64.c: revision 1.3 sys/netinet/if_atm.c: revision 1.34 sys/miscfs/procfs/procfs_subr.c: revision 1.106 sys/miscfs/genfs/layer_subr.c: revision 1.37 sys/netinet/tcp_sack.c: revision 1.30 sys/compat/freebsd/freebsd_misc.c: revision 1.33 sys/compat/freebsd/freebsd_file.c: revision 1.33 sys/ufs/chfs/chfs_vnode.c: revision 1.12 sys/compat/svr4/svr4_ttold.c: revision 1.34 sys/compat/linux/common/linux_file.c: revision 1.114 sys/compat/linux/arch/mips/linux_machdep.c: revision 1.43 sys/compat/linux/common/linux_signal.c: revision 1.76 sys/compat/common/compat_util.c: revision 1.46 sys/compat/linux/arch/arm/linux_ptrace.c: revision 1.18 sys/compat/svr4/svr4_sockio.c: revision 1.36 sys/compat/linux/arch/arm/linux_machdep.c: revision 1.32 sys/compat/svr4/svr4_signal.c: revision 1.66 sys/kern/kern_exec.c: revision 1.410 sys/fs/puffs/puffs_vfsops.c: revision 1.115 sys/compat/svr4/svr4_exec_elf64.c: revision 1.15 sys/compat/linux/arch/i386/linux_machdep.c: revision 1.159 sys/compat/linux/arch/alpha/linux_machdep.c: revision 1.50 sys/compat/linux32/common/linux32_misc.c: revision 1.24 sys/netinet/in_pcb.c: revision 1.153 sys/sys/malloc.h: revision 1.116 sys/compat/common/if_43.c: revision 1.9 share/man/man9/Makefile: revision 1.380 sys/netinet/tcp_vtw.c: revision 1.12 sys/miscfs/umapfs/umap_vfsops.c: revision 1.95 sys/ufs/ext2fs/ext2fs_vfsops.c: revision 1.186 sys/compat/common/uipc_syscalls_43.c: revision 1.46 sys/ufs/ext2fs/ext2fs_vnops.c: revision 1.115 sys/fs/puffs/puffs_msgif.c: revision 1.97 sys/compat/svr4/svr4_ipc.c: revision 1.27 sys/compat/linux/common/linux_exec.c: revision 1.117 sys/ufs/ext2fs/ext2fs_readwrite.c: revision 1.66 sys/netinet/tcp_output.c: revision 1.179 sys/compat/svr4/svr4_termios.c: revision 1.28 sys/fs/udf/udf_strat_bootstrap.c: revision 1.4 sys/fs/puffs/puffs_subr.c: revision 1.67 sys/fs/puffs/puffs_node.c: revision 1.36 sys/miscfs/overlay/overlay_vnops.c: revision 1.21 sys/fs/cd9660/cd9660_node.c: revision 1.34 sys/netinet/raw_ip.c: revision 1.146 sys/sys/mallocvar.h: revision 1.13 sys/miscfs/overlay/overlay_vfsops.c: revision 1.63 share/man/man9/malloc.9: revision 1.50 sys/netinet6/dest6.c: revision 1.18 sys/compat/linux/common/linux_uselib.c: revision 1.33 sys/compat/linux/common/linux_socket.c: revision 1.120 share/man/man9/malloc.9: revision 1.51 sys/netinet/tcp_subr.c: revision 1.257 sys/compat/linux/common/linux_socketcall.c: revision 1.45 sys/compat/linux/common/linux_fadvise64_64.c: revision 1.3 sys/compat/freebsd/freebsd_ipc.c: revision 1.17 sys/compat/linux/common/linux_misc_notalpha.c: revision 1.109 sys/compat/linux/arch/alpha/linux_pipe.c: revision 1.17 sys/netinet6/in6_pcb.c: revision 1.132 sys/netinet6/in6_ifattach.c: revision 1.94 sys/compat/svr4/svr4_exec_elf32.c: revision 1.15 sys/miscfs/nullfs/null_vfsops.c: revision 1.90 sys/fs/cd9660/cd9660_util.c: revision 1.12 sys/compat/linux/arch/powerpc/linux_machdep.c: revision 1.48 sys/compat/freebsd/freebsd_exec_elf32.c: revision 1.20 sys/miscfs/procfs/procfs_vfsops.c: revision 1.94 sys/compat/linux/arch/powerpc/linux_ptrace.c: revision 1.28 sys/compat/linux/common/linux_sched.c: revision 1.67 sys/compat/linux/common/linux_exec_aout.c: revision 1.67 sys/compat/linux/common/linux_pipe.c: revision 1.67 sys/compat/linux/common/linux_llseek.c: revision 1.34 sys/compat/linux/arch/mips/linux_ptrace.c: revision 1.10 Do not uselessly include <sys/malloc.h>. Cleanup: - remove struct kmembuckets (dead) - correctly deadify MALLOC_XX - remove MALLOC_DEFINE_LIMIT and MALLOC_JUSTDEFINE_LIMIT (dead) - remove malloc_roundup(), malloc_type_setlimit(), MALLOC_DEFINE_LIMIT() and MALLOC_JUSTDEFINE_LIMIT() from man 9 malloc New sentence, new line. Bump date for previous. Obsolete malloc_roundup(9), malloc_type_setlimit(9) and MALLOC_DEFINE_LIMIT(9) man pages.
|
| 1.113.2.1 |
| 29-Aug-2014 |
martin | Pull up following revision(s) (requested by hannken in ticket #67): sys/fs/puffs/puffs_sys.h: revision 1.86 sys/fs/puffs/puffs_vfsops.c: revision 1.114 sys/fs/puffs/puffs_msgif.c: revision 1.95 sys/fs/puffs/puffs_node.c: revision 1.32 sys/fs/puffs/puffs_vnops.c: revision 1.184 Change puffs from hashlist to vcache. - field "pa_nhashbuckets" of struct "puffs_kargs" becomes a no-op. and should be removed on the next protocol version bump.
|
| 1.115.2.3 |
| 28-Aug-2017 |
skrll | Sync with HEAD
|
| 1.115.2.2 |
| 27-Dec-2015 |
skrll | Sync with HEAD (as of 26th Dec)
|
| 1.115.2.1 |
| 06-Apr-2015 |
skrll | Sync with HEAD
|
| 1.118.4.1 |
| 21-Apr-2017 |
bouyer | Sync with HEAD
|
| 1.118.2.2 |
| 26-Apr-2017 |
pgoyette | Sync with HEAD
|
| 1.118.2.1 |
| 20-Mar-2017 |
pgoyette | Sync with HEAD
|
| 1.120.12.1 |
| 25-Jun-2018 |
pgoyette | Sync with HEAD
|
| 1.121.2.2 |
| 13-Apr-2020 |
martin | Mostly merge changes from HEAD upto 20200411
|
| 1.121.2.1 |
| 08-Apr-2020 |
martin | Merge changes from current as of 20200406
|
| 1.123.2.2 |
| 29-Feb-2020 |
ad | Sync with head.
|
| 1.123.2.1 |
| 17-Jan-2020 |
ad | Sync with head.
|
| 1.125.8.1 |
| 03-Apr-2021 |
thorpej | Sync with HEAD.
|
| 1.125.6.1 |
| 03-Apr-2021 |
thorpej | Sync with HEAD.
|