Home | History | Annotate | Download | only in kern
History log of /src/sys/kern/vfs_init.c
RevisionDateAuthorComments
 1.67  07-Dec-2024  riastradh vfs(9): Sprinkle SET_ERROR dtrace probes.

PR kern/58378: Kernel error code origination lacks dtrace probes
 1.66  07-Dec-2024  riastradh vfs(9): Fix some more whitespace issues.

No functional change intended.
 1.65  07-Dec-2024  riastradh vfs(9): Sprinkle KNF.

No functional change intended.
 1.64  23-Sep-2023  ad branches: 1.64.6;
Repply this change with a couple of bugs fixed:

- Do away with separate pool_cache for some kernel objects that have no special
requirements and use the general purpose allocator instead. On one of my
test systems this makes for a small (~1%) but repeatable reduction in system
time during builds presumably because it decreases the kernel's cache /
memory bandwidth footprint a little.
- vfs_lockf: cache a pointer to the uidinfo and put mutex in the data segment.
 1.63  12-Sep-2023  ad Back out recent change to replace pool_cache with then general allocator.
Will return to this when I have time again.
 1.62  10-Sep-2023  ad - Do away with separate pool_cache for some kernel objects that have no special
requirements and use the general purpose allocator instead. On one of my
test systems this makes for a small (~1%) but repeatable reduction in system
time during builds presumably because it decreases the kernel's cache /
memory bandwidth footprint a little.
- vfs_lockf: cache a pointer to the uidinfo and put mutex in the data segment.
 1.61  29-Apr-2023  riastradh vfs(9): Move SDT_PROVIDER_DEFINE(vfs) from vfs_cache.c to vfs_init.c.

Not a namecache-specific thing.
 1.60  29-Apr-2023  riastradh kern/vfs_init.c: Sort includes. No functional change intended.
 1.59  18-Nov-2022  riastradh kern/vfs_init.c: extern vfs_op_descs got rehomed in sys/vnode.h.
 1.58  26-Oct-2022  riastradh miscfs/fifofs/fifo.h: New home for extern fifo_vnodeop_opv_desc.

Add include guard and fix missing includes while here too.
 1.57  26-Oct-2022  riastradh miscfs/specfs/specdev.h: New home for extern spec_vnodeop_opv_desc.

Also use it for extern spec_vnodeop_p, which is already there.
 1.56  26-Oct-2022  riastradh miscfs/deadfs/deadfs.h: New home for deadfs-related externs.

XXX regen sys/kern/vnode_if.c and the others
 1.55  26-Oct-2022  riastradh sys/mount.h: New home for vfs_timestamp_precision, vfs_magiclinks.
 1.54  12-Feb-2022  thorpej Add inline functions to manipulate the klists that link up knotes
via kn_selnext:

- klist_init()
- klist_fini()
- klist_insert()
- klist_remove()

These provide some API insulation from the implementation details of these
lists (but not completely; see vn_knote_attach() and vn_knote_detach()).
Currently just a wrapper around SLIST(9).

This will make it significantly easier to switch kn_selnext linkage
to a different kind of list.
 1.53  26-Sep-2021  thorpej Fix the locking around EVFILT_FS. Previously, the code would walk the
fs_klist and take the kqueue_misc_lock inside the event callback.
However, that list can be modified by the attach and detach callbacks,
which could result in the walker stepping right off a cliff.

Instead, we give the fs_klist it's own lock, and hold it while we
call knote(), using the NOTE_SUBMIT protocol. Also, fs_filtops
into vfs_syscalls.c so all of the locking logic is contained in one
file (there is precedence with sig_filtops). fs_filtops is now marked
MPSAFE.
 1.52  04-Feb-2021  jdolecek introduce vfs.generic.timestamp_precision sysctl to control precision
of the timer used for vfs_timestamp(); default stays the same
to use nanotime(9), but option is there to use the faster, albeit
less precise methods

code taken from FreeBSD

