#
8abbca48 |
| 20-Oct-2021 |
thorpej <thorpej@NetBSD.org> |
Overhaul of the EVFILT_VNODE kevent(2) filter:
- Centralize vnode kevent handling in the VOP_*() wrappers, rather than forcing each individual file system to deal with it (except VOP_RENAME(), b
Overhaul of the EVFILT_VNODE kevent(2) filter:
- Centralize vnode kevent handling in the VOP_*() wrappers, rather than forcing each individual file system to deal with it (except VOP_RENAME(), because VOP_RENAME() is a mess and we currently have 2 different ways of handling it; at least it's reasonably well-centralized in the "new" way). - Add support for NOTE_OPEN, NOTE_CLOSE, NOTE_CLOSE_WRITE, and NOTE_READ, compatible with the same events in FreeBSD. - Track which kevent notifications clients are interested in receiving to avoid doing work for events no one cares about (avoiding, e.g. taking locks and traversing the klist to send a NOTE_WRITE when someone is merely watching for a file to be deleted, for example).
In support of the above:
- Add support in vnode_if.sh for specifying PRE- and POST-op handlers, to be invoked before and after vop_pre() and vop_post(), respectively. Basic idea from FreeBSD, but implemented differently. - Add support in vnode_if.sh for specifying CONTEXT fields in the vop_*_args structures. These context fields are used to convey information between the file system VOP function and the VOP wrapper, but do not occupy an argument slot in the VOP_*() call itself. These context fields are initialized and subsequently interpreted by PRE- and POST-op handlers. - Version VOP_REMOVE(), uses the a context field for the file system to report back the resulting link count of the target vnode. Return this in tmpfs, udf, nfs, chfs, ext2fs, lfs, and ufs.
NetBSD 9.99.92.
show more ...
|
#
854e06da |
| 18-Jul-2021 |
dholland <dholland@NetBSD.org> |
Abolish all the silly indirection macros for initializing vnode ops tables.
These are things of the form #define foofs_op genfs_op, or #define foofs_op genfs_eopnotsupp, or similar. They serve no pu
Abolish all the silly indirection macros for initializing vnode ops tables.
These are things of the form #define foofs_op genfs_op, or #define foofs_op genfs_eopnotsupp, or similar. They serve no purpose besides obfuscation, and have gotten cutpasted all over everywhere.
show more ...
|
#
84f30772 |
| 18-Jul-2021 |
dholland <dholland@NetBSD.org> |
Use macros for the canned parts of device and fifo vnode op tables.
Add GENFS_SPECOP_ENTRIES and GENFS_FIFOOP_ENTRIES macros that contain the portion of the vnode ops table declaration that is (cons
Use macros for the canned parts of device and fifo vnode op tables.
Add GENFS_SPECOP_ENTRIES and GENFS_FIFOOP_ENTRIES macros that contain the portion of the vnode ops table declaration that is (conservatively) the same in every fs. Use these in every fs that supports devices and/or fifos with separate ops tables.
Note that ptyfs works differently (it has one type of vnode with open-coded dispatch to the specfs code, which I haven't changed in this commit) and rump/librump/rumpvfs/rumpfs.c has an indirect dynamic dispatch that already does more or less the same thing, which I also haven't changed.
Also note that this anticipates a few bits in the next changeset here and there, and adds missing but unreachable calls in some cases (e.g. most fses weren't defining whiteout on devices and fifos, but it isn't reachable there), and it changes parsepath on devices and fifos to genfs_badop from genfs_parsepath (but it's not reachable there either).
It appears that devices in kernfs were missing kqfilter, so it's possible that if you try to use kqueue on /kern/rootdev that it'll explode.
And finally note that the ops declaration tables aren't order-dependent. (Other than vop_default_desc has to come first.) Otherwise this wouldn't work.
show more ...
|
#
18a3dc4f |
| 29-Jun-2021 |
dholland <dholland@NetBSD.org> |
- Add a new vnode op: VOP_PARSEPATH. - Move namei_getcomponent to genfs_vnops.c and call it genfs_parsepath. - Add a parsepath entry to every vnode ops table.
VOP_PARSEPATH takes a directory vnode
- Add a new vnode op: VOP_PARSEPATH. - Move namei_getcomponent to genfs_vnops.c and call it genfs_parsepath. - Add a parsepath entry to every vnode ops table.
VOP_PARSEPATH takes a directory vnode to be searched and a complete following path and chooses how much of that path to consume. To begin with, all parsepath calls are genfs_parsepath, which locates the first '/' as always.
Note that the call doesn't take the whole struct componentname, only the string. The other bits of struct componentname should not be needed and there's no reason to cause potential complications by exposing them.
show more ...
|
#
ea5c7e85 |
| 05-Sep-2020 |
riastradh <riastradh@NetBSD.org> |
Round of uvm.h cleanup.
The poorly named uvm.h is generally supposed to be for uvm-internal users only.
- Narrow it to files that actually need it -- mostly files that need to query whether curlw
Round of uvm.h cleanup.
The poorly named uvm.h is generally supposed to be for uvm-internal users only.
- Narrow it to files that actually need it -- mostly files that need to query whether curlwp is the pagedaemon, which should maybe be exposed by an external header.
- Use uvm_extern.h where feasible and uvm_*.h for things not exposed by it. We should split up uvm_extern.h but this will serve for now to reduce the uvm.h dependencies.
- Use uvm_stat.h and #ifdef UVMHIST uvm.h for files that use UVMHIST(ubchist), since ubchist is declared in uvm.h but the reference evaporates if UVMHIST is not defined, so we reduce header file dependencies.
- Make uvm_device.h and uvm_swap.h independently includable while here.
ok chs@
show more ...
|
#
f44898a7 |
| 05-Sep-2020 |
riastradh <riastradh@NetBSD.org> |
Revert "ufs: Prevent mkdir from choking on deleted directories."
This change made no sense and should not have been committed.
|
#
10f448a3 |
| 05-Sep-2020 |
riastradh <riastradh@NetBSD.org> |
ufs: Prevent mkdir from choking on deleted directories.
Fix some missing uvm_vnp_setsize in screw cases while here.
|
#
b9c1fd7f |
| 16-May-2020 |
christos <christos@NetBSD.org> |
Add ACL support for FFS. From FreeBSD.
|
#
044036dd |
| 13-Apr-2020 |
ad <ad@NetBSD.org> |
Replace most uses of vp->v_usecount with a call to vrefcnt(vp), a function that hides the details and does atomic_load_relaxed(). Signature matches FreeBSD.
|
#
b4dac182 |
| 23-Feb-2020 |
ad <ad@NetBSD.org> |
UVM locking changes, proposed on tech-kern:
- Change the lock on uvm_object, vm_amap and vm_anon to be a RW lock. - Break v_interlock and vmobjlock apart. v_interlock remains a mutex. - Do partial
UVM locking changes, proposed on tech-kern:
- Change the lock on uvm_object, vm_amap and vm_anon to be a RW lock. - Break v_interlock and vmobjlock apart. v_interlock remains a mutex. - Do partial PV list locking in the x86 pmap. Others to follow later.
show more ...
|
#
8247a4cc |
| 23-Feb-2020 |
riastradh <riastradh@NetBSD.org> |
Fix missing <sys/evcnt.h> by removing the evcnts instead.
Just wanted to confirm that a race might happen, and indeed it did. These serve little diagnostic value otherwise.
|
#
d466cfe8 |
| 23-Feb-2020 |
riastradh <riastradh@NetBSD.org> |
Take a reference and fix assertions in lfs_flush_dirops.
Fixes panic:
KASSERT((ip->i_state & IN_ADIROP) == 0) at lfs_vnops.c:1670 lfs_flush_dirops lfs_check lfs_setattr VOP_SETATTR change_mode sys_
Take a reference and fix assertions in lfs_flush_dirops.
Fixes panic:
KASSERT((ip->i_state & IN_ADIROP) == 0) at lfs_vnops.c:1670 lfs_flush_dirops lfs_check lfs_setattr VOP_SETATTR change_mode sys_fchmod syscall
This assertion -- and the assertion that vp->v_uflag has VU_DIROP set -- is valid only until we release lfs_lock, because we may race with lfs_unmark_dirop which will remove the nodes and change the flags.
Further, vp itself is valid only as long as it is referenced, which it is as long as it's on the dchain, but lfs_unmark_dirop drops the dchain's reference.
show more ...
|
#
73cf0e3a |
| 23-Feb-2020 |
riastradh <riastradh@NetBSD.org> |
Change some cheap KDASSERT into KASSERT.
|
#
b69b7058 |
| 23-Feb-2020 |
riastradh <riastradh@NetBSD.org> |
Assert lfs_writer where I think we can now prove it.
|
#
36b23b94 |
| 23-Feb-2020 |
riastradh <riastradh@NetBSD.org> |
Use a marker node to iterate lfs_dchainhd / i_lfs_dchain.
I believe elements can be removed while the lock is dropped, including the next node we're hanging on to.
|
#
a0192c71 |
| 18-Sep-2019 |
christos <christos@NetBSD.org> |
Add newly created vnodes to the namei cache. The rest of the filesystems already did that (or they don't support writing). Discussed in tech-kern.
|
#
c47ed6f0 |
| 20-Jun-2019 |
christos <christos@NetBSD.org> |
unifdef -DLFS_READWRITE ulfs_readwrite.c
|
#
80d7e788 |
| 01-Jan-2019 |
hannken <hannken@NetBSD.org> |
Add "void *extra" argument to vcache_new() so a file system may pass more information about the file to create.
Welcome to 8.99.30
|
#
57bc4763 |
| 11-Aug-2018 |
zafer <zafer@NetBSD.org> |
In lfs_mkdir fix wrong return path in case of EMLINK which causes a panic. Also, check earlier before setting up dirop.
|
#
91c1e8a2 |
| 20-Aug-2017 |
maya <maya@NetBSD.org> |
Fix typo in comment
|
#
50d999f6 |
| 19-Aug-2017 |
maya <maya@NetBSD.org> |
Not much point doing anything after a panic call
|
#
dd107202 |
| 19-Aug-2017 |
maya <maya@NetBSD.org> |
Consistently use {,UN}MARK_VNODE macros rather than function calls.
|
#
f4eb2de3 |
| 26-Jul-2017 |
maya <maya@NetBSD.org> |
change lfs_nextsegsleep and lfs_allclean_wakeup to use condvar
XXX had to use lfs_lock in lfs_segwait, removed kernel_lock, is this appropriate?
|
#
1fa29ef5 |
| 10-Jun-2017 |
maya <maya@NetBSD.org> |
Rename i_flag to i_state.
The similarity to i_flags has previously caused errors.
|
#
61619765 |
| 05-Jun-2017 |
maya <maya@NetBSD.org> |
Correct confusion between i_flag and i_flags These will have to be renamed.
Spotted by Riastradh, thanks!
|