| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
| |
function calls are no more generated for vop_lock.
Rename _vop_lock to vop_lock1 to satisfy tools/vnode_if.awk assumption
about vop naming conventions. This restores pre/post-condition calls.
Notes:
svn path=/head/; revision=169671
|
| |
|
|
|
|
|
|
|
| |
do it.
Suggested by: rwatson
Notes:
svn path=/head/; revision=166795
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This way we may support multiple structures in v_data vnode field within
one file system without using black magic.
Vnode-to-file-handle should be VOP in the first place, but was made VFS
operation to keep interface as compatible as possible with SUN's VFS.
BTW. Now Solaris also implements vnode-to-file-handle as VOP operation.
VFS_VPTOFH() was left for API backward compatibility, but is marked for
removal before 8.0-RELEASE.
Approved by: mckusick
Discussed with: many (on IRC)
Tested with: ufs, msdosfs, cd9660, nullfs and zfs
Notes:
svn path=/head/; revision=166774
|
| |
|
|
|
|
|
|
|
| |
acquisition of lockmgr locks
Approved by: scottl (standing in for mentor rwatson)
Notes:
svn path=/head/; revision=164248
|
| |
|
|
|
|
|
| |
default VOP_GETWRITEMOUNT().
Notes:
svn path=/head/; revision=162455
|
| |
|
|
|
|
|
|
|
|
|
| |
identity from changing. This is possible now that mounts are not freed.
Discussed with: tegge
Tested by: kris
Sponsored by: Isilon Systems, Inc.
Notes:
svn path=/head/; revision=157323
|
| |
|
|
|
|
|
|
| |
and then vrele rather than vput because we would like to VOP_UNLOCK with
a specific thread.
Notes:
svn path=/head/; revision=155032
|
| |
|
|
|
|
|
|
|
| |
iterated over when using MNT_VNODE_FOREACH.
Reviewed by: truckman
Notes:
svn path=/head/; revision=154152
|
| |
|
|
| |
Notes:
svn path=/head/; revision=153400
|
| |
|
|
| |
Notes:
svn path=/head/; revision=149175
|
| |
|
|
|
|
|
|
|
|
| |
caller by saving the stack of the last locker/unlocker in lockmgr. We
also put the stack in KTR at the moment.
Contributed by: Antoine Brodin <antoine.brodin@laposte.net>
Notes:
svn path=/head/; revision=148668
|
| |
|
|
|
|
|
|
| |
Sponsored by: Isilon Systems, Inc.
Approved by: re (blanket vfs)
Notes:
svn path=/head/; revision=147388
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
UFS by:
- Making the pre and post hooks for the VOP functions work even when
DEBUG_VFS_LOCKS is not defined.
- Moving the KNOTE activations into the corresponding VOP hooks.
- Creating a MNTK_NOKNOTE flag for the mnt_kern_flag field of struct
mount that permits filesystems to disable the new behavior.
- Creating a default VOP_KQFILTER function: vfs_kqfilter()
My benchmarks have not revealed any performance degradation.
Reviewed by: jeff, bde
Approved by: rwatson, jmg (kqueue changes), grehan (mentor)
Notes:
svn path=/head/; revision=147198
|
| |
|
|
| |
Notes:
svn path=/head/; revision=145732
|
| |
|
|
|
|
|
|
|
|
|
|
| |
generate dirty bufs even with a locked vnode, 100 retries is not that
many. This should probably change from a retry count to an abort when
we are no longer cleaning any buffers.
- Don't call vprint() while we still hold the vnode locked. Move the call
to later in the function.
- Clean up a comment.
Notes:
svn path=/head/; revision=144584
|
| |
|
|
|
|
|
| |
Sponsored by: Isilon Systems, Inc.
Notes:
svn path=/head/; revision=144054
|
| |
|
|
|
|
|
|
|
| |
will do for vop_stdinactive now.
Sponsored by: Isilon Systems, Inc.
Notes:
svn path=/head/; revision=143494
|
| |
|
|
|
|
|
|
|
|
| |
which is long gone.
Discussed with: mckusick
Reviewed by: phk
Notes:
svn path=/head/; revision=142153
|
| |
|
|
| |
Notes:
svn path=/head/; revision=141448
|
| |
|
|
|
|
|
|
|
|
| |
function vnode_destroy_vobject().
Make the new function zero the vp->v_object pointer so we can tell
if a call is missing.
Notes:
svn path=/head/; revision=140929
|
| |
|
|
| |
Notes:
svn path=/head/; revision=140783
|
| |
|
|
|
|
|
| |
for a given vnode to create a vnode_pager object if one is needed.
Notes:
svn path=/head/; revision=140781
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
the name Sande^H^H^H^H^Hvnode_create_vobject().
Make the new function take a size argument which removes the need for
a VOP_STAT() or a very pessimistic guess for disks.
Call that new function from vop_stdcreatevobject().
Make vnode_pager_alloc() private now that its only user came home.
Notes:
svn path=/head/; revision=140767
|
| |
|
|
| |
Notes:
svn path=/head/; revision=140734
|
| |
|
|
|
|
|
| |
Sponsored By: Isilon Systems, Inc.
Notes:
svn path=/head/; revision=140717
|
| |
|
|
|
|
|
| |
directly.
Notes:
svn path=/head/; revision=140181
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I'm not sure why a credential was added to these in the first place, it is
not used anywhere and it doesn't make much sense:
The credentials for syncing a file (ability to write to the
file) should be checked at the system call level.
Credentials for syncing one or more filesystems ("none")
should be checked at the system call level as well.
If the filesystem implementation needs a particular credential
to carry out the syncing it would logically have to the
cached mount credential, or a credential cached along with
any delayed write data.
Discussed with: rwatson
Notes:
svn path=/head/; revision=140048
|
| |
|
|
| |
Notes:
svn path=/head/; revision=139804
|
| |
|
|
|
|
|
| |
Tripped up: marks
Notes:
svn path=/head/; revision=138339
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
initializations but we did have lofty goals and big ideals.
Adjust to more contemporary circumstances and gain type checking.
Replace the entire vop_t frobbing thing with properly typed
structures. The only casualty is that we can not add a new
VOP_ method with a loadable module. History has not given
us reason to belive this would ever be feasible in the the
first place.
Eliminate in toto VOCALL(), vop_t, VNODEOP_SET() etc.
Give coda correct prototypes and function definitions for
all vop_()s.
Generate a bit more data from the vnode_if.src file: a
struct vop_vector and protype typedefs for all vop methods.
Add a new vop_bypass() and make vop_default be a pointer
to another struct vop_vector.
Remove a lot of vfs_init since vop_vector is ready to use
from the compiler.
Cast various vop_mumble() to void * with uppercase name,
for instance VOP_PANIC, VOP_NULL etc.
Implement VCALL() by making vdesc_offset the offsetof() the
relevant function pointer in vop_vector. This is disgusting
but since the code is generated by a script comparatively
safe. The alternative for nullfs etc. would be much worse.
Fix up all vnode method vectors to remove casts so they
become typesafe. (The bulk of this is generated by scripts)
Notes:
svn path=/head/; revision=138290
|
| |
|
|
| |
Notes:
svn path=/head/; revision=137845
|
| |
|
|
|
|
|
|
|
|
|
|
| |
instead of a vnode for it.
The vnode_pager does not and should not have any interest in what
the filesystem uses for backend.
(vfs_cluster doesn't use the backing store argument.)
Notes:
svn path=/head/; revision=137726
|
| |
|
|
|
|
|
| |
get here in the first place.
Notes:
svn path=/head/; revision=137677
|
| |
|
|
|
|
|
|
| |
Remove improper access to vop_stdgetwritemount() which should and
will instead rely on the VOP default path.
Notes:
svn path=/head/; revision=137308
|
| |
|
|
|
|
|
|
|
|
|
|
| |
because this call is only needed to wake threads that slept when they
discovered a dead object connected to a vnode. To eliminate unnecessary
calls to wakeup() by vnode_pager_dealloc(), introduce a new flag,
OBJ_DISCONNECTWNT.
Reviewed by: tegge@
Notes:
svn path=/head/; revision=137297
|
| |
|
|
| |
Notes:
svn path=/head/; revision=137043
|
| |
|
|
|
|
|
|
| |
Eliminate a printf which would never tell us anything anyway because the
KASSERT would have triggered.
Notes:
svn path=/head/; revision=136990
|
| |
|
|
|
|
|
|
| |
Check the count field where we just want to know the full/empty state,
rather than using TAILQ_EMPTY() or TAILQ_FIRST().
Notes:
svn path=/head/; revision=136943
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Add bufobj_wref(), bufobj_wdrop() and bufobj_wwait() to handle the write
count on a bufobj. Bufobj_wdrop() replaces vwakeup().
Use these functions all relevant places except in ffs_softdep.c where
the use if interlocked_sleep() makes this impossible.
Rename b_vnbufs to b_bobufs now that we touch all the relevant files anyway.
Notes:
svn path=/head/; revision=136751
|
| |
|
|
|
|
|
| |
(repeat, CVS core dumped on me)
Notes:
svn path=/head/; revision=135711
|
| |
|
|
| |
Notes:
svn path=/head/; revision=135710
|
| |
|
|
|
|
|
|
|
| |
This is to allow filesystems to decide based on the passed thread
which vnode to return.
Several filesystems used curthread, they now use the passed thread.
Notes:
svn path=/head/; revision=132023
|
| |
|
|
| |
Notes:
svn path=/head/; revision=131734
|
| |
|
|
| |
Notes:
svn path=/head/; revision=131733
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
our cached 'next vnode' being removed from this mountpoint. If we
find that it was recycled, we restart our traversal from the start
of the list.
Code to do that is in all local disk filesystems (and a few other
places) and looks roughly like this:
MNT_ILOCK(mp);
loop:
for (vp = TAILQ_FIRST(&mp...);
(vp = nvp) != NULL;
nvp = TAILQ_NEXT(vp,...)) {
if (vp->v_mount != mp)
goto loop;
MNT_IUNLOCK(mp);
...
MNT_ILOCK(mp);
}
MNT_IUNLOCK(mp);
The code which takes vnodes off a mountpoint looks like this:
MNT_ILOCK(vp->v_mount);
...
TAILQ_REMOVE(&vp->v_mount->mnt_nvnodelist, vp, v_nmntvnodes);
...
MNT_IUNLOCK(vp->v_mount);
...
vp->v_mount = something;
(Take a moment and try to spot the locking error before you read on.)
On a SMP system, one CPU could have removed nvp from our mountlist
but not yet gotten to assign a new value to vp->v_mount while another
CPU simultaneously get to the top of the traversal loop where it
finds that (vp->v_mount != mp) is not true despite the fact that
the vnode has indeed been removed from our mountpoint.
Fix:
Introduce the macro MNT_VNODE_FOREACH() to traverse the list of
vnodes on a mountpoint while taking into account that vnodes may
be removed from the list as we go. This saves approx 65 lines of
duplicated code.
Split the insmntque() which potentially moves a vnode from one mount
point to another into delmntque() and insmntque() which does just
what the names say.
Fix delmntque() to set vp->v_mount to NULL while holding the
mountpoint lock.
Notes:
svn path=/head/; revision=131551
|
| |
|
|
|
|
|
|
|
| |
per letter dated July 22, 1999.
Approved by: core
Notes:
svn path=/head/; revision=127911
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
stuff was here (NFS) was fixed by Alfred in November. The only remaining
consumer of the stub functions was umapfs, which is horribly horribly
broken. It has missed out on about the last 5 years worth of maintenence
that was done on nullfs (from which umapfs is derived). It needs major
work to bring it up to date with the vnode locking protocol. umapfs really
needs to find a caretaker to bring it into the 21st century.
Functions GC'ed:
vop_noislocked, vop_nolock, vop_nounlock, vop_sharedlock.
Notes:
svn path=/head/; revision=127592
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Introduce two new macros MNT_ILOCK(mp)/MNT_IUNLOCK(mp) to
operate on this mutex transparently.
Eventually new mutex will be protecting more fields in
struct mount, not only vnode list.
Discussed with: jeff
Notes:
svn path=/head/; revision=122091
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
wasn't curthread, i.e. when we receive a thread pointer to use
as a function argument. Use VOP_UNLOCK/vrele in these cases.
The only case there td != curthread known at the moment is
boot() calling sync with thread0 pointer.
This fixes the panic on shutdown people have reported.
Notes:
svn path=/head/; revision=121874
|
| |
|
|
|
|
|
|
|
|
|
| |
It is unsafe to hold a mutex across vput/vrele calls.
This will be redone when a better locking strategy is agreed upon.
Discussed with: jeff
Notes:
svn path=/head/; revision=121847
|