suggested by Mateusz Guzik in:
http://mail-index.netbsd.org/tech-kern/2020/07/19/msg026620.html
 1.51  16-May-2020  christos branches: 1.51.2;
Add ACL support for FFS. From FreeBSD.
 1.50  21-Feb-2020  joerg Explicitly cast pointers to uintptr_t before casting to enums. They are
not necessarily the same size. Don't cast pointers to bool, check for
NULL instead.
 1.49  28-Mar-2019  maxv branches: 1.49.6;
Move pnbuf_cache into vfs_init.c, where it belongs.
 1.48  06-May-2015  hannken branches: 1.48.18;
Remove miscfs/syncfs and

- move the syncer into kern/vfs_subr.c.

- change the syncer to process the mountlist and VFS_SYNC as appropriate.

- use an API for mount points similiar to the API for vnodes:
- vfs_syncer_add_to_worklist(struct mount *mp) to add
- vfs_syncer_remove_from_worklist(struct mount *mp) to remove a mount.

No objections on tech-kern@
 1.47  25-Feb-2014  pooka branches: 1.47.6;
Ensure that the top level sysctl nodes (kern, vfs, net, ...) exist before
the sysctl link sets are processed, and remove redundancy.

Shaves >13kB off of an amd64 GENERIC, not to mention >1k duplicate
lines of code.
 1.46  13-Mar-2012  elad branches: 1.46.2; 1.46.4;
Replace the remaining KAUTH_GENERIC_ISSUSER authorization calls with
something meaningful. All relevant documentation has been updated or
written.

Most of these changes were brought up in the following messages:

http://mail-index.netbsd.org/tech-kern/2012/01/18/msg012490.html
http://mail-index.netbsd.org/tech-kern/2012/01/19/msg012502.html
http://mail-index.netbsd.org/tech-kern/2012/02/17/msg012728.html

Thanks to christos, manu, njoly, and jmmv for input.

Huge thanks to pgoyette for spinning these changes through some build
cycles and ATF.
 1.45  05-Oct-2009  elad branches: 1.45.12; 1.45.16;
- Add usermount_common_policy() that implements some common (everything
but access control) user mounting policies: enforced MNT_NOSUID and
MNT_NODEV, no MNT_EXPORT, MNT_EXEC propagation. This can be useful for
secmodels that are interested in simply adding finer grained user mount
support.

- Add a mount subsystem listener for KAUTH_REQ_SYSTEM_MOUNT_GET.
 1.44  03-May-2009  elad Move dovfsusermount to secmodel_bsd44, where it really belongs.

The secmodel code now creates the same knob in two places: both under the
secmodel itself, as well as the widely known location.

Mailing list references:

http://mail-index.netbsd.org/source-changes/2009/05/02/msg220641.html
http://mail-index.netbsd.org/tech-kern/2009/05/03/msg005015.html
 1.43  17-Jan-2009  yamt branches: 1.43.2;
malloc -> kmem_alloc.
 1.42  07-Dec-2008  pooka Move some sysctl node creations away from linksets and into the
constructors for subsystems.

XXX: CTLFLAG_PERMANENT is non-sensible.
 1.41  27-Sep-2008  reinoud branches: 1.41.2;
Add generic FS agnostic directory hashing support. Currently only in use by
UDF. Future users could be msdosfs, ufs, nilfs2 (when ready), cd9660 etc.

Note that its not the same as UFS's DIRHASH support; UFS would need a good
cleanup/splitout of directory operations to adopt to this new directory
hashing support since most directory operations are interweaved with the
vnops itself. This is a TODO.
 1.40  10-May-2008  rumble branches: 1.40.4;
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.39  04-May-2008  ad branches: 1.39.2;
Ensure that there is always a link_set_vfsops, until we kill VFS_ATTACH().
 1.38  28-Apr-2008  martin Remove clause 3 and 4 from TNF licenses
 1.37  16-Jan-2008  ad branches: 1.37.6; 1.37.8; 1.37.10;
Pull in my modules code for review/test/hacking.
 1.36  07-Nov-2007  ad branches: 1.36.6;
Merge from vmlocking:

- pool_cache changes.
- Debugger/procfs locking fixes.
- Other minor changes.
 1.35  10-Oct-2007  ad branches: 1.35.2; 1.35.4;
Merge from vmlocking:

- Split vnode::v_flag into three fields, depending on field locking.
- simple_lock -> kmutex in a few places.
- Fix some simple locking problems.
 1.34  27-Jul-2007  pooka branches: 1.34.4; 1.34.6; 1.34.8; 1.34.10;
Move vfs_attach(), vfs_detach() and vfs_reinit() from vfs_subr.c
to vfs_init.c. This permits easier standalone compilation of these
routines.
 1.33  12-Mar-2007  ad branches: 1.33.8;
Pass an ipl argument to pool_init/POOL_INIT to be used when initializing
the pool's lock.
 1.32  01-Nov-2006  yamt branches: 1.32.4; 1.32.8;
remove some __unused from function parameters.
 1.31  12-Oct-2006  christos - sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386
 1.30  27-Dec-2005  chs branches: 1.30.20; 1.30.22;
changes for making DIAGNOSTIC not change the kernel ABI:
- for structure fields that are conditionally present,
make those fields always present.
- for functions which are conditionally inline, make them never inline.
- remove some other functions which are conditionally defined but
don't actually do anything anymore.
- make a lock-debugging function conditional on only LOCKDEBUG.

as discussed on tech-kern some time back.
 1.29  11-Dec-2005  christos merge ktrace-lwp.
 1.28  05-Jun-2005  thorpej branches: 1.28.2;
Use ANSI function decls.
 1.27  29-Mar-2005  thorpej - Define a VFS_ATTACH() macro that places a reference to a vfsops structure
into the "vfsops" link set.
- Use VFS_ATTACH() where vfsops are declared for individual file systems.
- In vfsinit(), traverse the "vfsops" link set, rather than vfs_list_initial[].
 1.26  26-Feb-2005  perry nuke trailing whitespace
 1.25  23-Mar-2004  junyoung branches: 1.25.8; 1.25.10;
Nuke __P().
 1.24  07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.23  17-May-2003  mjl branches: 1.23.2;
Typos in comments.
 1.22  26-Sep-2002  thorpej Overhaul the way parent attachments are specified; instead of using
a vector of indices into the cfdata table to specify potential parents,
record the interface attributes that devices have and add a new "parent
spec" structure which lists the iattr, as well as optionally listing
specific parent device instances.

See:

http://mail-index.netbsd.org/tech-kern/2002/09/25/0014.html

...for a detailed description.

While here, const poison some things, as suggested by Matt Thomas.
 1.21  08-Mar-2002  thorpej Pool deals fairly well with physical memory shortage, but it doesn't
deal with shortages of the VM maps where the backing pages are mapped
(usually kmem_map). Try to deal with this:

* Group all information about the backend allocator for a pool in a
separate structure. The pool references this structure, rather than
the individual fields.
* Change the pool_init() API accordingly, and adjust all callers.
* Link all pools using the same backend allocator on a list.
* The backend allocator is responsible for waiting for physical memory
to become available, but will still fail if it cannot callocate KVA
space for the pages. If this happens, carefully drain all pools using
the same backend allocator, so that some KVA space can be freed.
* Change pool_reclaim() to indicate if it actually succeeded in freeing
some pages, and use that information to make draining easier and more
efficient.
* Get rid of PR_URGENT. There was only one use of it, and it could be
dealt with by the caller.

From art@openbsd.org.
 1.20  12-Nov-2001  lukem add RCSIDs
 1.19  17-Oct-2001  thorpej branches: 1.19.2;
Use a pool cache for namei buffers -- it's faster to allocate from
a pool cache than a pool.
 1.18  22-Jan-2001  jdolecek branches: 1.18.2; 1.18.4;
make filesystem vnodeop, specop, fifoop and vnodeopv_* arrays const
 1.17  22-Jan-2001  jdolecek rename vfs_op_init() to vfs_op_check() and make it only check the offsets
and number of ops, not touch anything - vnode_if.sh now generated
proper offset numbers; vfs_op_check() is only defined and called for DEBUG
kernels

constify extern declaration of vfs_op_descs[]
g/c vfs_opv_numops, use VNODE_OPS_COUNT instead
make vfs_opv_init_explicit() and vfs_opv_init_default() static
 1.16  03-Aug-2000  thorpej Convert namei pathname buffer allocation to use the pool allocator.
 1.15  15-Nov-1999  fvdl Add Kirk McKusick's soft updates code to the trunk. Not enabled by
default, as the copyright on the main file (ffs_softdep.c) is such
that is has been put into gnusrc. options SOFTDEP will pull this
in. This code also contains the trickle syncer.

Bump version number to 1.4O
 1.14  04-Aug-1998  perry branches: 1.14.12; 1.14.14; 1.14.18;
Abolition of bcopy, ovbcopy, bcmp, and bzero, phase one.
bcopy(x, y, z) -> memcpy(y, x, z)
ovbcopy(x, y, z) -> memmove(y, x, z)
bcmp(x, y, z) -> memcmp(x, y, z)
bzero(x, y) -> memset(x, 0, y)
 1.13  24-Jun-1998  sommerfe Always include fifos; "not an option any more".
 1.12  22-Jun-1998  sommerfe defopt for options FIFO
 1.11  30-Mar-1998  mrg add missing int to typedef
 1.10  01-Mar-1998  fvdl Merge with Lite2 + local changes
 1.9  18-Feb-1998  thorpej Change vfs_opv_init_explicit() to not allocate the vnode operations
vectors; defer that to vfs_opv_init().

Change the interface to vfs_opv_init() and export it; it now takes a
pointer to an array of vnodeopv_desc *'s to initialize. Allocate
the vnode operations vectors here. Called by vfs_attach().

Implement vfs_opv_free(), which deallocates the vnode operations
vectors. Called by vfs_detach().

Change vfsinit() to build the initial vfs_list by traversing the
vfs_list_inital[] table, and vfs_attach()'ing those file systems.
Also, initialize special vnodeopv_descs (dead, fifo, spec) which
are not associated with any particular file system.
 1.8  13-Oct-1996  christos backout previous kprintf change
 1.7  10-Oct-1996  christos printf -> kprintf, sprintf -> ksprintf
 1.6  09-Feb-1996  christos More proto fixes
 1.5  04-Feb-1996  christos First pass at prototyping
 1.4  19-Mar-1995  mycroft Use %p.
 1.3  24-Jul-1994  mycroft Clean this up a bit, and separate parts of vfs_opv_init() into separate
functions.
 1.2  29-Jun-1994  cgd branches: 1.2.2;
New RCS ID's, take two. they're more aesthecially pleasant, and use 'NetBSD'
 1.1  08-Jun-1994  mycroft branches: 1.1.1;
Update to 4.4-Lite fs code.
 1.1.1.2  01-Mar-1998  fvdl Import 4.4BSD-Lite2
 1.1.1.1  01-Mar-1998  fvdl Import 4.4BSD-Lite for reference
 1.2.2.1  24-Jul-1994  cgd from trunk
 1.14.18.1  27-Dec-1999  wrstuden Pull up to last week's -current.
 1.14.14.1  19-Oct-1999  fvdl Bring in Kirk McKusick's FFS softdep code on a branch.
 1.14.12.2  11-Feb-2001  bouyer Sync with HEAD.
 1.14.12.1  20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
 1.18.4.3  10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.18.4.2  16-Mar-2002  jdolecek Catch up with -current.
 1.18.4.1  10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.18.2.4  18-Oct-2002  nathanw Catch up to -current.
 1.18.2.3  01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.18.2.2  14-Nov-2001  nathanw Catch up to -current.
 1.18.2.1  22-Oct-2001  nathanw Catch up to -current.
 1.19.2.1  12-Nov-2001  thorpej Sync the thorpej-mips-cache branch with -current.
 1.23.2.6  10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.23.2.5  01-Apr-2005  skrll Sync with HEAD.
 1.23.2.4  04-Mar-2005  skrll Sync with HEAD.

Hi Perry!
 1.23.2.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.23.2.2  18-Sep-2004  skrll Sync with HEAD.
 1.23.2.1  03-Aug-2004  skrll Sync with HEAD
 1.25.10.1  19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.25.8.1  29-Apr-2005  kent sync with -current
 1.28.2.5  21-Jan-2008  yamt sync with head
 1.28.2.4  15-Nov-2007  yamt sync with head.
 1.28.2.3  27-Oct-2007  yamt sync with head.
 1.28.2.2  03-Sep-2007  yamt sync with head.
 1.28.2.1  21-Jun-2006  yamt sync with head.
 1.30.22.2  10-Dec-2006  yamt sync with head.
 1.30.22.1  22-Oct-2006  yamt sync with head
 1.30.20.1  18-Nov-2006  ad Sync with head.
 1.32.8.3  01-Sep-2007  ad Update for pool_cache API changes.
 1.32.8.2  20-Aug-2007  ad Sync with HEAD.
 1.32.8.1  13-Mar-2007  ad Sync with head.
 1.32.4.1  24-Mar-2007  yamt sync with head.
 1.33.8.1  15-Aug-2007  skrll Sync with HEAD.
 1.34.10.2  27-Jul-2007  pooka Move vfs_attach(), vfs_detach() and vfs_reinit() from vfs_subr.c
to vfs_init.c. This permits easier standalone compilation of these
routines.
 1.34.10.1  27-Jul-2007  pooka file vfs_init.c was added on branch matt-mips64 on 2007-07-27 14:25:22 +0000
 1.34.8.1  14-Oct-2007  yamt sync with head.
 1.34.6.3  23-Mar-2008  matt sync with HEAD
 1.34.6.2  08-Nov-2007  matt sync with -HEAD
 1.34.6.1  06-Nov-2007  matt sync with HEAD
 1.34.4.2  11-Nov-2007  joerg Sync with HEAD.
 1.34.4.1  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.35.4.2  18-Feb-2008  mjf Sync with HEAD.
 1.35.4.1  19-Nov-2007  mjf Sync with HEAD.
 1.35.2.1  13-Nov-2007  bouyer Sync with HEAD
 1.36.6.1  19-Jan-2008  bouyer Sync with HEAD
 1.37.10.3  11-Mar-2010  yamt sync with head
 1.37.10.2  04-May-2009  yamt sync with head.
 1.37.10.1  16-May-2008  yamt sync with head.
 1.37.8.1  18-May-2008  yamt sync with head.
 1.37.6.3  17-Jan-2009  mjf Sync with HEAD.
 1.37.6.2  05-Oct-2008  mjf Sync with HEAD.
 1.37.6.1  02-Jun-2008  mjf Sync with HEAD.
 1.39.2.2  10-Oct-2008  skrll Sync with HEAD.
 1.39.2.1  23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.40.4.2  13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.40.4.1  19-Oct-2008  haad Sync with HEAD.
 1.41.2.1  19-Jan-2009  skrll Sync with HEAD.
 1.43.2.1  13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.45.16.1  05-Apr-2012  mrg sync to latest -current.
 1.45.12.2  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.45.12.1  17-Apr-2012  yamt sync with head
 1.46.4.1  18-May-2014  rmind sync with head
 1.46.2.2  03-Dec-2017  jdolecek update from HEAD
 1.46.2.1  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.47.6.1  06-Jun-2015  skrll Sync with HEAD
 1.48.18.2  08-Apr-2020  martin Merge changes from current as of 20200406
 1.48.18.1  10-Jun-2019  christos Sync with HEAD
 1.49.6.1  29-Feb-2020  ad Sync with head.
 1.51.2.1  03-Apr-2021  thorpej Sync with HEAD.
 1.64.6.1  02-Aug-2025  perseant Sync with HEAD

RSS XML Feed