History log of /src/sys/miscfs/genfs |
Revision | Date | Author | Comments |
1.3 | 15-Sep-2001 |
chs | a whole bunch of changes to improve performance and robustness under load:
- remove special treatment of pager_map mappings in pmaps. this is required now, since I've removed the globals that expose the address range. pager_map now uses pmap_kenter_pa() instead of pmap_enter(), so there's no longer any need to special-case it. - eliminate struct uvm_vnode by moving its fields into struct vnode. - rewrite the pageout path. the pager is now responsible for handling the high-level requests instead of only getting control after a bunch of work has already been done on its behalf. this will allow us to UBCify LFS, which needs tighter control over its pages than other filesystems do. writing a page to disk no longer requires making it read-only, which allows us to write wired pages without causing all kinds of havoc. - use a new PG_PAGEOUT flag to indicate that a page should be freed on behalf of the pagedaemon when it's unlocked. this flag is very similar to PG_RELEASED, but unlike PG_RELEASED, PG_PAGEOUT can be cleared if the pageout fails due to eg. an indirect-block buffer being locked. this allows us to remove the "version" field from struct vm_page, and together with shrinking "loan_count" from 32 bits to 16, struct vm_page is now 4 bytes smaller. - no longer use PG_RELEASED for swap-backed pages. if the page is busy because it's being paged out, we can't release the swap slot to be reallocated until that write is complete, but unlike with vnodes we don't keep a count of in-progress writes so there's no good way to know when the write is done. instead, when we need to free a busy swap-backed page, just sleep until we can get it busy ourselves. - implement a fast-path for extending writes which allows us to avoid zeroing new pages. this substantially reduces cpu usage. - encapsulate the data used by the genfs code in a struct genfs_node, which must be the first element of the filesystem-specific vnode data for filesystems which use genfs_{get,put}pages(). - eliminate many of the UVM pagerops, since they aren't needed anymore now that the pager "put" operation is a higher-level operation. - enhance the genfs code to allow NFS to use the genfs_{get,put}pages instead of a modified copy. - clean up struct vnode by removing all the fields that used to be used by the vfs_cluster.c code (which we don't use anymore with UBC). - remove kmem_object and mb_object since they were useless. instead of allocating pages to these objects, we now just allocate pages with no object. such pages are mapped in the kernel until they are freed, so we can use the mapping to find the page to free it. this allows us to remove splvm() protection in several places.
The sum of all these changes improves write throughput on my decstation 5000/200 to within 1% of the rate of NetBSD 1.5 and reduces the elapsed time for "make release" of a NetBSD 1.5 source tree on my 128MB pc to 10% less than a 1.5 kernel took.
|
1.2 | 08-Jul-1999 |
wrstuden | branches: 1.2.14; 1.2.16; 1.2.18; Introduce layer library in genfs. This set of files abstracts most of the functionality of nullfs. The latter is now just a mount & unmount routine, and a few tables. umapfs borrow most of this infrastructure.
Both fs's are now nfs-exportable.
All layered fs's share a common format to private mount & private vnode structs (which a particular fs can extend).
Also add genfs_noerr_rele(), a vnode op which will vrele/vput operand vnodes appropriately.
|
1.1 | 12-Jun-1998 |
cgd | branches: 1.1.10; Rework the way kernel include files are installed. In the new method, as with user-land programs, include files are installed by each directory in the tree that has includes to install. (This allows more flexibility as to what gets installed, makes 'partial installs' easier, and gives us more options as to which machines' includes get installed at any given time.) The old SYS_INCLUDES={symlinks,copies} behaviours are _both_ still supported, though at least one bug in the 'symlinks' case is fixed by this change. Include files can't be build before installation, so directories that have includes as targets (e.g. dev/pci) have to move those targets into a different Makefile.
|
1.1.10.1 | 02-Aug-1999 |
thorpej | Update from trunk.
|
1.2.18.1 | 01-Oct-2001 |
fvdl | Catch up with -current.
|
1.2.16.1 | 10-Jan-2002 |
thorpej | Sync kqueue branch with -current.
|
1.2.14.1 | 21-Sep-2001 |
nathanw | Catch up to -current.
|
1.39 | 27-Mar-2022 |
christos | dedup the eofs link/symlink methods
|
1.38 | 20-Oct-2021 |
thorpej | 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.
|
1.37 | 29-Jun-2021 |
dholland | - 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.
|
1.36 | 07-Aug-2020 |
christos | branches: 1.36.6; accmode should be accmode_t
|
1.35 | 27-Jun-2020 |
christos | Introduce genfs_pathconf() and use it for the default case in all filesystems.
|
1.34 | 16-May-2020 |
christos | Add ACL support for FFS. From FreeBSD.
|
1.33 | 17-Feb-2017 |
hannken | Add generic genfs_suspendctl() and use it for all file systems. Layered file systems need work.
|
1.32 | 27-Feb-2014 |
hannken | branches: 1.32.6; 1.32.10; 1.32.14; The current implementation of vn_lock() is racy. Modification of the vnode operations vector for active vnodes is unsafe because it is not known whether deadfs or the original file system will be called.
- Pass down LK_RETRY to the lock operation (hint for deadfs only).
- Change deadfs lock operation to return ENOENT if LK_RETRY is unset.
- Change all other lock operations to check for dead vnode once the vnode is locked and unlock and return ENOENT in this case.
With these changes in place vnode lock operations will never succeed after vclean() has marked the vnode as VI_XLOCK and before vclean() has changed the operations vector.
Adresses PR kern/37706 (Forced unmount of file systems is unsafe)
Discussed on tech-kern.
Welcome to 6.99.33
|
1.31 | 02-May-2013 |
riastradh | branches: 1.31.4; Fix (harmless) typo in struct genfs_rename_ops::gro_lookup prototype.
|
1.30 | 08-May-2012 |
riastradh | branches: 1.30.2; Implement a genfs_rename abstraction.
First major step in incrementally adapting all the file systems to a saner rename VOP protocol.
|
1.29 | 13-Mar-2012 |
elad | 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.28 | 30-Nov-2009 |
pooka | branches: 1.28.12; 1.28.16; 1.28.18; Introduce genfs_statvfs() as pretty much a no-info statvfs and convert several pseudo file systems to use it.
|
1.27 | 23-Jun-2009 |
elad | Move the implementation of vaccess() to genfs_can_access(), in line with the other routines of the same spirit.
Adjust file-system code to use it.
Keep vaccess() for KPI compatibility and to keep element of least surprise. A "diagnostic" message warning that vaccess() is deprecated will be printed when it's used (obviously, only in DIAGNOSTIC kernels).
No objections on tech-kern@:
http://mail-index.netbsd.org/tech-kern/2009/06/21/msg005310.html
|
1.26 | 07-May-2009 |
elad | Extract the open-coded authorization logic for chtimes() from various file-systems and put it in a single function, genfs_can_chtimes().
This also makes UDF follow the same policy as all other file-systems.
Mailing list reference:
http://mail-index.netbsd.org/tech-kern/2009/04/27/msg004951.html
|
1.25 | 25-Apr-2009 |
elad | Add genfs_can_mount() and use it to prevent some more code duplication of the security checks when mounting a device (VOP_ACCESS() + kauth(9) call)).
Proposed with no objections on tech-kern@:
http://mail-index.netbsd.org/tech-kern/2009/04/20/msg004859.html
The vnode is always expected to be locked, so no locking is done outside the file-system code.
|
1.24 | 22-Apr-2009 |
elad | Per discussion on tech-kern@:
- Replace use of label/goto with returns
- Rename, change prototype of, and move functions from vfs_subr.c to genfs_vnops.c
|
1.23 | 28-Jan-2008 |
dholland | branches: 1.23.10; 1.23.18; 1.23.24; 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.22 | 25-Jan-2008 |
ad | Remove VOP_LEASE. Discussed on tech-kern.
|
1.21 | 24-Apr-2007 |
perseant | branches: 1.21.8; 1.21.14; Split the VOP interface part of genfs_putpages() from the code. The new function that does the work, genfs_do_putpages(), now takes as an argument a pointer to the page that would be waited on, if PGO_BUSYWAIT were not set. This allows a consumer, e.g. lfs_putpages(), to perform an action outside the scope of UVM before sleeping on the page in question.
|
1.20 | 11-Dec-2005 |
christos | branches: 1.20.24; 1.20.26; 1.20.30; 1.20.32; 1.20.38; merge ktrace-lwp.
|
1.19 | 02-Nov-2005 |
yamt | merge yamt-vop branch. remove following VOPs.
VOP_BLKATOFF VOP_VALLOC VOP_BALLOC VOP_REALLOCBLKS VOP_VFREE VOP_TRUNCATE VOP_UPDATE
|
1.18 | 30-Aug-2005 |
xtraeme | branches: 1.18.2; Remove __P()
|
1.17 | 10-Apr-2003 |
jdolecek | branches: 1.17.2; 1.17.18; use former genfs_eopnotsupp_rele() as genfs_eopnotsupp(), so that vnodes are vput()/vrele()d as necessary - some filesystems did use the wrong one for some ops, and it's just safer to not take the chance
based on suggestion by Bill Studenmund
|
1.16 | 23-Oct-2002 |
jdolecek | merge kqueue branch into -current
kqueue provides a stateful and efficient event notification framework currently supported events include socket, file, directory, fifo, pipe, tty and device changes, and monitoring of processes and signals
kqueue is supported by all writable filesystems in NetBSD tree (with exception of Coda) and all device drivers supporting poll(2)
based on work done by Jonathan Lemon for FreeBSD initial NetBSD port done by Luke Mewburn and Jason Thorpe
|
1.15 | 18-Dec-2001 |
chs | add some compatibility routines to allow mmap() to work non-UBCified filesystems (in the same non-coherent fashion that they worked before).
|
1.14 | 06-Dec-2001 |
chs | add a VOP_PUTPAGES method for all the filesystems that don't have pages, just unlock the interlock.
|
1.13 | 15-Sep-2001 |
chs | a whole bunch of changes to improve performance and robustness under load:
- remove special treatment of pager_map mappings in pmaps. this is required now, since I've removed the globals that expose the address range. pager_map now uses pmap_kenter_pa() instead of pmap_enter(), so there's no longer any need to special-case it. - eliminate struct uvm_vnode by moving its fields into struct vnode. - rewrite the pageout path. the pager is now responsible for handling the high-level requests instead of only getting control after a bunch of work has already been done on its behalf. this will allow us to UBCify LFS, which needs tighter control over its pages than other filesystems do. writing a page to disk no longer requires making it read-only, which allows us to write wired pages without causing all kinds of havoc. - use a new PG_PAGEOUT flag to indicate that a page should be freed on behalf of the pagedaemon when it's unlocked. this flag is very similar to PG_RELEASED, but unlike PG_RELEASED, PG_PAGEOUT can be cleared if the pageout fails due to eg. an indirect-block buffer being locked. this allows us to remove the "version" field from struct vm_page, and together with shrinking "loan_count" from 32 bits to 16, struct vm_page is now 4 bytes smaller. - no longer use PG_RELEASED for swap-backed pages. if the page is busy because it's being paged out, we can't release the swap slot to be reallocated until that write is complete, but unlike with vnodes we don't keep a count of in-progress writes so there's no good way to know when the write is done. instead, when we need to free a busy swap-backed page, just sleep until we can get it busy ourselves. - implement a fast-path for extending writes which allows us to avoid zeroing new pages. this substantially reduces cpu usage. - encapsulate the data used by the genfs code in a struct genfs_node, which must be the first element of the filesystem-specific vnode data for filesystems which use genfs_{get,put}pages(). - eliminate many of the UVM pagerops, since they aren't needed anymore now that the pager "put" operation is a higher-level operation. - enhance the genfs code to allow NFS to use the genfs_{get,put}pages instead of a modified copy. - clean up struct vnode by removing all the fields that used to be used by the vfs_cluster.c code (which we don't use anymore with UBC). - remove kmem_object and mb_object since they were useless. instead of allocating pages to these objects, we now just allocate pages with no object. such pages are mapped in the kernel until they are freed, so we can use the mapping to find the page to free it. this allows us to remove splvm() protection in several places.
The sum of all these changes improves write throughput on my decstation 5000/200 to within 1% of the rate of NetBSD 1.5 and reduces the elapsed time for "make release" of a NetBSD 1.5 source tree on my 128MB pc to 10% less than a 1.5 kernel took.
|
1.12 | 28-May-2001 |
chs | branches: 1.12.2; 1.12.4; add a genfs_mmap() and change all of the disk-based filesystems to implement VOP_MMAP() with the genfs version, in preparation for actually using this VOP.
|
1.11 | 27-Nov-2000 |
chs | branches: 1.11.2; Initial integration of the Unified Buffer Cache project.
|
1.10 | 03-Aug-1999 |
wrstuden | branches: 1.10.2; Add support for fcntl(2) to generate VOP_FCNTL calls. Any fcntl call with F_FSCTL set and F_SETFL calls generate calls to a new fileop fo_fcntl. Add genfs_fcntl() and soo_fcntl() which return 0 for F_SETFL and EOPNOTSUPP otherwise. Have all leaf filesystems use genfs_fcntl().
Reviewed by: thorpej Tested by: wrstuden
|
1.9 | 08-Jul-1999 |
wrstuden | Introduce layer library in genfs. This set of files abstracts most of the functionality of nullfs. The latter is now just a mount & unmount routine, and a few tables. umapfs borrow most of this infrastructure.
Both fs's are now nfs-exportable.
All layered fs's share a common format to private mount & private vnode structs (which a particular fs can extend).
Also add genfs_noerr_rele(), a vnode op which will vrele/vput operand vnodes appropriately.
|
1.8 | 13-Aug-1998 |
kleink | branches: 1.8.8; Add genfs_einval(), which does the obvious thing.
|
1.7 | 10-Aug-1998 |
matthias | create miscfs/genfs/genfs_vnops.c:genfs_enoioctl and make all the other filesystems use it instead of a private version.
|
1.6 | 25-Jun-1998 |
thorpej | - Rename nqnfs_vop_lease_check() to genfs_lease_check(). If NFSSERVER is not in the kernel, genfs_lease_check() is simply a no-op. This allows LKM'd file systems to be exported (previously did not work properly due to a compile-time decision based on -DNFSSERVER). - defopt NFSSERVER
|
1.5 | 01-Mar-1998 |
fvdl | Merge with Lite2 + local changes
|
1.4 | 05-Jan-1998 |
perry | RCSID Police.
|
1.3 | 11-Apr-1997 |
kleink | Implement a POSIX compliant genfs VOP_SEEK() and use it in the appropriate places; by Chris G. Demetriou and myself.
|
1.2 | 07-Sep-1996 |
mycroft | Implement poll(2).
|
1.1 | 01-Sep-1996 |
mycroft | Add a set of generic file system operations that most file systems use. Also, fix some time stamp bogosities.
|
1.8.8.3 | 02-Aug-1999 |
thorpej | Oops, some prototypes got nuked by mistake.
|
1.8.8.2 | 02-Aug-1999 |
thorpej | Update from trunk.
|
1.8.8.1 | 04-Jul-1999 |
chs | create genfs_getpages() and genfs_putpages(). these should be able to handle most of the local-disk filesystems.
|
1.10.2.1 | 08-Dec-2000 |
bouyer | Sync with HEAD.
|
1.11.2.4 | 11-Nov-2002 |
nathanw | Catch up to -current
|
1.11.2.3 | 08-Jan-2002 |
nathanw | Catch up to -current.
|
1.11.2.2 | 21-Sep-2001 |
nathanw | Catch up to -current.
|
1.11.2.1 | 21-Jun-2001 |
nathanw | Catch up to -current.
|
1.12.4.1 | 01-Oct-2001 |
fvdl | Catch up with -current.
|
1.12.2.3 | 25-Sep-2002 |
jdolecek | implement genfs_kqfilter() - this is based upon ufs_kqfilter(), but uses vp->v_size for EVFILT_READ
|
1.12.2.2 | 10-Jan-2002 |
thorpej | Sync kqueue branch with -current.
|
1.12.2.1 | 10-Jul-2001 |
lukem | prototype genfs_kqfilter()
|
1.17.18.3 | 04-Feb-2008 |
yamt | sync with head.
|
1.17.18.2 | 03-Sep-2007 |
yamt | sync with head.
|
1.17.18.1 | 21-Jun-2006 |
yamt | sync with head.
|
1.17.2.1 | 10-Nov-2005 |
skrll | Sync with HEAD. Here we go again...
|
1.18.2.1 | 20-Oct-2005 |
yamt | remove genfs_fsync.
|
1.20.38.1 | 03-Sep-2007 |
wrstuden | Sync w/ NetBSD-4-RC_1
|
1.20.32.1 | 11-Jul-2007 |
mjf | Sync with head.
|
1.20.30.1 | 08-Jun-2007 |
ad | Sync with head.
|
1.20.26.1 | 07-May-2007 |
yamt | sync with head.
|
1.20.24.1 | 05-Jun-2007 |
bouyer | Pull up following revision(s) (requested by perseant in ticket #703): sys/miscfs/genfs/genfs.h 1.21 sys/miscfs/genfs/genfs_vnops.c 1.151 sys/ufs/lfs/lfs.h 1.119, 1.120 sys/ufs/lfs/lfs_bio.c 1.99-101 sys/ufs/lfs/lfs_extern.h 1.89 sys/ufs/lfs/lfs_inode.c 1.108, 1.109 sys/ufs/lfs/lfs_segment.c 1.197, 1.199, 1.200 sys/ufs/lfs/lfs_subr.c 1.69, 1.70 sys/ufs/lfs/lfs_syscalls.c 1.119 sys/ufs/lfs/lfs_vfsops.c 1.234, 1.235 sys/ufs/lfs/lfs_vnops.c 1.195, 1.196, 1.200, 1.202-206
Reduce busy waiting in lfs_putpages(), and other LFS improvements.
|
1.21.14.1 | 18-Feb-2008 |
mjf | Sync with HEAD.
|
1.21.8.1 | 23-Mar-2008 |
matt | sync with HEAD
|
1.23.24.2 | 23-Jul-2009 |
jym | Sync with HEAD.
|
1.23.24.1 | 13-May-2009 |
jym | Sync with HEAD.
Commit is split, to avoid a "too many arguments" protocol error.
|
1.23.18.1 | 28-Apr-2009 |
skrll | Sync with HEAD.
|
1.23.10.4 | 11-Mar-2010 |
yamt | sync with head
|
1.23.10.3 | 18-Jul-2009 |
yamt | sync with head.
|
1.23.10.2 | 16-May-2009 |
yamt | sync with head
|
1.23.10.1 | 04-May-2009 |
yamt | sync with head.
|
1.28.18.2 | 27-Oct-2014 |
msaitoh | Pull up following revision(s) (requested by riastradh in ticket #1135): sys/miscfs/genfs/genfs.h: revision 1.31 Fix (harmless) typo in struct genfs_rename_ops::gro_lookup prototype.
|
1.28.18.1 | 02-Jul-2012 |
jdc | Pull up revisions: src/sys/conf/files revision 1.1050 src/sys/miscfs/genfs/genfs.h revision 1.30 via patch src/sys/miscfs/genfs/genfs_rename.c revision 1.1 via patch src/sys/rump/librump/rumpvfs/Makefile.rumpvfs revision 1.33 (requested by riastradh in ticket #286).
Implement a genfs_rename abstraction.
First major step in incrementally adapting all the file systems to a saner rename VOP protocol.
|
1.28.16.2 | 02-Jun-2012 |
mrg | sync to latest -current.
|
1.28.16.1 | 05-Apr-2012 |
mrg | sync to latest -current.
|
1.28.12.3 | 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.28.12.2 | 23-May-2012 |
yamt | sync with head.
|
1.28.12.1 | 17-Apr-2012 |
yamt | sync with head
|
1.30.2.3 | 03-Dec-2017 |
jdolecek | update from HEAD
|
1.30.2.2 | 20-Aug-2014 |
tls | Rebase to HEAD as of a few days ago.
|
1.30.2.1 | 23-Jun-2013 |
tls | resync from head
|
1.31.4.1 | 18-May-2014 |
rmind | sync with head
|
1.32.14.1 | 21-Apr-2017 |
bouyer | Sync with HEAD
|
1.32.10.1 | 20-Mar-2017 |
pgoyette | Sync with HEAD
|
1.32.6.1 | 28-Aug-2017 |
skrll | Sync with HEAD
|
1.36.6.1 | 01-Aug-2021 |
thorpej | Sync with HEAD.
|
1.104 | 05-Apr-2024 |
riastradh | uvm: Expand v_size <= v_writesize assertions to help diagnostics.
PR kern/58117
|
1.103 | 09-Apr-2023 |
riastradh | genfs: KASSERT(A && B) -> KASSERT(A); KASSERT(B)
|
1.102 | 14-Jan-2022 |
riastradh | genfs(9): Prune dead branch.
|
1.101 | 19-Aug-2020 |
simonb | Remove trailing \n from UVMHIST_LOG() format strings.
|
1.100 | 14-Aug-2020 |
chs | centralize calls from UVM to radixtree into a few functions. in those functions, assert that the object lock is held in the correct mode.
|
1.99 | 10-Aug-2020 |
rin | Output offsets in hex for UVMHIST.
|
1.98 | 14-Jun-2020 |
ad | genfs_putpages(): when building a cluster make use of pages in the in the existing uvm_page_array.
|
1.97 | 25-May-2020 |
ad | - Alter the convention for uvm_page_array slightly, so the basic search parameters can't change part way through a search: move the "uobj" and "flags" arguments over to uvm_page_array_init() and store those with the array.
- With that, detect when it's not possible to find any more pages in the tree with the given search parameters, and avoid repeated tree lookups if the caller loops over uvm_page_array_fill_and_peek().
|
1.96 | 17-May-2020 |
ad | Start trying to reduce cache misses on vm_page during fault processing.
- Make PGO_LOCKED getpages imply PGO_NOBUSY and remove the latter. Mark pages busy only when there's actually I/O to do.
- When doing COW on a uvm_object, don't mess with neighbouring pages. In all likelyhood they're already entered.
- Don't mess with neighbouring VAs that have existing mappings as replacing those mappings with same can be quite costly.
- Don't enqueue pages for neighbour faults unless not enqueued already, and don't activate centre pages unless uvmpdpol says its useful.
Also:
- Make PGO_LOCKED getpages on UAOs work more like vnodes: do gang lookup in the radix tree, and don't allocate new pages.
- Fix many assertion failures around faults/loans with tmpfs.
|
1.95 | 22-Mar-2020 |
ad | Process concurrent page faults on individual uvm_objects / vm_amaps in parallel, where the relevant pages are already in-core. Proposed on tech-kern.
Temporarily disabled on MP architectures with __HAVE_UNLOCKED_PMAP until adjustments are made to their pmaps.
|
1.94 | 17-Mar-2020 |
ad | Tweak the March 14th change to make page waits interlocked by pg->interlock. Remove unneeded changes and only deal with the PQ_WANTED flag, to exclude possible bugs.
|
1.93 | 14-Mar-2020 |
ad | Make uvm_pagemarkdirty() responsible for putting vnodes onto the syncer work list. Proposed on tech-kern@.
|
1.92 | 14-Mar-2020 |
ad | Make page waits (WANTED vs BUSY) interlocked by pg->interlock. Gets RW locks out of the equation for sleep/wakeup, and allows observing+waiting for busy pages when holding only a read lock. Proposed on tech-kern.
|
1.91 | 14-Mar-2020 |
ad | Unused variable.
|
1.90 | 14-Mar-2020 |
ad | - Hide the details of SPCF_SHOULDYIELD and related behind a couple of small functions: preempt_point() and preempt_needed().
- preempt(): if the LWP has exceeded its timeslice in kernel, strip it of any priority boost gained earlier from blocking.
|
1.89 | 14-Mar-2020 |
ad | OR into bp->b_cflags; don't overwrite.
|
1.88 | 27-Feb-2020 |
ad | Tighten up the locking around vp->v_iflag a little more after the recent split of vmobjlock & v_interlock.
|
1.87 | 24-Feb-2020 |
ad | v_interlock -> vmobjlock
|
1.86 | 23-Feb-2020 |
ad | 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.
|
1.85 | 18-Feb-2020 |
chs | remove the aiodoned thread. I originally added this to provide a thread context for doing page cache iodone work, but since then biodone() has changed to hand off all iodone work to a softint thread, so we no longer need the special-purpose aiodoned thread.
|
1.84 | 15-Jan-2020 |
ad | Merge from yamt-pagecache (after much testing):
- Reduce unnecessary page scan in putpages esp. when an object has a ton of pages cached but only a few of them are dirty.
- Reduce the number of pmap operations by tracking page dirtiness more precisely in uvm layer.
|
1.83 | 31-Dec-2019 |
ad | branches: 1.83.2; - Add and use wrapper functions that take and acquire page interlocks, and pairs of page interlocks. Require that the page interlock be held over calls to uvm_pageactivate(), uvm_pagewire() and similar.
- Solve the concurrency problem with page replacement state. Rather than updating the global state synchronously, set an intended state on individual pages (active, inactive, enqueued, dequeued) while holding the page interlock. After the interlock is released put the pages on a 128 entry per-CPU queue for their state changes to be made real in batch. This results in in a ~400 fold decrease in contention on my test system. Proposed on tech-kern but modified to use the page interlock rather than atomics to synchronise as it's much easier to maintain that way, and cheaper.
|
1.82 | 31-Dec-2019 |
ad | Rename uvm_page_locked_p() -> uvm_page_owner_locked_p()
|
1.81 | 16-Dec-2019 |
ad | genfs_do_putpages(): add a missing call to uvm_page_array_advance().
Spotted by the automated test runs and:
Reported-by: syzbot+adc1f0ce21bcece5307d@syzkaller.appspotmail.com
|
1.80 | 16-Dec-2019 |
ad | Correction to previous for DEBUG case.
|
1.79 | 15-Dec-2019 |
ad | Fix DEBUG build.
|
1.78 | 15-Dec-2019 |
ad | Merge from yamt-pagecache:
- do gang lookup of pages using radixtree. - remove now unused uvm_object::uo_memq and vm_page::listq.queue.
|
1.77 | 13-Dec-2019 |
ad | Break the global uvm_pageqlock into a per-page identity lock and a private lock for use of the pagedaemon policy code. Discussed on tech-kern.
PR kern/54209: NetBSD 8 large memory performance extremely low PR kern/54210: NetBSD-8 processes presumably not exiting PR kern/54727: writing a large file causes unreasonable system behaviour
|
1.76 | 06-Oct-2019 |
mlelstv | Defer to synchronous I/O before the aiodone work queue exists.
|
1.75 | 11-Jul-2019 |
maxv | Fix (harmless) uninitialized variable: 'pg' could be 'endm', in which case 'pg->uobject' would not be initialized. Just invert the two last conditions of the KASSERT.
ok hannken@
|
1.74 | 10-Dec-2018 |
jdolecek | assert that WAPBL journal write lock is actually held when called with PGO_JOURNALLOCKED or IO_JOURNALLOCKED
suggested by mrg@, thanks
|
1.73 | 09-Dec-2018 |
jdolecek | support flag PGO_JOURNALLOCKED also for genfs_getpages()
|
1.72 | 28-May-2018 |
chs | branches: 1.72.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.71 | 28-Oct-2017 |
pgoyette | branches: 1.71.2; Update the kernhist(9) kernel history code to address issues identified in PR kern/52639, as well as some general cleaning-up...
(As proposed on tech-kern@ with additional changes and enhancements.)
Details of changes:
* All history arguments are now stored as uintmax_t values[1], both in the kernel and in the structures used for exporting the history data to userland via sysctl(9). This avoids problems on some architectures where passing a 64-bit (or larger) value to printf(3) can cause it to process the value as multiple arguments. (This can be particularly problematic when printf()'s format string is not a literal, since in that case the compiler cannot know how large each argument should be.)
* Update the data structures used for exporting kernel history data to include a version number as well as the length of history arguments.
* All [2] existing users of kernhist(9) have had their format strings updated. Each format specifier now includes an explicit length modifier 'j' to refer to numeric values of the size of uintmax_t.
* All [2] existing users of kernhist(9) have had their format strings updated to replace uses of "%p" with "%#jx", and the pointer arguments are now cast to (uintptr_t) before being subsequently cast to (uintmax_t). This is needed to avoid compiler warnings about casting "pointer to integer of a different size."
* All [2] existing users of kernhist(9) have had instances of "%s" or "%c" format strings replaced with numeric formats; several instances of mis-match between format string and argument list have been fixed.
* vmstat(1) has been modified to handle the new size of arguments in the history data as exported by sysctl(9).
* vmstat(1) now provides a warning message if the history requested with the -u option does not exist (previously, this condition was silently ignored, with only a single blank line being printed).
* vmstat(1) now checks the version and argument length included in the data exported via sysctl(9) and exits if they do not match the values with which vmstat was built.
* The kernhist(9) man-page has been updated to note the additional requirements imposed on the format strings, along with several other minor changes and enhancements.
[1] It would have been possible to use an explicit length (for example, uint64_t) for the history arguments. But that would require another "rototill" of all the users in the future when we add support for an architecture that supports a larger size. Also, the printf(3) format specifiers for explicitly-sized values, such as "%"PRIu64, are much more verbose (and less aesthetically appealing, IMHO) than simply using "%ju".
[2] I've tried very hard to find "all [the] existing users of kernhist(9)" but it is possible that I've missed some of them. I would be glad to update any stragglers that anyone identifies.
|
1.70 | 27-Jun-2017 |
hannken | Add missing check for dead or dying vnode to the entry of genfs_getpages().
|
1.69 | 04-Jun-2017 |
hannken | Operations fstrans_start() and fstrans_start_nowait() now always use FSTRANS_SHARED as lock type so remove the lock type argument.
File system state FSTRANS_SUSPENDING is now unused so remove it.
Regen vnode_if files.
Ride 8.99.1 less than a hour ago.
|
1.68 | 01-Apr-2017 |
dholland | branches: 1.68.6; Clarify meaning of "glocked" argument of genfs_putpages_read.
|
1.67 | 01-Apr-2017 |
riastradh | Simplify genfs_getpages_read async/unlock protocol.
Previously the caller unlocked for error or sync I/O, whereas genfs_getpages_read unlocked on successful async.
Now caller unlocks in every case, and genfs_getpages_read doesn't touch the lock.
|
1.66 | 30-Mar-2017 |
hannken | Change last users of FSTRANS_LAZY to FSTRANS_SHARED and change genfs_suspendctl() to move from FSTRANS_NORMAL to FSTRANS_SUSPENDED and vice versa.
|
1.65 | 09-Mar-2017 |
hannken | Protect genfs_do_putpages() against vnodes disappearing during a forced mount update from read-write to read-only.
|
1.64 | 01-Mar-2017 |
hannken | Protect genfs_getpages() against vnodes disappearing during a forced mount update from read-write to read-only.
|
1.63 | 29-Sep-2016 |
christos | branches: 1.63.2; don't change the loop counts; noted by mrg@
|
1.62 | 29-Sep-2016 |
christos | Allow sparc kernels to build with SSP by using a constant PAGE_SIZE...
|
1.61 | 06-May-2015 |
hannken | branches: 1.61.2; 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.60 | 12-Apr-2015 |
skrll | Fix UVMHIST build.
|
1.59 | 10-Apr-2015 |
riastradh | Pull VOP_BMAP/VOP_STRATEGY loop from getpages into its own function.
No functional change.
In preparation for a gop_read like the existing gop_write.
|
1.58 | 25-Oct-2013 |
martin | branches: 1.58.6; Turn a few __unused into __diagused
|
1.57 | 19-Oct-2013 |
martin | Mark a potentially unused variable
|
1.56 | 19-Oct-2013 |
martin | Mark a potentially unused (if an arch implements pmap_update as empty macro) variable accordingly.
|
1.55 | 22-May-2012 |
yamt | branches: 1.55.2; 1.55.4; don't block on pager map for read-ahead. reduce code duplication.
|
1.54 | 29-Apr-2012 |
chs | change vflushbuf() to take the full FSYNC_* flags. translate FSYNC_LAZY into PGO_LAZY for VOP_PUTPAGES() so that genfs_do_io() can set the appropriate io priority for the I/O. this is the first part of addressing PR 46325.
|
1.53 | 31-Oct-2011 |
yamt | branches: 1.53.2; 1.53.6; 1.53.8; typo in a comment
|
1.52 | 09-Oct-2011 |
uebayasi | Trim unused headers.
|
1.51 | 01-Sep-2011 |
matt | Use the new UVM_KMF_COLORMATCH flag to get a congruent mappings of the user buffer so we can use unmanaged mappings (pmap_kenter_pa/pmap_kremove).
|
1.50 | 31-Aug-2011 |
rmind | genfs_do_directio: acquire the lock of page owner for now and fix PR/45177. Will be revisited to avoid locking dance and be more efficient, e.g. we can use unmanaged-mapping by allocating with colouring in mind.
|
1.49 | 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.48 | 21-Apr-2011 |
matt | branches: 1.48.2; Move some #ifdefs to prevent a code path change when DEBUG .vs. !DEBUG Solves problem an assert firing when using NFS on MIPS.
|
1.47 | 18-Apr-2011 |
rmind | G/C unused speedup_syncer() mechanism and thus simplify some code. Update some comments to reflect the reality. No actual changes to the (used) syncer logic.
OK ad@
|
1.46 | 06-Dec-2010 |
uebayasi | branches: 1.46.2; Correct an assertion; pointed out by mrg@ and pooka@, thanks.
|
1.45 | 03-Dec-2010 |
hannken | genfs_do_putpages(): When testing an uobject for dirty or modified pages skip uninitialized (PG_FAKE) pages (DEBUG only).
|
1.44 | 30-Nov-2010 |
hannken | Always take the object lock before changing vmpage flags. Fixes a deadlock where a thread is waiting on "genput" but the page in question is neither BUSY nor WANTED.
No objections from tech-kern@.
|
1.43 | 19-Nov-2010 |
uebayasi | Whitespace.
|
1.42 | 09-Nov-2010 |
hannken | Genfs_getpages(): Break a deadlock where one thread runs VOP_GETPAGES(), has busy pages and wants the wapbl lock as reader from wapbl_begin(), another thread has the wapbl lock as reader and waits for a page from the first thread. Now a third thread calls wapbl_flush() and wants the wapbl lock as writer.
Move the wapbl_begin() up to a point where genfs_getpages() has no busy pages yet.
|
1.41 | 03-Nov-2010 |
uebayasi | genfs_getpages: restore vm_page array correctly in PGO_LOCKED error code path.
|
1.40 | 01-Sep-2010 |
chs | replace the earlier workaround for PR 40389 with a better fix. the earlier change caused data corruption by freeing pages without invaliding their mappings. instead of the trylock/retry, just take the genfs-node lock before calling VOP_GETPAGES() and pass a new flag to tell it that we're already holding this lock.
|
1.39 | 19-Aug-2010 |
pooka | print more info in the "past eof" panic
|
1.38 | 08-Aug-2010 |
chs | in genfs_getpages(), mark the vnode dirty (ie. add to syncer worklist and set VI_WRMAPDIRTY) after we have busied the pages rather than before. this prevents other threads calling genfs_do_putpages() from marking the vnode clean again while we're in the process of creating new writable mappings, since such threads will wait for the page(s) to become unbusy before proceeding. fixes the problem recently reported by hannken@ on tech-kern.
|
1.37 | 29-Jul-2010 |
hannken | Add vm page flag PG_MARKER and use it to tag dummy marker pages in genfs_do_putpages() and uao_put(). Use 'v_uobj.uo_npages' to check for an empty memq. Put some assertions where these marker pages may not appear.
Ok: YAMAMOTO Takashi <yamt@netbsd.org>
|
1.36 | 30-Jan-2010 |
uebayasi | branches: 1.36.2; 1.36.4; Reduce the diff between genfs_getpages() and genfs_do_io(). These should be merged eventually.
|
1.35 | 30-Jan-2010 |
uebayasi | Slightly more descriptive local variable names.
|
1.34 | 29-Jan-2010 |
uebayasi | genfs_getpages: Narrow & clarify the context where I/O happens & vmobjlock is dropped.
|
1.33 | 29-Jan-2010 |
uebayasi | genfs_getpages: Redo previous with a better goto label.
|
1.32 | 28-Jan-2010 |
uebayasi | Revert part which variable initializations within interleaved gotos.
again: if (...) goto err; void *ptr = alloc(); if (...) goto again; if (...) goto err1; ... err1: if (ptr) free(ptr); err: return;
This leaks memory if exited with "goto again; -> goto err;".
|
1.31 | 28-Jan-2010 |
uebayasi | genfs_getpages: More constification & localization.
|
1.30 | 28-Jan-2010 |
uebayasi | genfs_getpages: Constify 2 variables, move one. No functional changes.
|
1.29 | 28-Jan-2010 |
uebayasi | genfs_getpages: Constify orignpages. Don't override its meaning by the value re-calucated from GOP_SIZE(GOP_SIZE_MEM), but assign another variable (orignmempages).
|
1.28 | 28-Jan-2010 |
uebayasi | Unbreak modules build.
|
1.27 | 28-Jan-2010 |
uebayasi | genfs_getpages: Constify & localize more variables.
|
1.26 | 28-Jan-2010 |
uebayasi | genfs_getpages: Move local variable declarations that are used only for I/O to where they're used. This helps to track what's going in this lengthy function.
|
1.25 | 28-Jan-2010 |
uebayasi | genfs_getpages: Localize a few more variables.
|
1.24 | 28-Jan-2010 |
uebayasi | genfs_putpages: Localize a few variables. No functional changes.
|
1.23 | 27-Jan-2010 |
uebayasi | Use genfs_node_*lock().
|
1.22 | 27-Jan-2010 |
uebayasi | Constify some pointers in genfs_getpages() and genfs_do_putpages().
|
1.21 | 21-Oct-2009 |
rmind | Remove uarea swap-out functionality:
- Addresses the issue described in PR/38828. - Some simplification in threading and sleepq subsystems. - Eliminates pmap_collect() and, as a side note, allows pmap optimisations. - Eliminates XS_CTL_DATA_ONSTACK in scsipi code. - Avoids few scans on LWP list and thus potentially long holds of proc_lock. - Cuts ~1.5k lines of code. Reduces amd64 kernel size by ~4k. - Removes __SWAP_BROKEN cases.
Tested on x86, mips, acorn32 (thanks <mpumford>) and partly tested on acorn26 (thanks to <bjh21>).
Discussed on <tech-kern>, reviewed by <ad>.
|
1.20 | 18-Apr-2009 |
pooka | Move genfs_null_putpages() from genfs_io.c to genfs_vnops.c -- it does not really do i/o.
|
1.19 | 23-Feb-2009 |
rmind | genfs_getpages: rework 1.18 revision - move uvm_pagermapout() back. It is useful to make KVA available ASAP. Per discussion with <yamt>.
|
1.18 | 04-Feb-2009 |
rmind | branches: 1.18.2; genfs_getpages: move putiobuf() and uvm_pagermapout() outside the glock. OK by <ad>.
|
1.17 | 16-Jan-2009 |
yamt | - g/c stale function prototypes. - rename UVM_PAGE_HASH_PENALTY to UVM_PAGE_TREE_PENALTY.
|
1.16 | 01-Dec-2008 |
joerg | Check that the filesystem acutally uses WAPBL before initiating a transaction for the directio case. Fixes PR 39929 and similiar issues seen with PostgreSQL.
|
1.15 | 16-Nov-2008 |
pooka | more <sys/buf.h> police
|
1.14 | 31-Oct-2008 |
christos | - allocate 8 pointers on the stack to avoid stack overflow in nfs. - make that 8 a constant - remove bogus panic
|
1.13 | 19-Oct-2008 |
hannken | branches: 1.13.2; 1.13.4; Make genfs_directio() IO_JOURNALLOCKED aware. DirectIO no longer triggers "locking against myself" panic in wapbl_begin().
Observed and tested by: Frank Kardel <kardel@netbsd.org>
|
1.12 | 10-Oct-2008 |
hannken | Break a deadlock where one thread has a wapbl transaction, calls VOP_GETPAGES and wants to busy a page while another thread calls VOP_PUTPAGES on the same vnode, takes pages busy and wants to start a wapbl transaction.
Reviewed by: Jason Thorpe <thorpej@netbsd.org>
|
1.11 | 14-Aug-2008 |
yamt | remove always-true conditionals.
|
1.10 | 11-Aug-2008 |
yamt | constify
|
1.9 | 31-Jul-2008 |
simonb | Merge the simonb-wapbl branch. From the original branch commit:
Add Wasabi System's WAPBL (Write Ahead Physical Block Logging) journaling code. Originally written by Darrin B. Jewell while at Wasabi and updated to -current by Antti Kantee, Andy Doran, Greg Oster and Simon Burge.
OK'd by core@, releng@.
|
1.8 | 04-Jun-2008 |
ad | branches: 1.8.2; 1.8.4; vm_page: put TAILQ_ENTRY into a union with LIST_ENTRY, so we can use both.
|
1.7 | 14-May-2008 |
reinoud | Import writing part of the UDF file system making optical media like CD's and DVD's behave like floppy discs. Writing is supported upto and including version 2.01; version 2.50 and 2.60 will follow.
Also extending the UDF implementation to support symbolic links and hardlinks.
Added are the mmcformat(8) tool to format rewritable CD/DVD discs and newfs_udf(8).
Limitations: all operations can be performed on the file system though the sheduling is currently optimised for archiving workloads.
mv(1)/rename(2) is currently only implemented for non-directories.
|
1.6 | 19-Apr-2008 |
hannken | branches: 1.6.2; 1.6.4; Remove a race when pages are released while waiting for fstrans_start().
Fixes PR #38460
|
1.5 | 18-Jan-2008 |
yamt | branches: 1.5.6; 1.5.8; genfs_do_putpages: DEBUG checks.
|
1.4 | 18-Jan-2008 |
yamt | genfs_do_putpages: ensure that we clean the vnode in the case of PGO_RECLAIM.
|
1.3 | 18-Jan-2008 |
yamt | push pmap_clear_reference calls into pdpolicy code, where reference bits actually matter.
|
1.2 | 02-Jan-2008 |
ad | Merge vmlocking2 to head.
|
1.1 | 17-Oct-2007 |
pooka | branches: 1.1.4; 1.1.6; 1.1.8; 1.1.10; 1.1.12; 1.1.14; 1.1.16; 1.1.20; Split I/O-related routines (getpages, putpages, etc.) which are heavily tied to uvm out of genfs_vnops into genfs_io.c
|
1.1.20.2 | 19-Jan-2008 |
bouyer | Sync with HEAD
|
1.1.20.1 | 02-Jan-2008 |
bouyer | Sync with HEAD
|
1.1.16.1 | 04-Dec-2007 |
ad | Pull the vmlocking changes into a new branch.
|
1.1.14.4 | 23-Mar-2008 |
matt | sync with HEAD
|
1.1.14.3 | 09-Jan-2008 |
matt | sync with HEAD
|
1.1.14.2 | 06-Nov-2007 |
matt | sync with HEAD
|
1.1.14.1 | 17-Oct-2007 |
matt | file genfs_io.c was added on branch matt-armv6 on 2007-11-06 23:33:16 +0000
|
1.1.12.1 | 18-Feb-2008 |
mjf | Sync with HEAD.
|
1.1.10.3 | 21-Jan-2008 |
yamt | sync with head
|
1.1.10.2 | 27-Oct-2007 |
yamt | sync with head.
|
1.1.10.1 | 17-Oct-2007 |
yamt | file genfs_io.c was added on branch yamt-lazymbuf on 2007-10-27 11:35:52 +0000
|
1.1.8.2 | 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.1.8.1 | 17-Oct-2007 |
joerg | file genfs_io.c was added on branch jmcneill-pm on 2007-10-26 15:48:52 +0000
|
1.1.6.2 | 23-Oct-2007 |
ad | Sync with head.
|
1.1.6.1 | 17-Oct-2007 |
ad | file genfs_io.c was added on branch vmlocking on 2007-10-23 20:36:43 +0000
|
1.1.4.2 | 18-Oct-2007 |
yamt | sync with head.
|
1.1.4.1 | 17-Oct-2007 |
yamt | file genfs_io.c was added on branch yamt-x86pmap on 2007-10-18 08:33:12 +0000
|
1.5.8.2 | 17-Jun-2008 |
yamt | sync with head.
|
1.5.8.1 | 18-May-2008 |
yamt | sync with head.
|
1.5.6.4 | 17-Jan-2009 |
mjf | Sync with HEAD.
|
1.5.6.3 | 28-Sep-2008 |
mjf | Sync with HEAD.
|
1.5.6.2 | 05-Jun-2008 |
mjf | Sync with HEAD.
Also fix build.
|
1.5.6.1 | 02-Jun-2008 |
mjf | Sync with HEAD.
|
1.6.4.3 | 10-Oct-2008 |
skrll | Sync with HEAD.
|
1.6.4.2 | 18-Sep-2008 |
wrstuden | Sync with wrstuden-revivesa-base-2.
|
1.6.4.1 | 23-Jun-2008 |
wrstuden | Sync w/ -current. 34 merge conflicts to follow.
|
1.6.2.5 | 09-Oct-2010 |
yamt | sync with head
|
1.6.2.4 | 11-Aug-2010 |
yamt | sync with head.
|
1.6.2.3 | 11-Mar-2010 |
yamt | sync with head
|
1.6.2.2 | 04-May-2009 |
yamt | sync with head.
|
1.6.2.1 | 16-May-2008 |
yamt | sync with head.
|
1.8.4.2 | 13-Dec-2008 |
haad | Update haad-dm branch to haad-dm-base2.
|
1.8.4.1 | 19-Oct-2008 |
haad | Sync with HEAD.
|
1.8.2.1 | 10-Jun-2008 |
simonb | Initial commit of Wasabi System's WAPBL (Write Ahead Physical Block Logging) journaling code. Originally written by Darrin B. Jewell while at Wasabi and updated to -current by Antti Kantee, Andy Doran, Greg Oster and Simon Burge.
Still a number of issues - look in doc/BRANCHES for "simonb-wapbl" for more info.
|
1.13.4.5 | 21-Apr-2012 |
riz | Back out a commit included in the ticket 1750 patch which obviously doesn't belong there.
|
1.13.4.4 | 21-Apr-2012 |
riz | Pull up following revision(s) (requested by spz in ticket #1750): crypto/dist/openssl/crypto/mem.c patch crypto/dist/openssl/crypto/asn1/a_d2i_fp.c patch crypto/dist/openssl/crypto/buffer/buffer.c patch sys/miscfs/genfs/genfs_io.c patch
Address CVE-2012-2110. [spz, ticket #1750]
|
1.13.4.3 | 07-Sep-2010 |
bouyer | branches: 1.13.4.3.2; Pull up following revision(s) (requested by chs in ticket #1448): sys/uvm/uvm_pager.h: revision 1.39 via patch sys/miscfs/genfs/genfs_vnops.c: revision 1.183 via patch sys/ufs/ufs/ufs_inode.c: revision 1.83 via patch sys/miscfs/genfs/genfs_io.c: revision 1.40 via patch sys/miscfs/genfs/genfs_node.h: revision 1.20 via patch replace the earlier workaround for PR 40389 with a better fix. the earlier change caused data corruption by freeing pages without invaliding their mappings. instead of the trylock/retry, just take the genfs-node lock before calling VOP_GETPAGES() and pass a new flag to tell it that we're already holding this lock.
|
1.13.4.2 | 04-Apr-2009 |
snj | branches: 1.13.4.2.2; 1.13.4.2.4; Pull up following revision(s) (requested by joerg in ticket #664): sys/miscfs/genfs/genfs_io.c: revision 1.16 Check that the filesystem acutally uses WAPBL before initiating a transaction for the directio case. Fixes PR 39929 and similiar issues seen with PostgreSQL.
|
1.13.4.1 | 02-Nov-2008 |
snj | Pull up following revision(s) (requested by tron in ticket #9): sys/nfs/nfs_bio.c: revision 1.180 sys/miscfs/genfs/genfs_io.c: revision 1.14 sys/uvm/uvm_extern.h: revision 1.149 - allocate 8 pointers on the stack to avoid stack overflow in nfs. - make that 8 a constant - remove bogus panic
|
1.13.4.3.2.2 | 21-Apr-2012 |
riz | Back out a commit included in the ticket 1750 patch which obviously doesn't belong there.
|
1.13.4.3.2.1 | 21-Apr-2012 |
riz | Pull up following revision(s) (requested by spz in ticket #1750): crypto/dist/openssl/crypto/mem.c patch crypto/dist/openssl/crypto/asn1/a_d2i_fp.c patch crypto/dist/openssl/crypto/buffer/buffer.c patch sys/miscfs/genfs/genfs_io.c patch
Address CVE-2012-2110. [spz, ticket #1750]
|
1.13.4.2.4.5 | 29-Feb-2012 |
matt | Improve UVM_PAGE_TRKOWN. Add more asserts to uvm_page.
|
1.13.4.2.4.4 | 09-Feb-2012 |
matt | Change to use the updated uvm_pageout_* signature.
|
1.13.4.2.4.3 | 25-May-2011 |
matt | Make uvm_map recognize UVM_FLAG_COLORMATCH which tells uvm_map that the 'align' argument specifies the starting color of the KVA range to be returned.
When calling uvm_km_alloc with UVM_KMF_VAONLY, also specify the starting color of the kva range returned (UMV_KMF_COLORMATCH) and pass those to uvm_map.
In uvm_pglistalloc, make sure the pages being returned have sequentially advancing colors (so they can be mapped in a contiguous address range). Add a few missing UVM_FLAG_COLORMATCH flags to uvm_pagealloc calls.
Make the socket and pipe loan color-safe.
Make the mips pmap enforce strict page color (color(VA) == color(PA)).
|
1.13.4.2.4.2 | 20-May-2011 |
matt | bring matt-nb5-mips64 up to date with netbsd-5-1-RELEASE (except compat).
|
1.13.4.2.4.1 | 29-Apr-2011 |
matt | Fix placement of #ifdef DEBUG / #endif
|
1.13.4.2.2.3 | 21-Apr-2012 |
riz | Back out a commit included in the ticket 1750 patch which obviously doesn't belong there.
|
1.13.4.2.2.2 | 21-Apr-2012 |
riz | Pull up following revision(s) (requested by spz in ticket #1750): crypto/dist/openssl/crypto/mem.c patch crypto/dist/openssl/crypto/asn1/a_d2i_fp.c patch crypto/dist/openssl/crypto/buffer/buffer.c patch sys/miscfs/genfs/genfs_io.c patch
Address CVE-2012-2110. [spz, ticket #1750]
|
1.13.4.2.2.1 | 07-Sep-2010 |
bouyer | Pull up following revision(s) (requested by chs in ticket #1448): sys/uvm/uvm_pager.h: revision 1.39 via patch sys/miscfs/genfs/genfs_vnops.c: revision 1.183 via patch sys/ufs/ufs/ufs_inode.c: revision 1.83 via patch sys/miscfs/genfs/genfs_io.c: revision 1.40 via patch sys/miscfs/genfs/genfs_node.h: revision 1.20 via patch replace the earlier workaround for PR 40389 with a better fix. the earlier change caused data corruption by freeing pages without invaliding their mappings. instead of the trylock/retry, just take the genfs-node lock before calling VOP_GETPAGES() and pass a new flag to tell it that we're already holding this lock.
|
1.13.2.3 | 28-Apr-2009 |
skrll | Sync with HEAD.
|
1.13.2.2 | 03-Mar-2009 |
skrll | Sync with HEAD.
|
1.13.2.1 | 19-Jan-2009 |
skrll | Sync with HEAD.
|
1.18.2.1 | 13-May-2009 |
jym | Sync with HEAD.
Commit is split, to avoid a "too many arguments" protocol error.
|
1.36.4.5 | 31-May-2011 |
rmind | sync with head
|
1.36.4.4 | 21-Apr-2011 |
rmind | sync with head
|
1.36.4.3 | 05-Mar-2011 |
rmind | sync with head
|
1.36.4.2 | 17-Mar-2010 |
rmind | Reorganise UVM locking to protect P->V state and serialise pmap(9) operations on the same page(s) by always locking their owner. Hence lock order: "vmpage"-lock -> pmap-lock.
Patch, proposed on tech-kern@, from Andrew Doran.
|
1.36.4.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.36.2.65 | 11-Feb-2011 |
uebayasi | Clean up debug code.
|
1.36.2.64 | 21-Nov-2010 |
uebayasi | Clarify things a bit in XIP putpages.
|
1.36.2.63 | 21-Nov-2010 |
uebayasi | Put back XIP putpages, but slightly modifed to be called from the generic putpages, and to call pgo_get() than a specific function. Without this, UVM went mad after unmount (vinval, etc.).
|
1.36.2.62 | 21-Nov-2010 |
uebayasi | Rename PGO_ZERO as PGO_HOLE, and s/uvm_page_zeropage/uvm_page_holepage/.
|
1.36.2.61 | 21-Nov-2010 |
uebayasi | Assert.
|
1.36.2.60 | 21-Nov-2010 |
uebayasi | Resurrect PGO_ZERO support.
When vnode pager encounters hole pages in XIP'ed vnodes, it fills page slots with PGO_ZERO and returns them back to the caller (fault handler). Fault handlers are responsible to check page slots and redirect PGO_ZERO to the single "zero page" allocated by calling uvm_page_zeropage_alloc(9).
The zero page is wired, read-only (PG_RDONLY) page. It's shared by multiple vnodes, it has no single owner.
XIP'ed vnodes are supposed to be "stable" during I/O (unlocked). Because XIP'ed mounts are always read-only. There's no chance to change mappings of XIP'ed vnodes and their XIP'ed pages. Thus the cached uobj is reused after pgo_get() for PGO_ZERO.
(Do we need a new concept of "read-only UVM object"?)
|
1.36.2.59 | 21-Nov-2010 |
uebayasi | Revert XIP putpages totally.
XIP'ed uobj owns no pages; uvm_object::uo_npages is always 0, nothing happens.
Upper layer is responsible to unmap pmap-level mappings.
|
1.36.2.58 | 21-Nov-2010 |
uebayasi | Clean up, reduce diff from trunk.
|
1.36.2.57 | 21-Nov-2010 |
uebayasi | Merge getpages finalization code.
In XIP case, there's nothing to do because MMIO device pages are "staleless", unlike page caches used as I/O buffers.
|
1.36.2.56 | 21-Nov-2010 |
uebayasi | Kill one more goto.
|
1.36.2.55 | 21-Nov-2010 |
uebayasi | Clean up gotos.
|
1.36.2.54 | 21-Nov-2010 |
uebayasi | Clean up ifdefs.
|
1.36.2.53 | 21-Nov-2010 |
uebayasi | Adjust merged XIP getpages page slot offset calculation again so it really works. Sprinkle a few assertions and UVMHISTs.
|
1.36.2.52 | 20-Nov-2010 |
uebayasi | genfs_do_getpages_xip_io_done: Adjust page condition checks: - Expect uvn_findpage_xip() returns busy pages. - Device pages are always initialized (== !uninitialized == !fake).
|
1.36.2.51 | 20-Nov-2010 |
uebayasi | XIP has no "fake" (== unitinialized) pages, because pages are already initialized when mounted. Adjust getpages loop again.
|
1.36.2.50 | 20-Nov-2010 |
uebayasi | Adjust again when heading page slots are skipped.
|
1.36.2.49 | 20-Nov-2010 |
uebayasi | Fix a bug (offset calculation) in the previous.
|
1.36.2.48 | 20-Nov-2010 |
uebayasi | Snapshot of getpages BMAP loop merge.
|
1.36.2.47 | 19-Nov-2010 |
uebayasi | genfs_*_xip_io: Adjust start offset.
|
1.36.2.46 | 19-Nov-2010 |
uebayasi | Comment.
|
1.36.2.45 | 19-Nov-2010 |
uebayasi | Remove unused code.
|
1.36.2.44 | 19-Nov-2010 |
uebayasi | More adjustment.
Reorder genfs_node_unlock() -> putiobuf() to putiobuf() -> genfs_node_unlock() but I don't think there's any constraint between these two.
|
1.36.2.43 | 19-Nov-2010 |
uebayasi | Share mode code. Care glock.
|
1.36.2.42 | 19-Nov-2010 |
uebayasi | Reduce code duplication.
|
1.36.2.41 | 19-Nov-2010 |
uebayasi | Reduce code.
|
1.36.2.40 | 19-Nov-2010 |
uebayasi | Reduce unnecessary code.
|
1.36.2.39 | 19-Nov-2010 |
uebayasi | Call XIP getpages() from within the generic one.
|
1.36.2.38 | 19-Nov-2010 |
uebayasi | Really remove XIP hole code.
|
1.36.2.37 | 19-Nov-2010 |
uebayasi | Comment out XIP hole page redirection code. Since makefs(8) doesn't support hole, and these code paths can be never tested.
(The current XIP is read-only, so hole pages are pointless in practice.)
|
1.36.2.36 | 19-Nov-2010 |
uebayasi | Adjust XIP putpages to I/O XIP getpages.
|
1.36.2.35 | 19-Nov-2010 |
uebayasi | Make XIP genfs_getpages_xip() return pages in I/O path, preparing merge into the generic genfs_getpages().
|
1.36.2.34 | 18-Nov-2010 |
uebayasi | Make XIP pager use cdev_mmap() instead of struct vm_physseg.
|
1.36.2.33 | 18-Nov-2010 |
uebayasi | Style change.
|
1.36.2.32 | 16-Nov-2010 |
uebayasi | Factor out the part which lookups physical page "identity" from UVM object, into sys/uvm/uvm_vnode.c:uvn_findpage_xip(). Eventually this will become a call to cdev UVM object pager.
|
1.36.2.31 | 15-Nov-2010 |
uebayasi | Move zero-page into a common place, in the hope that it's shared for other purposes.
According to Chuck Silvers, zero-page mappings don't need to be explicitly unmapped in putpages(). Follow that advice.
|
1.36.2.30 | 06-Nov-2010 |
uebayasi | Sync with HEAD.
|
1.36.2.29 | 04-Nov-2010 |
uebayasi | Split physical device segment pages from "managed" to "managed device". Cache that information as a flag PG_DEVICE so that callers don't need to walk physsegs everytime.
Remove PQ_FIXED, which means that page daemon doesn't need to know device segment pages at all. But still fault handlers need to know them.
I think this is what I can do best now.
|
1.36.2.28 | 04-Nov-2010 |
uebayasi | Remove a XXX comment which is only confusing.
|
1.36.2.27 | 22-Oct-2010 |
uebayasi | Sync with HEAD (-D20101022).
|
1.36.2.26 | 27-Sep-2010 |
uebayasi | genfs_do_getpages_xip1: Adjust locking. Although XIP never does real I/O, it's called without PGO_LOCKED in some cases. Leave vmobjlock unlocked in that case.
|
1.36.2.25 | 26-Sep-2010 |
uebayasi | Minor fixes.
|
1.36.2.24 | 26-Sep-2010 |
uebayasi | Implement XIP "putpages". Invalidate MMU mappings of pages at the request of PGO_FREE. PGO_DEACTIVATE and PGO_CLEANIT do nothing, because XIP pages are neither queued nor writable.
Allocate read-only "zero" page per vnode. Put it at offset 0 of vnode's uvm_object. This per-vnode "zero" page is mapped to all hole pages of the vnode. If one of its mapped pages are forced to be PGO_FREE'ed, all the mappings are invalidated.
|
1.36.2.23 | 26-Sep-2010 |
uebayasi | Wrap long lines.
|
1.36.2.22 | 25-Aug-2010 |
uebayasi | Fix UVMHIST build.
Remove a comment about xip getpages optimization; quick profiling showed that this routine is not expensive. It'd be better to concentrate on reducing TLB miss.
|
1.36.2.21 | 17-Aug-2010 |
uebayasi | Sync with HEAD.
|
1.36.2.20 | 12-Aug-2010 |
uebayasi | vm_physseg::start is PFN, not mdpgno, so don't decode it using pmap_phys_address().
|
1.36.2.19 | 11-Aug-2010 |
uebayasi | In XIP vnode pager, assert that filesystem blocks and pages are aligned.
|
1.36.2.18 | 22-Jul-2010 |
uebayasi | s/PG_XIP/PQ_FIXED/, meaning that the fault handler sees XIP pages as "fixed", and doesn't pass them to paging activity.
("XIP" is a vnode specific knowledge. It was wrong that the fault handler had to know such a special thing.)
|
1.36.2.17 | 20-Jul-2010 |
uebayasi | genfs_do_getpages_xip: Simplify code.
|
1.36.2.16 | 15-Jul-2010 |
uebayasi | s/PG_DIRECT/PG_XIP/
|
1.36.2.15 | 12-Jul-2010 |
uebayasi | Reduce more diff by backing out XIP page specific code. Allow XIP pages to be loaned.
|
1.36.2.14 | 09-Jul-2010 |
uebayasi | opt_direct_page.h is no more.
|
1.36.2.13 | 09-Jul-2010 |
uebayasi | Mark XIP pages as PG_CLEAN and/or PG_BUSY when appropriate. Protect vnode lock when vm_page::flags is manipulated.
|
1.36.2.12 | 07-Jul-2010 |
uebayasi | To simplify things, revert global vm_page_md hash and allocate struct vm_page [] for XIP physical segments.
|
1.36.2.11 | 06-Jul-2010 |
uebayasi | Directly allocate zero'ed vm_page for XIP unallocated blocks, instead of abusing pool page. Move the code to XIP vnode pager in genfs_io.c.
|
1.36.2.10 | 08-Jun-2010 |
uebayasi | Comment.
|
1.36.2.9 | 07-Jun-2010 |
uebayasi | Comment.
|
1.36.2.8 | 31-May-2010 |
uebayasi | Re-define the definition of "device page"; device pages are pages of device memory. Pages which don't have vm_page (== can't be used for generic use), but whose PV are tracked, are called "direct pages" from now.
|
1.36.2.7 | 28-Apr-2010 |
uebayasi | When mounting a block device as XIP, pass registered struct vm_physseg * as a cookie from the block device to the caller (== mount code). struct vm_physseg * will be passed to XIP vnode pager (genfs_do_getpages_xip()), then converted back to paddr_t.
(My future plan is to pass struct vm_physseg * back to the fault handler, and to pmap_enter() as is.)
|
1.36.2.6 | 23-Mar-2010 |
uebayasi | Put run-time XIP-specific per-mount data in struct specdev, not struct mount.
|
1.36.2.5 | 17-Mar-2010 |
uebayasi | Put comments to reflect my intent about genfs_do_getpages_xip method.
|
1.36.2.4 | 28-Feb-2010 |
uebayasi | Don't always enable XIP on this branch to prepare the merge. Fix build without XIP in places.
|
1.36.2.3 | 28-Feb-2010 |
uebayasi | To mount block devices as XIP, pass physical address "cookie" used by bus_space_mmap(9) / pmap_phys_addr(9) via struct mount.
|
1.36.2.2 | 23-Feb-2010 |
uebayasi | genfs_do_getpages_xip: Drop vmobjlock before calling VOP_BMAP, otherwise deadlock. No idea how this worked for me before.
Directly call uvm_phys_to_vm_page_device() to make a device page cookie.
|
1.36.2.1 | 11-Feb-2010 |
uebayasi | genfs_getpages() for XIP.
Pages are directly mappable, and always there. What we need to do here is to address filesystem blocks and tell those addresses back to the fault handler by encoding the physical addresses in struct vm_page * pointers.
(I hate code duplication. What can I do?)
|
1.46.2.1 | 06-Jun-2011 |
jruoho | Sync with HEAD.
|
1.48.2.1 | 23-Jun-2011 |
cherry | Catchup with rmind-uvmplock merge.
|
1.53.8.1 | 07-May-2012 |
riz | Pull up following revision(s) (requested by chs in ticket #204): sys/fs/sysvbfs/sysvbfs_vnops.c: revision 1.44 sys/ufs/ffs/ffs_vfsops.c: revision 1.277 sys/fs/v7fs/v7fs_vnops.c: revision 1.11 sys/ufs/chfs/chfs_vnops.c: revision 1.7 sys/ufs/ext2fs/ext2fs_readwrite.c: revision 1.61 sys/miscfs/genfs/genfs_io.c: revision 1.54 sys/kern/vfs_wapbl.c: revision 1.52 sys/uvm/uvm_pager.h: revision 1.43 sys/ufs/ffs/ffs_vnops.c: revision 1.121 sys/kern/vfs_subr.c: revision 1.434 sys/fs/msdosfs/msdosfs_vnops.c: revision 1.83 sys/fs/ntfs/ntfs_vnops.c: revision 1.51 sys/fs/udf/udf_subr.c: revision 1.119 sys/miscfs/specfs/spec_vnops.c: revision 1.135 sys/ufs/ext2fs/ext2fs_vnops.c: revision 1.103 sys/fs/udf/udf_vnops.c: revision 1.71 sys/ufs/ufs/ufs_readwrite.c: revision 1.104 change vflushbuf() to take the full FSYNC_* flags. translate FSYNC_LAZY into PGO_LAZY for VOP_PUTPAGES() so that genfs_do_io() can set the appropriate io priority for the I/O. this is the first part of addressing PR 46325. mark all wapbl I/O as BPRIO_TIMECRITICAL. this is the second part of addressing PR 46325.
|
1.53.6.1 | 02-Jun-2012 |
mrg | sync to latest -current.
|
1.53.2.19 | 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.53.2.18 | 22-Apr-2013 |
yamt | revert unnecessary diff
|
1.53.2.17 | 02-Nov-2012 |
yamt | tweak integrity_sync cases some comments
|
1.53.2.16 | 01-Aug-2012 |
yamt | - fix integrity sync. putpages for integrity sync (fsync, msync with MS_SYNC, etc) should not skip pages being written back by other threads.
- adapt to radix tree tag api changes.
|
1.53.2.15 | 01-Aug-2012 |
yamt | remove stale comments
|
1.53.2.14 | 23-May-2012 |
yamt | sync with head.
|
1.53.2.13 | 17-Feb-2012 |
yamt | byebye PG_HOLE as it turned out to be unnecessary.
|
1.53.2.12 | 05-Feb-2012 |
yamt | genfs_gop_write_rwmap: comment
|
1.53.2.11 | 05-Feb-2012 |
yamt | use unsigned comments assertions
|
1.53.2.10 | 25-Jan-2012 |
yamt | comment
|
1.53.2.9 | 24-Jan-2012 |
yamt | - g/c #if 0'ed code - minor optimization - comments
|
1.53.2.8 | 18-Jan-2012 |
yamt | - bug fixes - minor optimizations - assertions - comments
|
1.53.2.7 | 14-Jan-2012 |
yamt | fix overwrite case
|
1.53.2.6 | 20-Dec-2011 |
yamt | don't inline uvn_findpages in genfs_io.
|
1.53.2.5 | 30-Nov-2011 |
yamt | g/c #if 1 comment
|
1.53.2.4 | 26-Nov-2011 |
yamt | - uvm_page_array_fill: add some more parameters - uvn_findpages: use gang-lookup - genfs_putpages: re-enable backward clustering - mechanical changes after the recent radixtree.h api changes
|
1.53.2.3 | 20-Nov-2011 |
yamt | - simplify code - comments
|
1.53.2.2 | 10-Nov-2011 |
yamt | - remove uobj->memq - fix UVM_PAGE_TRKOWN - comments
|
1.53.2.1 | 02-Nov-2011 |
yamt | page cache related changes
- maintain object pages in radix tree rather than rb tree. - reduce unnecessary page scan in putpages. esp. when an object has a ton of pages cached but only a few of them are dirty. - reduce the number of pmap operations by tracking page dirtiness more precisely in uvm layer. - fix nfs commit range tracking. - fix nfs write clustering. XXX hack
|
1.55.4.1 | 18-May-2014 |
rmind | sync with head
|
1.55.2.4 | 03-Dec-2017 |
jdolecek | update from HEAD
|
1.55.2.3 | 20-Aug-2014 |
tls | Rebase to HEAD as of a few days ago.
|
1.55.2.2 | 10-Oct-2012 |
bouyer | We know vp is not NULL, no need to check
|
1.55.2.1 | 12-Sep-2012 |
tls | Initial snapshot of work to eliminate 64K MAXPHYS. Basically works for physio (I/O to raw devices); needs more doing to get it going with the filesystems, but it shouldn't damage data.
All work's been done on amd64 so far. Not hard to add support to other ports. If others want to pitch in, one very helpful thing would be to sort out when and how IDE disks can do 128K or larger transfers, and adjust the various PCI IDE (or at least ahcisata) drivers and wd.c accordingly -- it would make testing much easier. Another very helpful thing would be to implement a smart minphys() for RAIDframe along the lines detailed in the MAXPHYS-NOTES file.
|
1.58.6.3 | 28-Aug-2017 |
skrll | Sync with HEAD
|
1.58.6.2 | 05-Oct-2016 |
skrll | Sync with HEAD
|
1.58.6.1 | 06-Jun-2015 |
skrll | Sync with HEAD
|
1.61.2.3 | 26-Apr-2017 |
pgoyette | Sync with HEAD
|
1.61.2.2 | 20-Mar-2017 |
pgoyette | Sync with HEAD
|
1.61.2.1 | 04-Nov-2016 |
pgoyette | Sync with HEAD
|
1.63.2.1 | 21-Apr-2017 |
bouyer | Sync with HEAD
|
1.68.6.3 | 02-Nov-2017 |
snj | Pull up following revision(s) (requested by pgoyette in ticket #335): share/man/man9/kernhist.9: 1.5-1.8 sys/arch/acorn26/acorn26/pmap.c: 1.39 sys/arch/arm/arm32/fault.c: 1.105 via patch sys/arch/arm/arm32/pmap.c: 1.350, 1.359 sys/arch/arm/broadcom/bcm2835_bsc.c: 1.7 sys/arch/arm/omap/if_cpsw.c: 1.20 sys/arch/arm/omap/tiotg.c: 1.7 sys/arch/evbarm/conf/RPI2_INSTALL: 1.3 sys/dev/ic/sl811hs.c: 1.98 sys/dev/usb/ehci.c: 1.256 sys/dev/usb/if_axe.c: 1.83 sys/dev/usb/motg.c: 1.18 sys/dev/usb/ohci.c: 1.274 sys/dev/usb/ucom.c: 1.119 sys/dev/usb/uhci.c: 1.277 sys/dev/usb/uhub.c: 1.137 sys/dev/usb/umass.c: 1.160-1.162 sys/dev/usb/umass_quirks.c: 1.100 sys/dev/usb/umass_scsipi.c: 1.55 sys/dev/usb/usb.c: 1.168 sys/dev/usb/usb_mem.c: 1.70 sys/dev/usb/usb_subr.c: 1.221 sys/dev/usb/usbdi.c: 1.175 sys/dev/usb/usbdi_util.c: 1.67-1.70 sys/dev/usb/usbroothub.c: 1.3 sys/dev/usb/xhci.c: 1.75 sys/external/bsd/drm2/dist/drm/i915/i915_gem.c: 1.34 sys/kern/kern_history.c: 1.15 sys/kern/kern_xxx.c: 1.74 sys/kern/vfs_bio.c: 1.275-1.276 sys/miscfs/genfs/genfs_io.c: 1.71 sys/sys/kernhist.h: 1.21 sys/ufs/ffs/ffs_balloc.c: 1.63 sys/ufs/lfs/lfs_vfsops.c: 1.361 sys/ufs/lfs/ulfs_inode.c: 1.21 sys/ufs/lfs/ulfs_vnops.c: 1.52 sys/ufs/ufs/ufs_inode.c: 1.102 sys/ufs/ufs/ufs_vnops.c: 1.239 sys/uvm/pmap/pmap.c: 1.37-1.39 sys/uvm/pmap/pmap_tlb.c: 1.22 sys/uvm/uvm_amap.c: 1.108 sys/uvm/uvm_anon.c: 1.64 sys/uvm/uvm_aobj.c: 1.126 sys/uvm/uvm_bio.c: 1.91 sys/uvm/uvm_device.c: 1.66 sys/uvm/uvm_fault.c: 1.201 sys/uvm/uvm_km.c: 1.144 sys/uvm/uvm_loan.c: 1.85 sys/uvm/uvm_map.c: 1.353 sys/uvm/uvm_page.c: 1.194 sys/uvm/uvm_pager.c: 1.111 sys/uvm/uvm_pdaemon.c: 1.109 sys/uvm/uvm_swap.c: 1.175 sys/uvm/uvm_vnode.c: 1.103 usr.bin/vmstat/vmstat.c: 1.219 Reorder to test for null before null deref in debug code -- Reorder to test for null before null deref in debug code -- KNF -- No need for '\n' in UVMHIST_LOG -- normalise a BIOHIST log message -- Update the kernhist(9) kernel history code to address issues identified in PR kern/52639, as well as some general cleaning-up... (As proposed on tech-kern@ with additional changes and enhancements.) Details of changes: * All history arguments are now stored as uintmax_t values[1], both in the kernel and in the structures used for exporting the history data to userland via sysctl(9). This avoids problems on some architectures where passing a 64-bit (or larger) value to printf(3) can cause it to process the value as multiple arguments. (This can be particularly problematic when printf()'s format string is not a literal, since in that case the compiler cannot know how large each argument should be.) * Update the data structures used for exporting kernel history data to include a version number as well as the length of history arguments. * All [2] existing users of kernhist(9) have had their format strings updated. Each format specifier now includes an explicit length modifier 'j' to refer to numeric values of the size of uintmax_t. * All [2] existing users of kernhist(9) have had their format strings updated to replace uses of "%p" with "%#jx", and the pointer arguments are now cast to (uintptr_t) before being subsequently cast to (uintmax_t). This is needed to avoid compiler warnings about casting "pointer to integer of a different size." * All [2] existing users of kernhist(9) have had instances of "%s" or "%c" format strings replaced with numeric formats; several instances of mis-match between format string and argument list have been fixed. * vmstat(1) has been modified to handle the new size of arguments in the history data as exported by sysctl(9). * vmstat(1) now provides a warning message if the history requested with the -u option does not exist (previously, this condition was silently ignored, with only a single blank line being printed). * vmstat(1) now checks the version and argument length included in the data exported via sysctl(9) and exits if they do not match the values with which vmstat was built. * The kernhist(9) man-page has been updated to note the additional requirements imposed on the format strings, along with several other minor changes and enhancements. [1] It would have been possible to use an explicit length (for example, uint64_t) for the history arguments. But that would require another "rototill" of all the users in the future when we add support for an architecture that supports a larger size. Also, the printf(3) format specifiers for explicitly-sized values, such as "%"PRIu64, are much more verbose (and less aesthetically appealing, IMHO) than simply using "%ju". [2] I've tried very hard to find "all [the] existing users of kernhist(9)" but it is possible that I've missed some of them. I would be glad to update any stragglers that anyone identifies. -- For some reason this single kernel seems to have outgrown its declared size as a result of the kernhist(9) changes. Bump the size. XXX The amount of increase may be excessive - anyone with more detailed XXX knowledge please feel free to further adjust the value appropriately. -- Misssed one cast of pointer --> uintptr_t in previous kernhist(9) commit -- And yet another one. :( -- Use correct mark-up for NetBSD version. -- More improvements in grammar and readability. -- Remove a stray '"' (obvious typo) and add a couple of casts that are probably needed. -- And replace an instance of "%p" conversion with "%#jx" -- Whitespace fix. Give Bl tag table a width. Fix Xr.
|
1.68.6.2 | 05-Jul-2017 |
martin | Pull up following revision(s) (requested by hannken in ticket #84): sys/miscfs/genfs/genfs_io.c: revision 1.70 Add missing check for dead or dying vnode to the entry of genfs_getpages().
|
1.68.6.1 | 04-Jun-2017 |
bouyer | pullup the following revisions, requested by hannken in ticket #2: src/share/man/man9/fstrans.9 1.25 src/sys/kern/vfs_mount.c 1.66 src/sys/kern/vfs_subr.c 1.468 src/sys/kern/vfs_trans.c 1.46 src/sys/kern/vfs_vnode.c 1.94, 1.95, 1.96 src/sys/kern/vnode_if.c 1.105, 1.106 src/sys/kern/vnode_if.sh 1.65, 1.66 src/sys/kern/vnode_if.src 1.76 src/sys/miscfs/genfs/genfs_io.c 1.69 src/sys/miscfs/genfs/genfs_vnops.c 1.196, 1.197 src/sys/miscfs/genfs/layer_extern.h 1.40 src/sys/miscfs/genfs/layer_vfsops.c 1.51 src/sys/miscfs/genfs/layer_vnops.c 1.67 src/sys/miscfs/nullfs/null_vnops.c 1.42 src/sys/miscfs/overlay/overlay_vnops.c 1.24 src/sys/miscfs/umapfs/umap_vnops.c 1.60 src/sys/rump/include/rump/rumpvnode_if.h 1.29, 1.30 src/sys/rump/librump/rumpkern/emul.c 1.182 src/sys/rump/librump/rumpvfs/rumpvnode_if.c 1.29, 1.30 src/sys/sys/fstrans.h 1.11 src/sys/sys/vnode.h 1.278 src/sys/sys/vnode_if.h 1.100, 1.101 src/sys/sys/vnode_impl.h 1.14, 1.15 src/sys/ufs/lfs/lfs_pages.c 1.12
Vnode state, lock and fstrans cleanup: - Rename vnode state "VS_ACTIVE" to "VS_LOADED" and add synthetic state "VS_ACTIVE" to assert a loaded vnode with usecount > 0.
- Redo FSTRANS in vnode_if.c and use it for VOP_LOCK and VOP_UNLOCK.
- Cleanup the genfs lock operations.
- Make "struct vnode_impl" member "vi_lock" a krwlock_t again.
- Remove the lock type argument from fstrans_start and fstrans_start_nowait, remove now unused FSTRANS state "FSTRANS_SUSPENDING".
|
1.71.2.2 | 26-Dec-2018 |
pgoyette | Sync with HEAD, resolve a few conflicts
|
1.71.2.1 | 25-Jun-2018 |
pgoyette | Sync with HEAD
|
1.72.2.2 | 13-Apr-2020 |
martin | Mostly merge changes from HEAD upto 20200411
|
1.72.2.1 | 10-Jun-2019 |
christos | Sync with HEAD
|
1.83.2.2 | 29-Feb-2020 |
ad | Sync with head.
|
1.83.2.1 | 17-Jan-2020 |
ad | Sync with head.
|
1.24 | 14-Mar-2020 |
ad | Update a comment.
|
1.23 | 15-Jan-2020 |
ad | Merge from yamt-pagecache (after much testing):
- Reduce unnecessary page scan in putpages esp. when an object has a ton of pages cached but only a few of them are dirty.
- Reduce the number of pmap operations by tracking page dirtiness more precisely in uvm layer.
|
1.22 | 28-May-2018 |
chs | branches: 1.22.2; 1.22.8; 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.21 | 06-Jun-2013 |
dholland | branches: 1.21.32; Add missing declaration of struct vnode.
|
1.20 | 01-Sep-2010 |
chs | branches: 1.20.8; 1.20.18; replace the earlier workaround for PR 40389 with a better fix. the earlier change caused data corruption by freeing pages without invaliding their mappings. instead of the trylock/retry, just take the genfs-node lock before calling VOP_GETPAGES() and pass a new flag to tell it that we're already holding this lock.
|
1.19 | 27-Jan-2010 |
uebayasi | branches: 1.19.2; 1.19.4; Don't forget to tell the result of rw_tryenter().
|
1.18 | 27-Jan-2010 |
uebayasi | Add genfs_node_rdtrylock().
|
1.17 | 14-May-2008 |
reinoud | branches: 1.17.8; 1.17.14; 1.17.16; Import writing part of the UDF file system making optical media like CD's and DVD's behave like floppy discs. Writing is supported upto and including version 2.01; version 2.50 and 2.60 will follow.
Also extending the UDF implementation to support symbolic links and hardlinks.
Added are the mmcformat(8) tool to format rewritable CD/DVD discs and newfs_udf(8).
Limitations: all operations can be performed on the file system though the sheduling is currently optimised for archiving workloads.
mv(1)/rename(2) is currently only implemented for non-directories.
|
1.16 | 20-Feb-2007 |
ad | branches: 1.16.38; 1.16.40; 1.16.42; 1.16.44; Add genfs_node_destroy(). Fixes a lock "leak" seen when running LOCKDEBUG kernels.
|
1.15 | 15-Feb-2007 |
ad | branches: 1.15.2; Replace some uses of lockmgr() / simplelocks.
|
1.14 | 14-Oct-2006 |
yamt | add wrapper functions of lockmgr on g_glock.
|
1.13 | 06-Oct-2006 |
dogcow | fix build error in mount_sysvbfs.
|
1.12 | 05-Oct-2006 |
chs | add support for O_DIRECT (I/O directly to application memory, bypassing any kernel caching for file data).
|
1.11 | 14-May-2006 |
elad | branches: 1.11.8; 1.11.10; integrate kauth.
|
1.10 | 30-Mar-2006 |
yamt | some cleanups after the introduction of GOP_SIZE_MEM flag. - remove GOP_SIZE_READ/GOP_SIZE_WRITE flags. they have not been used since the change. - ufs_balloc_range: remove code which has been no-op since the change. thanks Konrad Schroder for explaining the original intention of the code. - ffs_gop_size: don't extend past eof, in the case of GOP_SIZE_MEM. otherwise genfs_getpages end up to allocate pages past eof unnecessarily.
|
1.9 | 11-Dec-2005 |
christos | branches: 1.9.4; 1.9.6; 1.9.8; 1.9.10; 1.9.12; merge ktrace-lwp.
|
1.8 | 23-Jul-2005 |
yamt | update file timestamps for nfsd loaned-read and mmap. PR/25279. discussed on tech-kern@.
|
1.7 | 17-Jul-2005 |
yamt | ensure that vnodes with dirty pages are always on syncer's queue.
- genfs_putpages: wait for i/o completion of PG_RELEASED/PG_PAGEOUT pages by setting "wasclean" false when encountering them. suggested by Stephan Uphoff in PR/24596 (1).
- genfs_putpages: write protect pages when cleaning out, if we're going to take the vnode off the syncer's queue. uvm_fault: don't write-map pages unless its vnode is already on the syncer's queue.
fix PR/24596 (3) but in the different way from the suggested fix. (to keep our current behaviour, ie. not to require explicit msync. discussed on tech-kern@.)
- genfs_putpages: don't mistakenly take a vnode off the queue by introducing a generation number in genfs_node. genfs_getpages: increment the generation number. suggested by Stephan Uphoff in PR/24596 (2).
- add some assertions.
|
1.6 | 28-Jun-2005 |
yamt | branches: 1.6.2; - constify genfs_ops. - use member designators.
|
1.5 | 24-Sep-2003 |
yamt | branches: 1.5.14; fix a bug of lfs.
genfs_getpages() can read in more blocks than it should due to faked filesize of lfs_gop_size(). it's a security problem and it makes gcc3 "internal error"
to fix this, - in genfs_getpages(), always calculate diskeof and memeof separately so that filesystems (in this case, lfs) can use different strategies for them. - introduce GOP_SIZE_MEM flag and use it to request in-core filesize. (it was an intention of GOP_SIZE_READ, but after the above change _READ is not a straightforward name)
after this, no one uses GOP_SIZE_{READ,WRITE} anymore but leave them for now.
|
1.4 | 17-Feb-2003 |
perseant | branches: 1.4.2; Add code to UBCify LFS. This is still behind "#ifdef LFS_UBC" for now (there are still some details to work out) but expect that to go away soon. To support these basic changes (creation of lfs_putpages, lfs_gop_write, mods to lfs_balloc) several other changes were made, to wit:
* Create a writer daemon kernel thread whose purpose is to handle page writes for the pagedaemon, but which also takes over some of the functions of lfs_check(). This thread is started the first time an LFS is mounted.
* Add a "flags" parameter to GOP_SIZE. Current values are GOP_SIZE_READ, meaning that the call should return the size of the in-core version of the file, and GOP_SIZE_WRITE, meaning that it should return the on-disk size. One of GOP_SIZE_READ or GOP_SIZE_WRITE must be specified.
* Instead of using malloc(...M_WAITOK) for everything, reserve enough resources to get by and use malloc(...M_NOWAIT), using the reserves if necessary. Use the pool subsystem for structures small enough that this is feasible. This also obsoletes LFS_THROTTLE.
And a few that are not strictly necessary:
* Moves the LFS inode extensions off onto a separately allocated structure; getting closer to LFS as an LKM. "Welcome to 1.6O."
* Unified GOP_ALLOC between FFS and LFS.
* Update LFS copyright headers to correct values.
* Actually cast to unsigned in lfs_shellsort, like the comment says.
* Keep track of which segments were empty before the previous checkpoint; any segments that pass two checkpoints both dirty and empty can be summarily cleaned. Do this. Right now lfs_segclean still works, but this should be turned into an effectless compatibility syscall.
|
1.3 | 18-Dec-2001 |
chs | branches: 1.3.2; add some compatibility routines to allow mmap() to work non-UBCified filesystems (in the same non-coherent fashion that they worked before).
|
1.2 | 15-Sep-2001 |
chs | branches: 1.2.2; 1.2.4; add a forward decl for struct vm_page.
|
1.1 | 15-Sep-2001 |
chs | interfaces and structures used by new genfs_{get,put}pages().
|
1.2.4.2 | 01-Oct-2001 |
fvdl | Catch up with -current.
|
1.2.4.1 | 15-Sep-2001 |
fvdl | file genfs_node.h was added on branch thorpej-devvp on 2001-10-01 12:47:18 +0000
|
1.2.2.3 | 08-Jan-2002 |
nathanw | Catch up to -current.
|
1.2.2.2 | 21-Sep-2001 |
nathanw | Catch up to -current.
|
1.2.2.1 | 15-Sep-2001 |
nathanw | file genfs_node.h was added on branch nathanw_sa on 2001-09-21 22:36:37 +0000
|
1.3.2.2 | 10-Jan-2002 |
thorpej | Sync kqueue branch with -current.
|
1.3.2.1 | 18-Dec-2001 |
thorpej | file genfs_node.h was added on branch kqueue on 2002-01-10 20:01:34 +0000
|
1.4.2.4 | 10-Nov-2005 |
skrll | Sync with HEAD. Here we go again...
|
1.4.2.3 | 21-Sep-2004 |
skrll | Fix the sync with head I botched.
|
1.4.2.2 | 18-Sep-2004 |
skrll | Sync with HEAD.
|
1.4.2.1 | 03-Aug-2004 |
skrll | Sync with HEAD
|
1.5.14.1 | 24-Aug-2005 |
riz | Pull up following revision(s) (requested by yamt in ticket #688): sys/miscfs/genfs/genfs_vnops.c: revision 1.98 via patch sys/ufs/ffs/ffs_vfsops.c: revision 1.165 sys/ufs/lfs/lfs_extern.h: revision 1.69 sys/fs/filecorefs/filecore_vfsops.c: revision 1.20 sys/nfs/nfs_node.c: revision 1.80 sys/fs/smbfs/smbfs_node.c: revision 1.24 sys/fs/cd9660/cd9660_vfsops.c: revision 1.24 sys/fs/msdosfs/msdosfs_denode.c: revision 1.8 sys/miscfs/genfs/genfs_node.h: revision 1.6 sys/ufs/lfs/lfs_vfsops.c: revision 1.183 sys/ufs/ext2fs/ext2fs_vfsops.c: revision 1.86 sys/fs/adosfs/advfsops.c: revision 1.23 sys/fs/ntfs/ntfs_vfsops.c: revision 1.31 - constify genfs_ops. - use member designators.
sys/miscfs/genfs/genfs_vnops.c: revision 1.99 via patch genfs_getpages: don't forget to put the vnode onto the syncer's work que ue even in the case of PGO_LOCKED.
sys/uvm/uvm_bio.c: revision 1.40 sys/uvm/uvm_pager.h: revision 1.29 sys/miscfs/genfs/genfs_vnops.c: revision 1.100 via patch sys/ufs/ufs/ufs_inode.c: revision 1.50 - introduce PGO_NOBLOCKALLOC and use it for ubc mapping to prevent unnecessary block allocations in the case that page size > block size. - ufs_balloc_range: use VM_PROT_WRITE+PGO_NOBLOCKALLOC rather than VM_PROT_READ.
sys/uvm/uvm_fault.c: revision 1.96 sys/miscfs/genfs/genfs_vnops.c: revision 1.101 via patch sys/uvm/uvm_object.h: revision 1.19 sys/miscfs/genfs/genfs_node.h: revision 1.7 ensure that vnodes with dirty pages are always on syncer's queue. - genfs_putpages: wait for i/o completion of PG_RELEASED/PG_PAGEOUT pages by setting "wasclean" false when encountering them. suggested by Stephan Uphoff in PR/24596 (1). - genfs_putpages: write protect pages when cleaning out, if we're going to take the vnode off the syncer's queue. uvm_fault: don't write-map pages unless its vnode is already on the syncer's queue. fix PR/24596 (3) but in the different way from the suggested fix. (to keep our current behaviour, ie. not to require explicit msync. discussed on tech-kern@.) - genfs_putpages: don't mistakenly take a vnode off the queue by introducing a generation number in genfs_node. genfs_getpages: increment the generation number. suggested by Stephan Uphoff in PR/24596 (2). - add some assertions.
sys/miscfs/genfs/genfs_vnops.c: revision 1.102 via patch genfs_putpages: don't bother to clean the vnode unless VONWORKLST.
sys/ufs/ffs/ffs_vnops.c: revision 1.71 ffs_full_fsync: because VBLK/VCHR can be mmap'ed, do VOP_PUTPAGES for them as well.
sys/uvm/uvm_fault.c: revision 1.97 uvm_fault: check a correct object in the case of layered filesystems. fix PR/30811 from Jukka Salmi.
sys/uvm/uvm_object.h: revision 1.20 sys/ufs/ffs/ffs_vfsops.c: revision 1.167 sys/uvm/uvm_bio.c: revision 1.41 sys/ufs/ufs/ufs_vnops.c: revision 1.129 sys/uvm/uvm_mmap.c: revision 1.92 sys/uvm/uvm_fault.c: revision 1.98 sys/kern/vfs_subr.c: revision 1.252 sys/fs/msdosfs/denode.h: revision 1.5 sys/miscfs/genfs/genfs_vnops.c: revision 1.103 via patch sys/fs/msdosfs/msdosfs_denode.c: revision 1.9 sys/sys/vnode.h: revision 1.141 sys/ufs/ufs/ufs_inode.c: revision 1.51 sys/ufs/ufs/ufs_extern.h: revision 1.45 via patch sys/miscfs/genfs/genfs_node.h: revision 1.8 sys/ufs/lfs/lfs_vfsops.c: revision 1.184 sys/uvm/uvm_pager.h: revision 1.30 sys/ufs/ext2fs/ext2fs_vfsops.c: revision 1.87 update file timestamps for nfsd loaned-read and mmap. PR/25279. discussed on tech-kern@.
sys/miscfs/genfs/genfs_vnops.c: revision 1.104 via patch don't write-protect wired pages. pointed by Chuck Silvers. for now, leave a vnode on the syncer's queue, as suggested by him.
sys/ufs/ffs/ffs_vnops.c: revision 1.72 revert VCHR part of ffs_vnops.c 1.71. as VCHR uses the device pager, no point to call VOP_PUTPAGES here. pointed by Chuck Silvers.
|
1.6.2.3 | 26-Feb-2007 |
yamt | sync with head.
|
1.6.2.2 | 30-Dec-2006 |
yamt | sync with head.
|
1.6.2.1 | 21-Jun-2006 |
yamt | sync with head.
|
1.9.12.2 | 24-May-2006 |
tron | Merge 2006-05-24 NetBSD-current into the "peter-altq" branch.
|
1.9.12.1 | 31-Mar-2006 |
tron | Merge 2006-03-31 NetBSD-current into the "peter-altq" branch.
|
1.9.10.3 | 20-Apr-2006 |
christos | kauth_cred_t -> struct kauth_cred;
|
1.9.10.2 | 19-Apr-2006 |
elad | sync with head.
|
1.9.10.1 | 08-Mar-2006 |
elad | Adapt to kernel authorization KPI.
|
1.9.8.2 | 24-May-2006 |
yamt | sync with head.
|
1.9.8.1 | 01-Apr-2006 |
yamt | sync with head.
|
1.9.6.2 | 01-Jun-2006 |
kardel | Sync with head.
|
1.9.6.1 | 22-Apr-2006 |
simonb | Sync with head.
|
1.9.4.1 | 09-Sep-2006 |
rpaulo | sync with head
|
1.11.10.1 | 22-Oct-2006 |
yamt | sync with head
|
1.11.8.1 | 18-Nov-2006 |
ad | Sync with head.
|
1.15.2.1 | 27-Feb-2007 |
yamt | - sync with head. - move sched_changepri back to kern_synch.c as it doesn't know PPQ anymore.
|
1.16.44.1 | 23-Jun-2008 |
wrstuden | Sync w/ -current. 34 merge conflicts to follow.
|
1.16.42.3 | 09-Oct-2010 |
yamt | sync with head
|
1.16.42.2 | 11-Mar-2010 |
yamt | sync with head
|
1.16.42.1 | 16-May-2008 |
yamt | sync with head.
|
1.16.40.1 | 18-May-2008 |
yamt | sync with head.
|
1.16.38.1 | 02-Jun-2008 |
mjf | Sync with HEAD.
|
1.17.16.1 | 20-May-2011 |
matt | bring matt-nb5-mips64 up to date with netbsd-5-1-RELEASE (except compat).
|
1.17.14.1 | 07-Sep-2010 |
bouyer | Pull up following revision(s) (requested by chs in ticket #1448): sys/uvm/uvm_pager.h: revision 1.39 via patch sys/miscfs/genfs/genfs_vnops.c: revision 1.183 via patch sys/ufs/ufs/ufs_inode.c: revision 1.83 via patch sys/miscfs/genfs/genfs_io.c: revision 1.40 via patch sys/miscfs/genfs/genfs_node.h: revision 1.20 via patch replace the earlier workaround for PR 40389 with a better fix. the earlier change caused data corruption by freeing pages without invaliding their mappings. instead of the trylock/retry, just take the genfs-node lock before calling VOP_GETPAGES() and pass a new flag to tell it that we're already holding this lock.
|
1.17.8.1 | 07-Sep-2010 |
bouyer | Pull up following revision(s) (requested by chs in ticket #1448): sys/uvm/uvm_pager.h: revision 1.39 via patch sys/miscfs/genfs/genfs_vnops.c: revision 1.183 via patch sys/ufs/ufs/ufs_inode.c: revision 1.83 via patch sys/miscfs/genfs/genfs_io.c: revision 1.40 via patch sys/miscfs/genfs/genfs_node.h: revision 1.20 via patch replace the earlier workaround for PR 40389 with a better fix. the earlier change caused data corruption by freeing pages without invaliding their mappings. instead of the trylock/retry, just take the genfs-node lock before calling VOP_GETPAGES() and pass a new flag to tell it that we're already holding this lock.
|
1.19.4.1 | 05-Mar-2011 |
rmind | sync with head
|
1.19.2.1 | 22-Oct-2010 |
uebayasi | Sync with HEAD (-D20101022).
|
1.20.18.1 | 23-Jun-2013 |
tls | resync from head
|
1.20.8.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.20.8.1 | 20-Nov-2011 |
yamt | - simplify code - comments
|
1.21.32.1 | 25-Jun-2018 |
pgoyette | Sync with HEAD
|
1.22.8.1 | 17-Jan-2020 |
ad | Sync with head.
|
1.22.2.1 | 08-Apr-2020 |
martin | Merge changes from current as of 20200406
|
1.7 | 20-Oct-2021 |
thorpej | Don't use genfs_rename_knote() in the "rename foo over hard-link to itself" case, which simply results in removing the "from" name; there are assertions in genfs_rename_knote() that are too strong for that case.
PR kern/56460
|
1.6 | 20-Oct-2021 |
thorpej | 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.
|
1.5 | 05-Sep-2020 |
riastradh | genfs_rename: Fix deadlocks in cross-directory cyclic rename.
Reproducer:
A: for (;;) { mkdir("c", 0600); mkdir("c/d", 0600); mkdir("c/d/e", 0600); rmdir("c/d/e"); rmdir("c/d"); } B: for (;;) { mkdir("c", 0600); mkdir("c/d", 0600); mkdir("c/d/e", 0600); rename("c", "c/d/e"); } C: for (;;) { mkdir("c", 0600); mkdir("c/d", 0600); mkdir("c/d/e", 0600); rename("c/d/e", "c"); }
Deadlock:
- A holds c and wants to lock d; and either - B holds . and d and wants to lock c, or - C holds . and d and wants to lock c.
The problem with these is that genfs_rename_enter_separate in B or C tried lock order .->d->c->e (in A/B, fdvp->tdvp->fvp->tvp; in A/C, tdvp->fdvp->tvp->fvp) which violates the ancestor->descendant order .->c->d->e.
The resolution is to change B to do fdvp->fvp->tdvp->tvp and C to do tdvp->tvp->fdvp->fvp. But there's an edge case: tvp and fvp might be the same (hard links), and we can't detect that until after we've looked them both up -- and in some file systems (I'm looking at you, ufs), there is no mere lookup operation, only lookup-and-lock, so we can't even hold the lock on one of tvp or fvp when we look up the other one if there's a chance they might be the same.
Fortunately the cases (a) tvp = fvp (b) tvp or fvp is a directory are mutually exclusive as long as directories cannot be hard-linked. In case (a) we can just defer locking {tvp, fvp} until the end, because it can't possibly have {fdvp or fvp, tdvp or tvp} as descendants. In case (b) we can just lock them in the order fdvp->fvp->tdvp->tvp or tdvp->tvp->fdvp->fvp if the first one of {fvp, tvp} is a directory, because it can't possibly coincide with the second one of {fvp, tvp}.
With this change, we can now prove that the locking order is consistent with the ancestor->descendant partial ordering. Where two nodes are incommensurate under that partial ordering, they are only ever locked by rename and there is only ever one rename at a time.
Proof:
- For same-directory renames, genfs_rename_enter_common locks the directory first and then the children. The order directory->child[i] is consistent with ancestor->descendant and child[0]/child[1] are incommensurate.
- For cross-directory renames:
. While a rename is in progress and the fs-wide rename lock is held, directories can be created or removed but not changed, so the outcome of gro_genealogy -- which, given fdvp and tdvp, returns the node N relating fdvp/N/.../tdvp or null if there is none -- can only transition from finding N to not finding N, if one of the directories is removed while any of the vnodes are unlocked. Merely creating directories cannot change the ancestry of tdvp, and concurrent renames are not possible.
Thus, if a gro_genealogy determined the operation to have the form fdvp/N/.../tdvp, then it might cease to have that form, but only because tdvp was removed which will harmlessly cause the rename to fail later on. Similarly, if gro_genealogy determined the operation _not_ to have the form fdvp/N/.../tdvp then it can't begin to have that form until after the rename has completed.
The lock order is,
=> for fdvp/.../tdvp: 1. lock fdvp 2. lookup(/lock/unlock) fvp (consistent with fdvp->fvp) 3. lock fvp if a directory (consistent with fdvp->fvp) 4. lock tdvp (consistent with fdvp->tdvp and possibly fvp->tdvp) 5. lookup(/lock/unlock) tvp (consistent with tdvp->tvp) 6. lock fvp if a nondirectory (fvp->t* or fvp->fdvp is impossible) 7. lock tvp if not fvp (tvp->f* is impossible unless tvp=fvp)
=> for incommensurate fdvp & tdvp, or for tdvp/.../fdvp: 1. lock tdvp 2. lookup(/lock/unlock) tvp (consistent with tdvp->tvp) 3. lock tvp if a directory (consistent with tdvp->tvp) 4. lock fdvp (either incommensurate with tdvp and/or tvp, or consistent with tdvp(->tvp)->fdvp) 5. lookup(/lock/unlock) fvp (consistent with fdvp->fvp) 6. lock tvp if a nondirectory (tvp->f* or tvp->tdvp is impossible) 7. lock fvp if not tvp (fvp->t* is impossible unless fvp=tvp)
Deadlocks found by hannken@; resolution worked out with dholland@.
XXX I think we could improve concurrency somewhat -- with a likely big win for applications like tar and rsync that create many files with temporary names and then rename them to the permanent one in the same directory -- by making vfs_renamelock a reader/writer lock: any number of same-directory renames, or exactly one cross-directory rename, at any one time.
|
1.4 | 16-May-2020 |
christos | Add ACL support for FFS. From FreeBSD.
|
1.3 | 30-Mar-2017 |
hannken | branches: 1.3.18; Remove now redundant calls to fstrans_start()/fstrans_done().
|
1.2 | 06-Feb-2014 |
hannken | branches: 1.2.6; 1.2.10; 1.2.14; Move fstrans_start()/fstrans_done() into genfs_insane_rename() to protect the complete rename operation like we do for all other vnode operations.
|
1.1 | 08-May-2012 |
riastradh | branches: 1.1.2; 1.1.4; 1.1.6; 1.1.8; 1.1.10; Implement a genfs_rename abstraction.
First major step in incrementally adapting all the file systems to a saner rename VOP protocol.
|
1.1.10.1 | 18-May-2014 |
rmind | sync with head
|
1.1.8.2 | 03-Dec-2017 |
jdolecek | update from HEAD
|
1.1.8.1 | 20-Aug-2014 |
tls | Rebase to HEAD as of a few days ago.
|
1.1.6.2 | 02-Jul-2012 |
jdc | Pull up revisions: src/sys/conf/files revision 1.1050 src/sys/miscfs/genfs/genfs.h revision 1.30 via patch src/sys/miscfs/genfs/genfs_rename.c revision 1.1 via patch src/sys/rump/librump/rumpvfs/Makefile.rumpvfs revision 1.33 (requested by riastradh in ticket #286).
Implement a genfs_rename abstraction.
First major step in incrementally adapting all the file systems to a saner rename VOP protocol.
|
1.1.6.1 | 08-May-2012 |
jdc | file genfs_rename.c was added on branch netbsd-6 on 2012-07-02 18:01:17 +0000
|
1.1.4.2 | 02-Jun-2012 |
mrg | sync to latest -current.
|
1.1.4.1 | 08-May-2012 |
mrg | file genfs_rename.c was added on branch jmcneill-usbmp on 2012-06-02 11:09:36 +0000
|
1.1.2.3 | 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.1.2.2 | 23-May-2012 |
yamt | sync with head.
|
1.1.2.1 | 08-May-2012 |
yamt | file genfs_rename.c was added on branch yamt-pagecache on 2012-05-23 10:08:14 +0000
|
1.2.14.1 | 21-Apr-2017 |
bouyer | Sync with HEAD
|
1.2.10.1 | 26-Apr-2017 |
pgoyette | Sync with HEAD
|
1.2.6.1 | 28-Aug-2017 |
skrll | Sync with HEAD
|
1.3.18.1 | 13-Sep-2020 |
martin | Pull up following revision(s) (requested by riastradh in ticket #1083):
sys/miscfs/genfs/genfs_rename.c: revision 1.5 tests/fs/vfs/t_renamerace.c: revision 1.37 tests/fs/vfs/t_renamerace.c: revision 1.38
tests/fs/vfs/t_renamerace: Test a screw case hannken@ found.
genfs_rename: Fix deadlocks in cross-directory cyclic rename.
Reproducer: A: for (;;) { mkdir("c", 0600); mkdir("c/d", 0600); mkdir("c/d/e", 0600); rmdir("c/d/e"); rmdir("c/d"); } B: for (;;) { mkdir("c", 0600); mkdir("c/d", 0600); mkdir("c/d/e", 0600); rename("c", "c/d/e"); } C: for (;;) { mkdir("c", 0600); mkdir("c/d", 0600); mkdir("c/d/e", 0600); rename("c/d/e", "c"); }
Deadlock: - A holds c and wants to lock d; and either - B holds . and d and wants to lock c, or - C holds . and d and wants to lock c.
The problem with these is that genfs_rename_enter_separate in B or C tried lock order .->d->c->e (in A/B, fdvp->tdvp->fvp->tvp; in A/C, tdvp->fdvp->tvp->fvp) which violates the ancestor->descendant order .->c->d->e.
The resolution is to change B to do fdvp->fvp->tdvp->tvp and C to do tdvp->tvp->fdvp->fvp. But there's an edge case: tvp and fvp might be the same (hard links), and we can't detect that until after we've looked them both up -- and in some file systems (I'm looking at you, ufs), there is no mere lookup operation, only lookup-and-lock, so we can't even hold the lock on one of tvp or fvp when we look up the other one if there's a chance they might be the same.
Fortunately the cases (a) tvp = fvp (b) tvp or fvp is a directory are mutually exclusive as long as directories cannot be hard-linked.
In case (a) we can just defer locking {tvp, fvp} until the end, because it can't possibly have {fdvp or fvp, tdvp or tvp} as descendants. In case (b) we can just lock them in the order fdvp->fvp->tdvp->tvp or tdvp->tvp->fdvp->fvp if the first one of {fvp, tvp} is a directory, because it can't possibly coincide with the second one of {fvp, tvp}.
With this change, we can now prove that the locking order is consistent with the ancestor->descendant partial ordering. Where two nodes are incommensurate under that partial ordering, they are only ever locked by rename and there is only ever one rename at a time.
Proof: - For same-directory renames, genfs_rename_enter_common locks the directory first and then the children. The order directory->child[i] is consistent with ancestor->descendant and child[0]/child[1] are incommensurate. - For cross-directory renames: . While a rename is in progress and the fs-wide rename lock is held, directories can be created or removed but not changed, so the outcome of gro_genealogy -- which, given fdvp and tdvp, returns the node N relating fdvp/N/.../tdvp or null if there is none -- can only transition from finding N to not finding N, if one of the directories is removed while any of the vnodes are unlocked. Merely creating directories cannot change the ancestry of tdvp, and concurrent renames are not possible. Thus, if a gro_genealogy determined the operation to have the form fdvp/N/.../tdvp, then it might cease to have that form, but only because tdvp was removed which will harmlessly cause the rename to fail later on. Similarly, if gro_genealogy determined the operation _not_ to have the form fdvp/N/.../tdvp then it can't begin to have that form until after the rename has completed. The lock order is, => for fdvp/.../tdvp: 1. lock fdvp 2. lookup(/lock/unlock) fvp (consistent with fdvp->fvp) 3. lock fvp if a directory (consistent with fdvp->fvp) 4. lock tdvp (consistent with fdvp->tdvp and possibly fvp->tdvp) 5. lookup(/lock/unlock) tvp (consistent with tdvp->tvp) 6. lock fvp if a nondirectory (fvp->t* or fvp->fdvp is impossible) 7. lock tvp if not fvp (tvp->f* is impossible unless tvp=fvp) => for incommensurate fdvp & tdvp, or for tdvp/.../fdvp: 1. lock tdvp 2. lookup(/lock/unlock) tvp (consistent with tdvp->tvp) 3. lock tvp if a directory (consistent with tdvp->tvp) 4. lock fdvp (either incommensurate with tdvp and/or tvp, or consistent with tdvp(->tvp)->fdvp) 5. lookup(/lock/unlock) fvp (consistent with fdvp->fvp) 6. lock tvp if a nondirectory (tvp->f* or tvp->tdvp is impossible) 7. lock fvp if not tvp (fvp->t* is impossible unless fvp=tvp)
Deadlocks found by hannken@; resolution worked out with dholland@.
XXX I think we could improve concurrency somewhat -- with a likely big win for applications like tar and rsync that create many files with temporary names and then rename them to the permanent one in the same directory -- by making vfs_renamelock a reader/writer lock: any number of same-directory renames, or exactly one cross-directory rename, at any one time.
|
1.11 | 08-Jul-2022 |
hannken | Handle IMNT_GONE on the file system we want suspended not its lowest mount we really suspend.
|
1.10 | 22-Dec-2019 |
ad | Make mntvnode_lock per-mount, and address false sharing of struct mount.
|
1.9 | 20-Feb-2019 |
hannken | Attach "mnt_transinfo" to "dead_rootmount" so every mount has a valid "mnt_transinfo" and remove now unneeded flag IMNT_HAS_TRANS.
Run fstrans_start()/fstrans_done() on dead_rootmount if FSTRANS_DEAD_ENABLED. Should become the default for DIAGNOSTIC in the future.
|
1.8 | 05-Oct-2018 |
hannken | Bring back three state file system suspension:
NORMAL -> SUSPENDING -> SUSPENDED
and add operation fstrans_start_lazy() that only blocks while SUSPENDED.
Change vndthread() support operation handle_with_rdwr() to bracket its file system operations by fstrans_start_lazy() and fstrans_done().
PR kern/53624 (dom0 freeze on domU exit)
|
1.7 | 24-May-2017 |
hannken | branches: 1.7.2; 1.7.8; 1.7.10; With dounmount() working on a suspended file system remove no longer needed fields mnt_busynest and mnt_unmounting from struct mount.
Welcome to 7.99.73
|
1.6 | 07-May-2017 |
hannken | Return ENOENT if trying to suspend an unmounted file system.
|
1.5 | 30-Mar-2017 |
hannken | branches: 1.5.4; Change last users of FSTRANS_LAZY to FSTRANS_SHARED and change genfs_suspendctl() to move from FSTRANS_NORMAL to FSTRANS_SUSPENDED and vice versa.
|
1.4 | 17-Feb-2017 |
hannken | Add generic genfs_suspendctl() and use it for all file systems. Layered file systems need work.
|
1.3 | 30-Nov-2009 |
pooka | branches: 1.3.22; 1.3.40; 1.3.44; 1.3.48; Introduce genfs_statvfs() as pretty much a no-info statvfs and convert several pseudo file systems to use it.
|
1.2 | 28-Apr-2008 |
martin | Remove clause 3 and 4 from TNF licenses
|
1.1 | 28-Jan-2008 |
dholland | branches: 1.1.2; 1.1.4; 1.1.10; 1.1.12; 1.1.14; 1.1.16; Part of the rename patches *doh*
|
1.1.16.2 | 11-Mar-2010 |
yamt | sync with head
|
1.1.16.1 | 16-May-2008 |
yamt | sync with head.
|
1.1.14.1 | 18-May-2008 |
yamt | sync with head.
|
1.1.12.2 | 23-Mar-2008 |
matt | sync with HEAD
|
1.1.12.1 | 28-Jan-2008 |
matt | file genfs_vfsops.c was added on branch matt-armv6 on 2008-03-23 02:05:03 +0000
|
1.1.10.1 | 02-Jun-2008 |
mjf | Sync with HEAD.
|
1.1.4.2 | 18-Feb-2008 |
mjf | Sync with HEAD.
|
1.1.4.1 | 28-Jan-2008 |
mjf | file genfs_vfsops.c was added on branch mjf-devfs on 2008-02-18 21:07:00 +0000
|
1.1.2.2 | 04-Feb-2008 |
yamt | sync with head.
|
1.1.2.1 | 28-Jan-2008 |
yamt | file genfs_vfsops.c was added on branch yamt-lazymbuf on 2008-02-04 09:24:29 +0000
|
1.3.48.1 | 21-Apr-2017 |
bouyer | Sync with HEAD
|
1.3.44.2 | 26-Apr-2017 |
pgoyette | Sync with HEAD
|
1.3.44.1 | 20-Mar-2017 |
pgoyette | Sync with HEAD
|
1.3.40.1 | 28-Aug-2017 |
skrll | Sync with HEAD
|
1.3.22.1 | 03-Dec-2017 |
jdolecek | update from HEAD
|
1.5.4.1 | 11-May-2017 |
pgoyette | Sync with HEAD
|
1.7.10.2 | 08-Apr-2020 |
martin | Merge changes from current as of 20200406
|
1.7.10.1 | 10-Jun-2019 |
christos | Sync with HEAD
|
1.7.8.1 | 20-Oct-2018 |
pgoyette | Sync with head
|
1.7.2.1 | 09-Oct-2018 |
martin | Pull up following revision(s) (requested by hannken in ticket #1052):
sys/kern/vfs_trans.c: revision 1.51 distrib/sets/lists/comp/mi: revision 1.2233 share/man/man9/fstrans.9: revision 1.27 share/man/man9/Makefile: revision 1.431 sys/sys/fstrans.h: revision 1.12 sys/rump/librump/rumpkern/emul.c: revision 1.187 sys/dev/vnd.c: revision 1.266 sys/miscfs/genfs/genfs_vfsops.c: revision 1.8
Bring back three state file system suspension:
NORMAL -> SUSPENDING -> SUSPENDED
and add operation fstrans_start_lazy() that only blocks while SUSPENDED.
Change vndthread() support operation handle_with_rdwr() to bracket its file system operations by fstrans_start_lazy() and fstrans_done().
PR kern/53624 (dom0 freeze on domU exit)
|
1.220 | 03-Mar-2023 |
hannken | Fix genfs_can_chtimes() to also handle the condition:
If the time pointer is null, then write permission on the file is also sufficient.
From FreeBSD.
Should fix PR kern/57246 "NFS group permissions regression"
|
1.219 | 27-Mar-2022 |
christos | branches: 1.219.4; dedup the eofs link/symlink methods
|
1.218 | 27-Mar-2022 |
christos | Expose groupmember as kauth_cred_groupmember and use it.
|
1.217 | 19-Mar-2022 |
hannken | Remove now unused genfs_nolock(), genfs_nounlock() and genfs_noislocked().
|
1.216 | 20-Oct-2021 |
thorpej | 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.
|
1.215 | 11-Oct-2021 |
thorpej | Mark the EVFILT_VNODE filters MP-safe.
|
1.214 | 11-Oct-2021 |
thorpej | Setting EV_EOF requires modifying kn->kn_flags. However, that relies on holding the kq_lock of that note's kq. Rather than exposing this directly, add new knote_set_eof() and knote_clear_eof() functions that handle the necessary locking and don't leak as many implementation details to modules.
NetBSD 9.99.91
|
1.213 | 10-Oct-2021 |
thorpej | Must hold kn->kn_kq->kq_lock to modify kn->kn_flags.
|
1.212 | 26-Sep-2021 |
thorpej | Change the kqueue filterops::f_isfd field to filterops::f_flags, and define a flag FILTEROP_ISFD that has the meaning of the prior f_isfd. Field and flag name aligned with OpenBSD.
This does not constitute a functional or ABI change, as the field location and size, and the value placed in that field, are the same as the previous code, but we're bumping __NetBSD_Version__ so 3rd-party module source code can adapt, as needed.
NetBSD 9.99.89
|
1.211 | 29-Jun-2021 |
dholland | - 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.
|
1.210 | 05-Sep-2020 |
riastradh | branches: 1.210.6; 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@
|
1.209 | 07-Aug-2020 |
christos | accmode should be accmode_t
|
1.208 | 27-Jun-2020 |
christos | Introduce genfs_pathconf() and use it for the default case in all filesystems.
|
1.207 | 20-May-2020 |
christos | Fix EPERM vs EACCES on chtimes (thanks @hannken)
|
1.206 | 18-May-2020 |
christos | remove debugging, it is just clutter.
|
1.205 | 18-May-2020 |
christos | Fix EPERM vs EACCES return.
|
1.204 | 16-May-2020 |
christos | Add ACL support for FFS. From FreeBSD.
|
1.203 | 25-Apr-2020 |
christos | Allow root to access and modify system space extended attributes. XXX: this routine should not be using the string, but the attribute namespace. I have fixed this in the ACL code.
|
1.202 | 23-Feb-2020 |
ad | Merge from ad-namecache:
- Have a stab at clustering the members of vnode_t and vnode_impl_t in a more cache-conscious way. With that done, go back to adjusting v_usecount with atomics and keep vi_lock directly in vnode_impl_t (saves KVA).
- Allow VOP_LOCK(LK_NONE) for the benefit of VFS_VGET() and VFS_ROOT(). Make sure LK_UPGRADE always comes with LK_NOWAIT.
- Make cwdinfo use mostly lockless.
|
1.201 | 23-Feb-2020 |
ad | 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.
|
1.200 | 01-Dec-2019 |
ad | branches: 1.200.2; Minor vnode locking changes:
- Stop using atomics to maniupulate v_usecount. It was a mistake to begin with. It doesn't work as intended unless the XLOCK bit is incorporated in v_usecount and we don't have that any more. When I introduced this 10+ years ago it was to reduce pressure on v_interlock but it doesn't do that, it just makes stuff disappear from lockstat output and introduces problems elsewhere. We could do atomic usecounts on vnodes but there has to be a well thought out scheme.
- Resurrect LK_UPGRADE/LK_DOWNGRADE which will be needed to work effectively when there is increased use of shared locks on vnodes.
- Allocate the vnode lock using rw_obj_alloc() to reduce false sharing of struct vnode.
- Put all of the LRU lists into a single cache line, and do not requeue a vnode if it's already on the correct list and was requeued recently (less than a second ago).
Kernel build before and after:
119.63s real 1453.16s user 2742.57s system 115.29s real 1401.52s user 2690.94s system
|
1.199 | 25-Oct-2017 |
maya | branches: 1.199.4; Use C99 initializer for filterops
Mostly done with spatch with touchups for indentation
@@ expression a; identifier b,c,d; identifier p; @@ const struct filterops p = - { a, b, c, d + { + .f_isfd = a, + .f_attach = b, + .f_detach = c, + .f_event = d, };
|
1.198 | 01-Jul-2017 |
christos | Provide EVFILT_WRITE; this is what FreeBSD does and go wants it. Makes go unit tests pass.
|
1.197 | 04-Jun-2017 |
hannken | Locking a layer vnode using the regular bypass routine is no longer racy. Undo the change from 2017-03-30 11:16:52, commitid eurqbzuGxGRlryLz and make vi_lock a krwlock_t again.
|
1.196 | 04-Jun-2017 |
hannken | Now that FSTRANS is part of VOP_*LOCK() remove FSTRANS and vdead_check() from genfs_.*lock() and assert the vnode state once the vnode is locked.
|
1.195 | 11-Apr-2017 |
riastradh | branches: 1.195.4; Eliminate now-unused WILLUNLOCK vop flag.
|
1.194 | 30-Mar-2017 |
hannken | Locking a layer vnode is racy as it may become reclaimed before calling the operation on the lower vnode.
Replace vi_lock with a rw_obj and change layered file systems to share the lock with the lower vnode.
Layered file systems now use genfs_lock()/_unlock/_islocked().
Welcome to 7.99.67
|
1.193 | 11-Jan-2017 |
hannken | branches: 1.193.2; Move vnode member v_lock as vi_lock to vnode_impl.h.
|
1.192 | 24-Mar-2014 |
hannken | branches: 1.192.4; 1.192.6; 1.192.8; 1.192.10; 1.192.14; - Make VI_XLOCK, VI_CLEAN and VI_LOCKSHARE private to kern/vfs_*.c. - Make vwait() static. - Add vdead_check() to check a vnode for being or becoming dead.
Discussed on tech-kern.
Welcome to 6.99.38
|
1.191 | 12-Mar-2014 |
hannken | Restructure genfs_deadlock() and genfs_lock() to always lock before testing for dead node. Use ISSET() to test flags, add assertions.
Save the mount for fstrans_done() before genfs_unlock() unlocks the node.
|
1.190 | 27-Feb-2014 |
hannken | The current implementation of vn_lock() is racy. Modification of the vnode operations vector for active vnodes is unsafe because it is not known whether deadfs or the original file system will be called.
- Pass down LK_RETRY to the lock operation (hint for deadfs only).
- Change deadfs lock operation to return ENOENT if LK_RETRY is unset.
- Change all other lock operations to check for dead vnode once the vnode is locked and unlock and return ENOENT in this case.
With these changes in place vnode lock operations will never succeed after vclean() has marked the vnode as VI_XLOCK and before vclean() has changed the operations vector.
Adresses PR kern/37706 (Forced unmount of file systems is unsafe)
Discussed on tech-kern.
Welcome to 6.99.33
|
1.189 | 30-Mar-2012 |
njoly | branches: 1.189.2; 1.189.4; uid mismatch for file flags changes is expected to fail with EPERM not EACCES.
|
1.188 | 13-Mar-2012 |
elad | 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.187 | 12-Jun-2011 |
rmind | branches: 1.187.2; 1.187.6; 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.186 | 27-Dec-2010 |
hannken | branches: 1.186.6; Extend the range of fstrans transactions to a sequence of vnode operations on a locked vnode. This leaves a suspended file system and therefore a snapshot with either all or no operations of such a sequence done.
|
1.185 | 30-Nov-2010 |
dholland | Abolish the SAVENAME and HASBUF flags. There is now always a buffer, so the path in a struct componentname is now always valid during VOP calls.
|
1.184 | 30-Nov-2010 |
dholland | Abolish struct componentname's cn_pnbuf. Use the path buffer in the pathbuf object passed to namei as work space instead. (For now a pnbuf pointer appears in struct nameidata, to support certain unclean things that haven't been fixed yet, but it will be going away in the future.)
This removes the need for the SAVENAME and HASBUF namei flags.
|
1.183 | 01-Sep-2010 |
chs | replace the earlier workaround for PR 40389 with a better fix. the earlier change caused data corruption by freeing pages without invaliding their mappings. instead of the trylock/retry, just take the genfs-node lock before calling VOP_GETPAGES() and pass a new flag to tell it that we're already holding this lock.
|
1.182 | 01-Jul-2010 |
hannken | Remove vlockmgr(). Generic vnode lock operations now use a rwlock located in the vnode. All LK_* flags move from sys/lock.h to sys/vnode.h. Calls to vlockmgr() in file systems get replaced with VOP_LOCK() or VOP_UNLOCK().
Welcome to 5.99.34.
Discussed on tech-kern.
|
1.181 | 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.180 | 24-Jun-2010 |
hannken | genfs_nolock(): LK_INTERLOCK flag no longer possible.
|
1.179 | 24-Jun-2010 |
hannken | Clean up vnode lock operations:
- VOP_LOCK(vp, flags): Limit the set of allowed flags to LK_EXCLUSIVE, LK_SHARED and LK_NOWAIT. LK_INTERLOCK is no longer allowed as it makes no sense here.
- VOP_ISLOCKED(vp): Remove the for some time unused return value LK_EXCLOTHER. Mark this operation as "diagnostic only". Making a lock decision based on this operation is no longer allowed.
Discussed on tech-kern.
|
1.178 | 06-Jun-2010 |
hannken | Change layered file systems to always pass the locking VOP's down to the leaf file system. Remove now unused member v_vnlock from struct vnode. Welcome to 5.99.30
Discussed on tech-kern.
|
1.177 | 08-Apr-2010 |
pooka | Call VOP_ABORTOP in genfs_eopnotsupp. This prevents file system authors from having to get down on their knees and pray they won't get POGA'd(*) again.
This plugs componentname leaks in at least smbfs and buggy puffs servers (buggy servers shouldn't be able to leak kernel memory).
*) principle of greatest astonishment
|
1.176 | 27-Jan-2010 |
uebayasi | branches: 1.176.2; 1.176.4; Don't forget to tell the result of rw_tryenter().
|
1.175 | 27-Jan-2010 |
uebayasi | Add genfs_node_rdtrylock().
|
1.174 | 20-Nov-2009 |
roy | Allow chown if caller is in the new group.
|
1.173 | 20-Nov-2009 |
pooka | Disallow chown for files the caller does not own.
|
1.172 | 23-Jun-2009 |
elad | Move the implementation of vaccess() to genfs_can_access(), in line with the other routines of the same spirit.
Adjust file-system code to use it.
Keep vaccess() for KPI compatibility and to keep element of least surprise. A "diagnostic" message warning that vaccess() is deprecated will be printed when it's used (obviously, only in DIAGNOSTIC kernels).
No objections on tech-kern@:
http://mail-index.netbsd.org/tech-kern/2009/06/21/msg005310.html
|
1.171 | 07-May-2009 |
elad | Extract the open-coded authorization logic for chtimes() from various file-systems and put it in a single function, genfs_can_chtimes().
This also makes UDF follow the same policy as all other file-systems.
Mailing list reference:
http://mail-index.netbsd.org/tech-kern/2009/04/27/msg004951.html
|
1.170 | 25-Apr-2009 |
elad | Add genfs_can_mount() and use it to prevent some more code duplication of the security checks when mounting a device (VOP_ACCESS() + kauth(9) call)).
Proposed with no objections on tech-kern@:
http://mail-index.netbsd.org/tech-kern/2009/04/20/msg004859.html
The vnode is always expected to be locked, so no locking is done outside the file-system code.
|
1.169 | 22-Apr-2009 |
elad | Per discussion on tech-kern@:
- Replace use of label/goto with returns
- Rename, change prototype of, and move functions from vfs_subr.c to genfs_vnops.c
|
1.168 | 18-Apr-2009 |
pooka | Move genfs_null_putpages() from genfs_io.c to genfs_vnops.c -- it does not really do i/o.
|
1.167 | 28-Apr-2008 |
martin | branches: 1.167.8; 1.167.10; 1.167.14; 1.167.16; 1.167.18; Remove clause 3 and 4 from TNF licenses
|
1.166 | 19-Apr-2008 |
hannken | branches: 1.166.2; Remove stale include <sys/fstrans.h>.
|
1.165 | 21-Mar-2008 |
ad | branches: 1.165.2; Catch up with descriptor handling changes. See kern_descrip.c revision 1.173 for details.
|
1.164 | 05-Feb-2008 |
ad | branches: 1.164.6; Lock v_knlist with the vnode interlock. PR kern/37881.
|
1.163 | 30-Jan-2008 |
ad | Replace struct lock on vnodes with a simpler lock object built on krwlock_t. This is a step towards removing lockmgr and simplifying vnode locking. Discussed on tech-kern.
|
1.162 | 25-Jan-2008 |
riz | Since VOP_LEASE is gone, remove genfs_lease_check() too. Now my kernel builds again. :)
|
1.161 | 17-Jan-2008 |
ad | Fix v_freelisthd assertion failure during call to vdevdone(). No calling VOPs without a vnode reference!
|
1.160 | 02-Jan-2008 |
ad | Merge vmlocking2 to head.
|
1.159 | 05-Dec-2007 |
pooka | branches: 1.159.4; Do not "return 1" from kqfilter for errors. That value is passed directly to the userland caller and results in a mysterious EPERM. Instead, return EINVAL or something else sensible depending on the case.
|
1.158 | 17-Oct-2007 |
pooka | branches: 1.158.4; 1.158.6; Split I/O-related routines (getpages, putpages, etc.) which are heavily tied to uvm out of genfs_vnops into genfs_io.c
|
1.157 | 10-Oct-2007 |
ad | 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.156 | 29-Jul-2007 |
ad | branches: 1.156.4; 1.156.6; 1.156.8; 1.156.10; It's not a good idea for device drivers to modify b_flags, as they don't need to understand the locking around that field. Instead of setting B_ERROR, set b_error instead. b_error is 'owned' by whoever completes the I/O request.
|
1.155 | 09-Jul-2007 |
ad | branches: 1.155.2; Merge some of the less invasive changes from the vmlocking branch:
- kthread, callout, devsw API changes - select()/poll() improvements - miscellaneous MT safety improvements
|
1.154 | 05-Jun-2007 |
yamt | improve post-ubc file overwrite performance in common cases. ie. when it's safe, actually overwrite blocks rather than doing read-modify-write.
also fixes PR/33152 and PR/36303.
|
1.153 | 17-May-2007 |
hannken | Fstrans_start() always returns zero, so change its type to void.
|
1.152 | 13-May-2007 |
yamt | use a cached value of v_size. no functional changes.
|
1.151 | 24-Apr-2007 |
perseant | Split the VOP interface part of genfs_putpages() from the code. The new function that does the work, genfs_do_putpages(), now takes as an argument a pointer to the page that would be waited on, if PGO_BUSYWAIT were not set. This allows a consumer, e.g. lfs_putpages(), to perform an action outside the scope of UVM before sleeping on the page in question.
|
1.150 | 04-Mar-2007 |
christos | branches: 1.150.2; 1.150.4; Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
1.149 | 22-Feb-2007 |
thorpej | TRUE -> true, FALSE -> false
|
1.148 | 21-Feb-2007 |
thorpej | Replace the Mach-derived boolean_t type with the C99 bool type. A future commit will replace use of TRUE and FALSE with true and false.
|
1.147 | 20-Feb-2007 |
ad | Add genfs_node_destroy(). Fixes a lock "leak" seen when running LOCKDEBUG kernels.
|
1.146 | 15-Feb-2007 |
ad | branches: 1.146.2; Replace some uses of lockmgr() / simplelocks.
|
1.145 | 09-Feb-2007 |
ad | Merge newlock2 to head.
|
1.144 | 29-Jan-2007 |
hannken | Change fstrans enum types to upper case. No functional change.
From Antti Kantee <pooka@netbsd.org>
|
1.143 | 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.142 | 27-Dec-2006 |
yamt | remove nqnfs.
|
1.141 | 15-Dec-2006 |
yamt | put ->K loaned pages on the page queue, so that page loaning doesn't disturb pagedaemon/pdpolicy.
|
1.140 | 30-Nov-2006 |
pooka | branches: 1.140.2; 1.140.4; * update comments before putpages(): the vm object is always returned unlocked instead of locked. chuq agrees * use slock set to &uobj->vmobjlock also for the last simple lock operation to be consistent with the rest of the function
|
1.139 | 25-Nov-2006 |
christos | instead of const int, use a #define which most of the time will evaluate in a compile-time constant.
|
1.138 | 16-Nov-2006 |
christos | __unused removal on arguments; approved by core.
|
1.137 | 20-Oct-2006 |
reinoud | Replace the LIST structure mp->mnt_vnodelist to a TAILQ structure since all vnodes were synced and processed backwards. This meant that the last accessed node was processed first and the earlierst last.
An extra benefit is the removal of the ugly hack from the Berkly days on LFS.
In the proces, i've also replaced the various variations hand written loops by the TAILQ_FOREACH() macro's.
|
1.136 | 14-Oct-2006 |
yamt | add wrapper functions of lockmgr on g_glock.
|
1.135 | 14-Oct-2006 |
yamt | genfs_getpages: use kmem_zalloc.
|
1.134 | 14-Oct-2006 |
yamt | genfs_do_io: iodone handler should be called at splbio.
|
1.133 | 12-Oct-2006 |
yamt | genfs_putpages: don't try to deactivate loaned pages. reported and tested by Nicolas Joly on current-users@.
|
1.132 | 12-Oct-2006 |
thorpej | genfs_lease_check(): Consume the arguments even if NFSSERVER is not defined.
|
1.131 | 12-Oct-2006 |
christos | - sprinkle __unused on function decls. - fix a couple of unused bugs - no more -Wno-unused for i386
|
1.130 | 05-Oct-2006 |
chs | add support for O_DIRECT (I/O directly to application memory, bypassing any kernel caching for file data).
|
1.129 | 15-Sep-2006 |
yamt | branches: 1.129.2; merge yamt-pdpolicy branch. - separate page replacement policy from the rest of kernel - implement an alternative replacement policy
|
1.128 | 23-Jul-2006 |
ad | branches: 1.128.4; Use the LWP cached credentials where sane.
|
1.127 | 22-Jul-2006 |
yamt | - genfs_getpages: in the case of PGO_LOCKED, check if we can acquire g_glock as suggested by Chuck Silvers on tech-kern@. - genfs_rel_pages: handle PGO_DONTCARE so that it can be used for the above.
|
1.126 | 22-Jul-2006 |
yamt | - in genfs_getpages, take g_glock earlier so that it can't be intervened by truncation. it also fixes a deadlock. (g_glock vs pages locking order) - uvm_vnp_setsize: modify v_size while holding v_interlock.
reviewed by Chuck Silvers.
|
1.125 | 14-May-2006 |
elad | integrate kauth.
|
1.124 | 11-Apr-2006 |
yamt | genfs_getpages: - use "overwrite" variable consistently. - remove a set-only variable. no functional changes.
|
1.123 | 30-Mar-2006 |
yamt | some cleanups after the introduction of GOP_SIZE_MEM flag. - remove GOP_SIZE_READ/GOP_SIZE_WRITE flags. they have not been used since the change. - ufs_balloc_range: remove code which has been no-op since the change. thanks Konrad Schroder for explaining the original intention of the code. - ffs_gop_size: don't extend past eof, in the case of GOP_SIZE_MEM. otherwise genfs_getpages end up to allocate pages past eof unnecessarily.
|
1.122 | 01-Mar-2006 |
yamt | branches: 1.122.2; 1.122.4; 1.122.6; merge yamt-uio_vmspace branch.
- use vmspace rather than proc or lwp where appropriate. the latter is more natural to specify an address space. (and less likely to be abused for random purposes.) - fix a swdmover race.
|
1.121 | 16-Jan-2006 |
reinoud | branches: 1.121.2; 1.121.4; Add genfs support for directories and softlinks next to regular files and block devices.
Discussed on tech-kern and ok'd by Chuck
|
1.120 | 11-Jan-2006 |
yamt | use nestiobuf api for genfs.
|
1.119 | 04-Jan-2006 |
yamt | - add simple functions to allocate/free a buffer for i/o. - make bufpool static.
|
1.118 | 24-Dec-2005 |
perry | branches: 1.118.2; Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
|
1.117 | 15-Dec-2005 |
yamt | fix lock/unlock mismatch in rev.1.115. reported by Chris Tribo on current-users@.
|
1.116 | 11-Dec-2005 |
christos | merge ktrace-lwp.
|
1.115 | 03-Dec-2005 |
yamt | genfs_compat_getpages: add minimum support of async get. ie. ignore them. should fix a crash reported by Jukka Salmi on current-users@.
|
1.114 | 02-Dec-2005 |
yamt | genfs_gop_write: use devvp directly as genfs_getpages does.
|
1.113 | 02-Dec-2005 |
yamt | genfs_putpages: initialize marker pages only when needed.
|
1.112 | 30-Nov-2005 |
yamt | revert rev.1.111 as it isn't necessary or correct. - currently no one in tree has a problem with zero b_lblkno, afaik. - this buf is used for "devvp", so it doesn't make sense to use lbn in the "vp".
|
1.111 | 30-Nov-2005 |
reinoud | Learn genfs that (struct buf *)->b_lblkno allways need to point to the logical block number of the file instead of allways zero.
|
1.110 | 29-Nov-2005 |
yamt | merge yamt-readahead branch.
|
1.109 | 12-Nov-2005 |
yamt | branches: 1.109.2; genfs_getpages: - add an assertion. - call VOP_STRATEGY of underlying vnode directly, rather than through the filesystem vnode. - no need to set b_dev here because VOP_STRATEGY will take care of it.
|
1.108 | 02-Nov-2005 |
yamt | merge yamt-vop branch. remove following VOPs.
VOP_BLKATOFF VOP_VALLOC VOP_BALLOC VOP_REALLOCBLKS VOP_VFREE VOP_TRUNCATE VOP_UPDATE
|
1.107 | 07-Oct-2005 |
elad | branches: 1.107.2; Remove Veriexec bits from genfs, don't #if 0 them.
|
1.106 | 07-Oct-2005 |
elad | Various fixes from blymn@ and myself.
Also, put genfs changes under #if 0, and don't do per-page fingerprints until this is properly discussed, as requested by yamt@.
|
1.105 | 05-Oct-2005 |
elad | Introduce per-page fingerprints in Veriexec.
This closes a hole pointed out by Thor Lancelot Simon on tech-kern ~3 years ago.
The problem was with running binaries from remote storage, where our kernel (and Veriexec) has no control over any changes to files.
An attacker could, after the fingerprint has been verified and program loaded to memory, inject malicious code into the backing store on the remote storage, followed by a forced flush, causing a page-in of the malicious data from backing store, bypassing integrity checks.
Initial implementation by Brett Lymn.
|
1.104 | 26-Jul-2005 |
yamt | don't write-protect wired pages. pointed by Chuck Silvers. for now, leave a vnode on the syncer's queue, as suggested by him.
|
1.103 | 23-Jul-2005 |
yamt | update file timestamps for nfsd loaned-read and mmap. PR/25279. discussed on tech-kern@.
|
1.102 | 17-Jul-2005 |
yamt | genfs_putpages: don't bother to clean the vnode unless VONWORKLST.
|
1.101 | 17-Jul-2005 |
yamt | ensure that vnodes with dirty pages are always on syncer's queue.
- genfs_putpages: wait for i/o completion of PG_RELEASED/PG_PAGEOUT pages by setting "wasclean" false when encountering them. suggested by Stephan Uphoff in PR/24596 (1).
- genfs_putpages: write protect pages when cleaning out, if we're going to take the vnode off the syncer's queue. uvm_fault: don't write-map pages unless its vnode is already on the syncer's queue.
fix PR/24596 (3) but in the different way from the suggested fix. (to keep our current behaviour, ie. not to require explicit msync. discussed on tech-kern@.)
- genfs_putpages: don't mistakenly take a vnode off the queue by introducing a generation number in genfs_node. genfs_getpages: increment the generation number. suggested by Stephan Uphoff in PR/24596 (2).
- add some assertions.
|
1.100 | 17-Jul-2005 |
yamt | - introduce PGO_NOBLOCKALLOC and use it for ubc mapping to prevent unnecessary block allocations in the case that page size > block size.
- ufs_balloc_range: use VM_PROT_WRITE+PGO_NOBLOCKALLOC rather than VM_PROT_READ.
|
1.99 | 16-Jul-2005 |
yamt | genfs_getpages: don't forget to put the vnode onto the syncer's work queue even in the case of PGO_LOCKED.
|
1.98 | 28-Jun-2005 |
yamt | branches: 1.98.2; - constify genfs_ops. - use member designators.
|
1.97 | 29-May-2005 |
christos | - sprinkle const - avoid shadowed variables.
|
1.96 | 26-Feb-2005 |
perry | branches: 1.96.2; nuke trailing whitespace
|
1.95 | 16-Feb-2005 |
chs | undo the part of rev. 1.93 that turned the past-EOF check into an assertion. read() can't request pages past EOF, but mmap() can. apparently I had disengaged the brain when I said that was ok.
|
1.94 | 25-Jan-2005 |
wrstuden | Extend fsync_range(2) to support the FDISKSYNC flag, which requests that the sync be propogated out through the disk drive caches.
|
1.93 | 25-Jan-2005 |
drochner | branches: 1.93.2; -in the read-ahead code, avoid to issue read requests at/past EOF -because noone should request reads past EOF, or writes past EOF which are not explicitely marked as file-extending (PGO_PASTEOF), turn a boundary check into a KASSERT approved by Chuck Silvers
|
1.92 | 22-Dec-2004 |
dbj | branches: 1.92.2; check for _KERNEL_OPT around opt include
|
1.91 | 04-Oct-2004 |
enami | Backout previous; seeing many busy page on the pageq is normal.
|
1.90 | 03-Oct-2004 |
enami | So that not to leave pages busy unnecessarily, bound to specified region when building cluster if we aren't pagedaemon and clean entire cluster if we are pagedaemon.
|
1.89 | 03-Oct-2004 |
enami | Count obj pages freed by pagedaemon.
|
1.88 | 17-Sep-2004 |
skrll | There's no need to pass a proc value when using UIO_SYSSPACE with vn_rdwr(9) and uiomove(9).
OK'd by Jason Thorpe
|
1.87 | 27-May-2004 |
yamt | - remove a comment which is no longer true. - add "XXX vn_lock" comments where we can call VOP_READ/WRITE without vnode lock held. (genfs_compat_*)
|
1.86 | 25-May-2004 |
hannken | Add ffs internal snapshots. Written by Marshall Kirk McKusick for FreeBSD.
- Not enabled by default. Needs kernel option FFS_SNAPSHOT. - Change parameters of ffs_blkfree. - Let the copy-on-write functions return an error so spec_strategy may fail if the copy-on-write fails. - Change genfs_*lock*() to use vp->v_vnlock instead of &vp->v_lock. - Add flag B_METAONLY to VOP_BALLOC to return indirect block buffer. - Add a function ffs_checkfreefile needed for snapshot creation. - Add special handling of snapshot files: Snapshots may not be opened for writing and the attributes are read-only. Use the mtime as the time this snapshot was taken. Deny mtime updates for snapshot files. - Add function transferlockers to transfer any waiting processes from one lock to another. - Add vfsop VFS_SNAPSHOT to take a snapshot and make it accessible through a vnode. - Add snapshot support to ls, fsck_ffs and dump.
Welcome to 2.0F.
Approved by: Jason R. Thorpe <thorpej@netbsd.org>
|
1.85 | 25-Jan-2004 |
hannken | Make VOP_STRATEGY(bp) a real VOP as discussed on tech-kern.
VOP_STRATEGY(bp) is replaced by one of two new functions:
- VOP_STRATEGY(vp, bp) Call the strategy routine of vp for bp. - DEV_STRATEGY(bp) Call the d_strategy routine of bp->b_dev for bp.
DEV_STRATEGY(bp) is used only for block-to-block device situations.
|
1.84 | 10-Jan-2004 |
yamt | store a i/o priority hint in struct buf for buffer queue discipline.
|
1.83 | 27-Nov-2003 |
pk | genfs_revoke: use ltsleep() to release the vnode spin lock to avoid a sleep/wakeup race.
|
1.82 | 24-Sep-2003 |
yamt | fix a bug of lfs.
genfs_getpages() can read in more blocks than it should due to faked filesize of lfs_gop_size(). it's a security problem and it makes gcc3 "internal error"
to fix this, - in genfs_getpages(), always calculate diskeof and memeof separately so that filesystems (in this case, lfs) can use different strategies for them. - introduce GOP_SIZE_MEM flag and use it to request in-core filesize. (it was an intention of GOP_SIZE_READ, but after the above change _READ is not a straightforward name)
after this, no one uses GOP_SIZE_{READ,WRITE} anymore but leave them for now.
|
1.81 | 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.80 | 29-Jun-2003 |
fvdl | branches: 1.80.2; Back out the lwp/ktrace changes. They contained a lot of colateral damage, and need to be examined and discussed more.
|
1.79 | 28-Jun-2003 |
darrenr | Pass lwp pointers throughtout the kernel, as required, so that the lwpid can be inserted into ktrace records. The general change has been to replace "struct proc *" with "struct lwp *" in various function prototypes, pass the lwp through and use l_proc to get the process pointer when needed.
Bump the kernel rev up to 1.6V
|
1.78 | 17-Jun-2003 |
simonb | Micro-optimisation- move the "pgs == NULL" check from the previous change to immediately after the malloc call. This can't fail in the non-malloc case.
Reviewd by YAMAMOTO Takashi.
|
1.77 | 15-Jun-2003 |
yamt | genfs_getpages: if number of pages requested is >16, use malloc/free for array of pointers to vm_page. otherwise, use on-stack array as used to. this change fixes assertion failure when nfsd gets a big read request that isn't aligned with filesystem block. discussed on tech-kern.
|
1.76 | 23-Apr-2003 |
tls | Correct use of MAXBSIZE where MAXPHYS was intended. This is a necessary first step towards per-device MAXPHYS, and has the beneficial side effect of allowing clustering to MAXPHYS even on systems that need to run with a reduced MAXBSIZE to get more metadata buffers.
|
1.75 | 10-Apr-2003 |
jdolecek | use former genfs_eopnotsupp_rele() as genfs_eopnotsupp(), so that vnodes are vput()/vrele()d as necessary - some filesystems did use the wrong one for some ops, and it's just safer to not take the chance
based on suggestion by Bill Studenmund
|
1.74 | 10-Apr-2003 |
jdolecek | improve genfs_eopnotsupp_rele() so that's usable for vop_rename, which uses WILLPUT for member which may be NULL handle correctly dvp == vp case for WILLPUT members, so this works for vop_remove, vop_rename
thanks Bill Studenmund for code&comments on this
|
1.73 | 25-Feb-2003 |
thorpej | Add a new BUF_INIT() macro which initializes b_dep and b_interlock, and use it. This fixes a few places where either b_dep or b_interlock were not properly initialized.
|
1.72 | 17-Feb-2003 |
perseant | Add code to UBCify LFS. This is still behind "#ifdef LFS_UBC" for now (there are still some details to work out) but expect that to go away soon. To support these basic changes (creation of lfs_putpages, lfs_gop_write, mods to lfs_balloc) several other changes were made, to wit:
* Create a writer daemon kernel thread whose purpose is to handle page writes for the pagedaemon, but which also takes over some of the functions of lfs_check(). This thread is started the first time an LFS is mounted.
* Add a "flags" parameter to GOP_SIZE. Current values are GOP_SIZE_READ, meaning that the call should return the size of the in-core version of the file, and GOP_SIZE_WRITE, meaning that it should return the on-disk size. One of GOP_SIZE_READ or GOP_SIZE_WRITE must be specified.
* Instead of using malloc(...M_WAITOK) for everything, reserve enough resources to get by and use malloc(...M_NOWAIT), using the reserves if necessary. Use the pool subsystem for structures small enough that this is feasible. This also obsoletes LFS_THROTTLE.
And a few that are not strictly necessary:
* Moves the LFS inode extensions off onto a separately allocated structure; getting closer to LFS as an LKM. "Welcome to 1.6O."
* Unified GOP_ALLOC between FFS and LFS.
* Update LFS copyright headers to correct values.
* Actually cast to unsigned in lfs_shellsort, like the comment says.
* Keep track of which segments were empty before the previous checkpoint; any segments that pass two checkpoints both dirty and empty can be summarily cleaned. Do this. Right now lfs_segclean still works, but this should be turned into an effectless compatibility syscall.
|
1.71 | 05-Feb-2003 |
pk | Make the buffer cache code MP-safe.
|
1.70 | 21-Jan-2003 |
christos | step 3. Assign lwp properly if null, so that we can PHOLD without segfaulting.
|
1.69 | 18-Jan-2003 |
thorpej | Merge the nathanw_sa branch.
|
1.68 | 15-Nov-2002 |
yamt | genfs_compat_gop_write: set uio_iovcnt correctly.
|
1.67 | 25-Oct-2002 |
yamt | use B_ASYNC for children of nested buffers in genfs_getpages. ok'ed by Chuck Silvers.
|
1.66 | 23-Oct-2002 |
jdolecek | merge kqueue branch into -current
kqueue provides a stateful and efficient event notification framework currently supported events include socket, file, directory, fifo, pipe, tty and device changes, and monitoring of processes and signals
kqueue is supported by all writable filesystems in NetBSD tree (with exception of Coda) and all device drivers supporting poll(2)
based on work done by Jonathan Lemon for FreeBSD initial NetBSD port done by Luke Mewburn and Jason Thorpe
|
1.65 | 21-Oct-2002 |
fvdl | Use B_ASYNC in the !PGO_SYNCIO case. Gets back most, if not all, NFS read throughput performance lost since the introduction of UBC. Spotted by YAMAMOTO Takashi, many thanks to him.
|
1.64 | 29-May-2002 |
enami | Add missing pageq lock while uvm_pagefree() is called (either directly or indirectly). Reviewed by chuq.
|
1.63 | 18-May-2002 |
enami | branches: 1.63.2; Just give up to do readahead rather than waiting busy pages. While I'm here, added few patchable variable so that one can easily measure readahead behaviour.
|
1.62 | 14-May-2002 |
perseant | branches: 1.62.2; Protect v_synclist with splbio(); note that LIST_REMOVE is not an idempotent operation if more than one LIST_REMOVE happens on interrupt, so both the test for VONWORKLIST and the LIST_REMOVE(vp, v_synclist) need to be in splbio().
|
1.61 | 10-May-2002 |
enami | Redo rev. 1.57 a bit different way; don't use `tpg' since it may be freed. Subtract the number of pages behind us when calculating new offset instead.
|
1.60 | 10-May-2002 |
enami | Don't modify the local variable `n' in genfs_putpages(). It should contain the number of elements in the page array at the beginning of every iteration.
|
1.59 | 09-May-2002 |
enami | When traversing by list, if the page next to us is a page in the cluster, advance the pointer.
|
1.58 | 09-May-2002 |
enami | - In genfs_putpages(), no need to restrict the cluster within the given region. - In uvm_aio_aiodone(), remove assertions no longer true.
|
1.57 | 06-May-2002 |
enami | Since npages may includes number of pages behind us, we can't use it to update current offset. Instead, use the last page in the run of pages to calculate new offset.
|
1.56 | 06-May-2002 |
enami | Stylistic change; introduce new local variable and use it instead of sprinkling different expression to test if we're pagedaemon.
|
1.55 | 26-Apr-2002 |
enami | We don't need to re-activate page in genfs_putpages() when GOP_WRITE returns ENOMEM (temporary memory shortage) since it is already handled in uvm_aio_aiodone() for both async/sync case. Discussed with chuq.
|
1.54 | 16-Apr-2002 |
enami | genfs_{compat_}getpages(): For PGO_LOCKED request, it is safe to return read only page if it was due to read fault. This avoid many unnecessary read fault introduced by recent nfs_bio.c change. Reviewed by chuq.
|
1.53 | 16-Apr-2002 |
enami | KNF and other misc. cosmetic changes.
|
1.52 | 22-Mar-2002 |
chs | in genfs_compat_getpages(), clear any part of a page that VOP_READ() doesn't fill in (eg. because it's past EOF).
|
1.51 | 17-Mar-2002 |
atatat | Convert ioctl code to use EPASSTHROUGH instead of -1 or ENOTTY for indicating an unhandled "command". ERESTART is -1, which can lead to confusion. ERESTART has been moved to -3 and EPASSTHROUGH has been placed at -4. No ioctl code should now return -1 anywhere. The ioctl() system call is now properly restartable.
|
1.50 | 02-Mar-2002 |
chs | don't yield the cpu in genfs_putpages() if we're the pagedaemon. pointed out by enami. fixes PR 15784.
|
1.49 | 19-Feb-2002 |
chs | fix two problems: - when yielding the cpu while using the vnode's page list, use a marker page to keep our place in the list (like the other cases where we drop the lock). - wait until no one else has the page busy before deciding if the page needs to be cleaned. a page will be dirty while it's being initialized but will be marked clean before PG_BUSY is cleared. both found by enami.
|
1.48 | 13-Feb-2002 |
enami | Don't bother to subtract 0.
|
1.47 | 12-Feb-2002 |
enami | Don't leave junk in pgs[] array since it will be passed to uvn_findpages() again.
|
1.46 | 26-Jan-2002 |
chs | in genfs_putpages(): - yield the cpu if we've taken too long. - when traversing by offset, skip over any pages that we clustered.
|
1.45 | 31-Dec-2001 |
chs | in genfs_gop_write(), actually set the B_ASYNC flag on buffers that we're not going to wait for. this doesn't matter for real devices since we call VOP_STRATEGY() directly, but NFS uses this flag to decide whether or not to hand the buffer off to an nfsiod thread.
|
1.44 | 31-Dec-2001 |
chs | in genfs_putpages(), we must wait for any pending write i/os to complete if the putpages request is synchronous.
|
1.43 | 18-Dec-2001 |
chs | add some compatibility routines to allow mmap() to work non-UBCified filesystems (in the same non-coherent fashion that they worked before).
|
1.42 | 06-Dec-2001 |
chs | add a VOP_PUTPAGES method for all the filesystems that don't have pages, just unlock the interlock.
|
1.41 | 30-Nov-2001 |
christos | PR/14781: Matthew Fredette: Clamp the number of read-ahead pages to 16 because other code has this limit. Also while I am here, convert the magic 16 into a #define constant and use it in the appropriate places. This is a temporary fix, since all this read-ahead business is XXXUBC anyway.
|
1.40 | 10-Nov-2001 |
lukem | add RCSIDs
|
1.39 | 03-Oct-2001 |
enami | branches: 1.39.2; s/genfs_do_putpages/genfs_gop_write/ in uvmhist.
|
1.38 | 21-Sep-2001 |
chs | when zeroing pages past EOF, don't zero the page containing EOF if it already contains valid data. should fix PRs 13361 and 13436.
|
1.37 | 15-Sep-2001 |
chs | a whole bunch of changes to improve performance and robustness under load:
- remove special treatment of pager_map mappings in pmaps. this is required now, since I've removed the globals that expose the address range. pager_map now uses pmap_kenter_pa() instead of pmap_enter(), so there's no longer any need to special-case it. - eliminate struct uvm_vnode by moving its fields into struct vnode. - rewrite the pageout path. the pager is now responsible for handling the high-level requests instead of only getting control after a bunch of work has already been done on its behalf. this will allow us to UBCify LFS, which needs tighter control over its pages than other filesystems do. writing a page to disk no longer requires making it read-only, which allows us to write wired pages without causing all kinds of havoc. - use a new PG_PAGEOUT flag to indicate that a page should be freed on behalf of the pagedaemon when it's unlocked. this flag is very similar to PG_RELEASED, but unlike PG_RELEASED, PG_PAGEOUT can be cleared if the pageout fails due to eg. an indirect-block buffer being locked. this allows us to remove the "version" field from struct vm_page, and together with shrinking "loan_count" from 32 bits to 16, struct vm_page is now 4 bytes smaller. - no longer use PG_RELEASED for swap-backed pages. if the page is busy because it's being paged out, we can't release the swap slot to be reallocated until that write is complete, but unlike with vnodes we don't keep a count of in-progress writes so there's no good way to know when the write is done. instead, when we need to free a busy swap-backed page, just sleep until we can get it busy ourselves. - implement a fast-path for extending writes which allows us to avoid zeroing new pages. this substantially reduces cpu usage. - encapsulate the data used by the genfs code in a struct genfs_node, which must be the first element of the filesystem-specific vnode data for filesystems which use genfs_{get,put}pages(). - eliminate many of the UVM pagerops, since they aren't needed anymore now that the pager "put" operation is a higher-level operation. - enhance the genfs code to allow NFS to use the genfs_{get,put}pages instead of a modified copy. - clean up struct vnode by removing all the fields that used to be used by the vfs_cluster.c code (which we don't use anymore with UBC). - remove kmem_object and mb_object since they were useless. instead of allocating pages to these objects, we now just allocate pages with no object. such pages are mapped in the kernel until they are freed, so we can use the mapping to find the page to free it. this allows us to remove splvm() protection in several places.
The sum of all these changes improves write throughput on my decstation 5000/200 to within 1% of the rate of NetBSD 1.5 and reduces the elapsed time for "make release" of a NetBSD 1.5 source tree on my 128MB pc to 10% less than a 1.5 kernel took.
|
1.36 | 17-Aug-2001 |
chs | branches: 1.36.2; make genfs get/put work for block devices as well: - the "fs bshift" for block devices is always DEV_BSHIFT. - retrieve the device vnode from VOP_BMAP() and use that to set b_dev in page i/o buffers.
|
1.35 | 14-Jun-2001 |
chs | branches: 1.35.2; be sure to allocate dirty zeroed pages to cover blocks we allocate to resolve a write fault. fixes PR 13201. also, be sure to allocate blocks for write faults to holes even if the page is already in memory. fixes PR 13189.
|
1.34 | 28-May-2001 |
chs | add a genfs_mmap() and change all of the disk-based filesystems to implement VOP_MMAP() with the genfs version, in preparation for actually using this VOP.
|
1.33 | 26-May-2001 |
chs | replace vm_page_t with struct vm_page *.
|
1.32 | 10-Mar-2001 |
chs | eliminate the VM_PAGER_* error codes in favor of the traditional E* codes. the mapping is:
VM_PAGER_OK 0 VM_PAGER_BAD <unused> VM_PAGER_FAIL <unused> VM_PAGER_PEND 0 (see below) VM_PAGER_ERROR EIO VM_PAGER_AGAIN EAGAIN VM_PAGER_UNLOCK EBUSY VM_PAGER_REFAULT ERESTART
for async i/o requests, it used to be possible for the request to be convert to sync, and the pager would return VM_PAGER_OK or VM_PAGER_PEND to indicate whether the caller should perform post-i/o cleanup. this is no longer allowed; pagers must now return 0 to indicate that the async i/o was successfully started, and the caller never needs to worry about doing the post-i/o cleanup.
|
1.31 | 28-Feb-2001 |
chs | branches: 1.31.2; in genfs_getpages(), don't try to optimize zeroing past EOF. fixes PR 12297.
|
1.30 | 27-Feb-2001 |
chs | distinguish between a file's in-memory EOF (which marks the offset at which we disallow creation of page cache pages) and its on-disk EOF (which marks the offset at which there is not (yet) data on disk that we need to read when creating pages). for requests with PGO_PASTEOF, the in-memory EOF maybe be much larger than the on-disk EOF.
|
1.29 | 18-Feb-2001 |
chs | fix a couple more bugs: - in genfs_getpages(), unbusy any pages that we don't free in the error path. - in genfs_putpages(), if we get a bmap error, record that in the master buf.
|
1.28 | 12-Feb-2001 |
fvdl | Oops, removal unintenionally commited debug code.
|
1.27 | 12-Feb-2001 |
fvdl | Format arg nit.
|
1.26 | 05-Feb-2001 |
chs | fix several bugs: - in the cases where we skip over the i/o loop, increment npages by ridx so that when the cleanup code starts processing the pgs array at index 0 it'll actually process all of the pages. - process the PG_RELEASED flag when unbusying pages. - add some missing MP locking. - use MIN() and MAX() instead of min() and max() since the latter are functions which take arguments of type "int" but we call them with values of type "off_t", so the values could be truncated. - in the PGO_PASTEOF case, use the larger of the current file size and the end of the requested range of pages as the file size for this request. this fixes some problems with sparsing writes to large offsets.
|
1.25 | 22-Jan-2001 |
fvdl | Cast lbn to off_t in a few places, to avoid daddr_t overflow and all sorts of havoc. From Bill Sommerfeld.
|
1.24 | 27-Dec-2000 |
chs | several bugs: - in genfs_getpages() don't start read-ahead if we get an error on the sync read, and always start read-ahead after the range of the sync read if we do any at all. - off-by-one error in genfs_size().
|
1.23 | 09-Dec-2000 |
chs | only zero the part of the page after EOF if we're actually initializing the page.
|
1.22 | 27-Nov-2000 |
chs | allow building without SOFTDEP by adding the pageiodone hook to bio_ops.
|
1.21 | 27-Nov-2000 |
chs | Initial integration of the Unified Buffer Cache project.
|
1.20 | 19-Sep-2000 |
fvdl | Adapt for VOP_FSYNC parameter change.
|
1.19 | 03-Aug-2000 |
thorpej | Convert namei pathname buffer allocation to use the pool allocator.
|
1.18 | 29-May-2000 |
mycroft | branches: 1.18.2; Stylistic change.
|
1.17 | 13-May-2000 |
perseant | branches: 1.17.2; Change the sementics of the last parameter from a boolean ("waitfor") to a set of flags ("flags"). Two flags are defined, UPDATE_WAIT and UPDATE_DIROP.
Under the old semantics, VOP_UPDATE would block if waitfor were set, under the assumption that directory operations should be done synchronously. At least LFS and FFS+softdep do not make this assumption; FFS+softdep got around the problem by enclosing all relevant calls to VOP_UPDATE in a "if(!DOINGSOFTDEP(vp))", while LFS simply ignored waitfor, one of the reasons why NFS-serving an LFS filesystem did not work properly.
Under the new semantics, the UPDATE_DIROP flag is a hint to the fs-specific update routine that the call comes from a dirop routine, and should be wait for, or not, accordingly.
Closes PR#8996.
|
1.16 | 30-Mar-2000 |
augustss | Register, begone!
|
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 | 23-Oct-1999 |
fvdl | Remove some mentioned members in the vop {un}lock args struct that we do not actually have.
|
1.13 | 03-Aug-1999 |
wrstuden | branches: 1.13.2; 1.13.4; 1.13.6; Add support for fcntl(2) to generate VOP_FCNTL calls. Any fcntl call with F_FSCTL set and F_SETFL calls generate calls to a new fileop fo_fcntl. Add genfs_fcntl() and soo_fcntl() which return 0 for F_SETFL and EOPNOTSUPP otherwise. Have all leaf filesystems use genfs_fcntl().
Reviewed by: thorpej Tested by: wrstuden
|
1.12 | 08-Jul-1999 |
wrstuden | Introduce layer library in genfs. This set of files abstracts most of the functionality of nullfs. The latter is now just a mount & unmount routine, and a few tables. umapfs borrow most of this infrastructure.
Both fs's are now nfs-exportable.
All layered fs's share a common format to private mount & private vnode structs (which a particular fs can extend).
Also add genfs_noerr_rele(), a vnode op which will vrele/vput operand vnodes appropriately.
|
1.11 | 05-Mar-1999 |
mycroft | branches: 1.11.4; Pass null pointers to VOP_UPDATE rather than having all the callers fetch the current time themselves.
|
1.10 | 13-Aug-1998 |
kleink | Add genfs_einval(), which does the obvious thing.
|
1.9 | 10-Aug-1998 |
matthias | create miscfs/genfs/genfs_vnops.c:genfs_enoioctl and make all the other filesystems use it instead of a private version.
|
1.8 | 25-Jun-1998 |
thorpej | - Rename nqnfs_vop_lease_check() to genfs_lease_check(). If NFSSERVER is not in the kernel, genfs_lease_check() is simply a no-op. This allows LKM'd file systems to be exported (previously did not work properly due to a compile-time decision based on -DNFSSERVER). - defopt NFSSERVER
|
1.7 | 05-Jun-1998 |
kleink | * Convert fsync vnode operator implementations and usage from the old waitfor argument and MNT_WAIT/MNT_NOWAIT to flags and FSYNC_WAIT. * In genfs_fsync(), honor the FSYNC_NODATA flag.
|
1.6 | 01-Mar-1998 |
fvdl | Merge with Lite2 + local changes
|
1.5 | 05-Jan-1998 |
perry | RCSID Police.
|
1.4 | 11-Apr-1997 |
kleink | Implement a POSIX compliant genfs VOP_SEEK() and use it in the appropriate places; by Chris G. Demetriou and myself.
|
1.3 | 07-Sep-1996 |
mycroft | Implement poll(2).
|
1.2 | 05-Sep-1996 |
thorpej | Remove some unused variables.
|
1.1 | 01-Sep-1996 |
mycroft | Add a set of generic file system operations that most file systems use. Also, fix some time stamp bogosities.
|
1.11.4.7 | 31-Aug-1999 |
perseant | Rudimentary support for LFS under UBC:
- LFS-specific VOP_BALLOC and VOP_PUTPAGES vnode ops.
- getblk VREG panic #ifdef'd out (can be reinstated when Ifile is internalized and Ifile can be made another type from VREG)
- interface to VOP_PUTPAGES changed to pass all pager flags, not just sync. FS putpages routines must know about the pager flags.
- new LFS magic disk address, -2 ("unwritten"), meaning accounted for but not assigned to a fixed disk location (since LFS does these two things separately, and the previous accounting method using buffer headers no longer will work). Changed references to (foo == (daddr_t)-1) to (foo < 0). Since disk drivers reject all addresses < 0, this should not present a problem for other FSs.
|
1.11.4.6 | 09-Aug-1999 |
chs | create a new type "voff_t" for uvm_object offsets and define it to be "off_t". also, remove pgo_asyncget().
|
1.11.4.5 | 02-Aug-1999 |
thorpej | Update from trunk.
|
1.11.4.4 | 31-Jul-1999 |
chs | genfs_getpages() now handles: - faults on offsets past the nominal EOF during extending writes. - returning multiple pages in the !PGO_LOCKED case if multiple pages are requested. - using new VOP_BALLOC() interface to for allocating getpages with blocksize<pagesize. genfs_putpages() now handles: - writing pages which do not have full backing store allocated.
|
1.11.4.3 | 12-Jul-1999 |
chs | fix the PGO_OVERWRITE case, I don't know how it was working before. tidy a few other bits.
|
1.11.4.2 | 11-Jul-1999 |
chs | yet another major rework of the generic getpages. we now do the block allocations for allocating getpages operations after reading the pages. for nested i/os, use b_resid rather than b_bcount to track the amount left to go. return values for getpages/putpages are now unix errnos rather than VM_PAGER_*. readahead is gone again for the moment.
|
1.11.4.1 | 04-Jul-1999 |
chs | create genfs_getpages() and genfs_putpages(). these should be able to handle most of the local-disk filesystems.
|
1.13.6.1 | 27-Dec-1999 |
wrstuden | Pull up to last week's -current.
|
1.13.4.2 | 15-Nov-1999 |
fvdl | Sync with -current
|
1.13.4.1 | 19-Oct-1999 |
fvdl | Bring in Kirk McKusick's FFS softdep code on a branch.
|
1.13.2.6 | 12-Mar-2001 |
bouyer | Sync with HEAD.
|
1.13.2.5 | 11-Feb-2001 |
bouyer | Sync with HEAD.
|
1.13.2.4 | 05-Jan-2001 |
bouyer | Sync with HEAD
|
1.13.2.3 | 13-Dec-2000 |
bouyer | Sync with HEAD (for UBC fixes).
|
1.13.2.2 | 08-Dec-2000 |
bouyer | Sync with HEAD.
|
1.13.2.1 | 20-Nov-2000 |
bouyer | Update thorpej_scsipi to -current as of a month ago
|
1.17.2.1 | 22-Jun-2000 |
minoura | Sync w/ netbsd-1-5-base.
|
1.18.2.1 | 14-Dec-2000 |
he | Pull up revision 1.20 (requested by fvdl): Improve NFS performance, possibly with as much as 100% in throughput. Please note: this implies a kernel interface change, VOP_FSYNC gains two arguments.
|
1.31.2.22 | 07-Jan-2003 |
thorpej | In the SA universe, the switch-to-this-LWP decision is made at a different level than where preempt() calls are made, which renders the "newlwp" argument useless. Replace it with a "more work to do" boolean argument. Returning to userspace preempt() calls pass 0. "Voluntary" preemptions in e.g. uiomove() pass 1. This will be used to indicate to the SA subsystem that the LWP is not yet finished in the kernel.
Collapse the SA vs. non-SA cases of preempt() together, making the conditional code block much smaller, and don't call sa_preempt() if more work is to come.
NOTE: THIS IS NOT A COMPLETE FIX TO THE preempt()-in-uiomove() PROBLEM THAT CURRENTLY EXISTS FOR SA PROCESSES.
|
1.31.2.21 | 11-Dec-2002 |
thorpej | Sync with HEAD.
|
1.31.2.20 | 11-Nov-2002 |
nathanw | Catch up to -current
|
1.31.2.19 | 23-Oct-2002 |
thorpej | Fix a merge botch.
|
1.31.2.18 | 23-Oct-2002 |
thorpej | Sync with rev. 1.65.
|
1.31.2.17 | 16-Jul-2002 |
nathanw | pagedaemon_proc really should be a proc, not a LWP.
|
1.31.2.16 | 12-Jul-2002 |
nathanw | No longer need to pull in lwp.h; proc.h pulls it in for us.
|
1.31.2.15 | 24-Jun-2002 |
nathanw | Curproc->curlwp renaming.
Change uses of "curproc->l_proc" back to "curproc", which is more like the original use. Bare uses of "curproc" are now "curlwp".
"curproc" is now #defined in proc.h as ((curlwp) ? (curlwp)->l_proc) : NULL) so that it is always safe to reference curproc (*de*referencing curproc is another story, but that's always been true).
|
1.31.2.14 | 20-Jun-2002 |
nathanw | Catch up to -current.
|
1.31.2.13 | 17-Apr-2002 |
nathanw | Catch up to -current.
|
1.31.2.12 | 01-Apr-2002 |
nathanw | Catch up to -current. (CVS: It's not just a program. It's an adventure!)
|
1.31.2.11 | 28-Feb-2002 |
nathanw | LWPify.
|
1.31.2.10 | 28-Feb-2002 |
nathanw | Catch up to -current.
|
1.31.2.9 | 09-Jan-2002 |
nathanw | curproc ==> curproc->l_proc
|
1.31.2.8 | 08-Jan-2002 |
nathanw | Catch up to -current.
|
1.31.2.7 | 14-Nov-2001 |
nathanw | Catch up to -current.
|
1.31.2.6 | 08-Oct-2001 |
nathanw | Catch up to -current.
|
1.31.2.5 | 21-Sep-2001 |
nathanw | Catch up to -current.
|
1.31.2.4 | 24-Aug-2001 |
nathanw | Catch up with -current.
|
1.31.2.3 | 21-Jun-2001 |
nathanw | Catch up to -current.
|
1.31.2.2 | 09-Apr-2001 |
nathanw | Catch up with -current.
|
1.31.2.1 | 05-Mar-2001 |
nathanw | Initial commit of scheduler activations and lightweight process support.
|
1.35.2.8 | 02-Oct-2002 |
jdolecek | knote data is now 64bit, g/c obsolete comment
|
1.35.2.7 | 29-Sep-2002 |
jdolecek | don't need cast to (caddr_t) for kn_hook anymore
|
1.35.2.6 | 25-Sep-2002 |
jdolecek | implement genfs_kqfilter() - this is based upon ufs_kqfilter(), but uses vp->v_size for EVFILT_READ
|
1.35.2.5 | 23-Jun-2002 |
jdolecek | catch up with -current on kqueue branch
|
1.35.2.4 | 16-Mar-2002 |
jdolecek | Catch up with -current.
|
1.35.2.3 | 11-Feb-2002 |
jdolecek | Sync w/ -current.
|
1.35.2.2 | 10-Jan-2002 |
thorpej | Sync kqueue branch with -current.
|
1.35.2.1 | 25-Aug-2001 |
thorpej | Merge Aug 24 -current into the kqueue branch.
|
1.36.2.5 | 11-Oct-2001 |
fvdl | Catch up with -current. Fix some bogons in the sparc64 kbd/ms attach code. cd18xx conversion provided by mrg.
|
1.36.2.4 | 01-Oct-2001 |
fvdl | Catch up with -current.
|
1.36.2.3 | 27-Sep-2001 |
fvdl | Put back line that got misplaced somehow.
|
1.36.2.2 | 26-Sep-2001 |
fvdl | * add a VCLONED vnode flag that indicates a vnode representing a cloned device. * rename REVOKEALL to REVOKEALIAS, and add a REVOKECLONE flag, to pass to VOP_REVOKE * the revoke system call will revoke all aliases, as before, but not the clones * vdevgone is called when detaching a device, so make it use REVOKECLONE to get rid of all clones as well * clean up all uses of VOP_OPEN wrt. locking. * add a few VOPS to spec_vnops that need to do something when it's a clone vnode (access and getattr) * add a copy of the vnode vattr structure of the original 'master' vnode to the specinfo of a cloned vnode. could possibly redirect getattr to the 'master' vnode, but this has issues with revoke * add a vdev_reassignvp function that disassociates a vnode from its original device, and reassociates it with the specified dev_t. to be used by cloning devices only, in case a new minor is allocated. * change all direct references in drivers to v_devcookie and v_rdev to vdev_privdata(vp) and vdev_rdev(vp). for diagnostic purposes when debugging race conditions that still exist wrt. locking and revoking vnodes. * make the locking state of a vnode consistent when passed to d_open and d_close (unlocked). locked would be better, but has some deadlock issues
|
1.36.2.1 | 07-Sep-2001 |
thorpej | Commit my "devvp" changes to the thorpej-devvp branch. This replaces the use of dev_t in most places with a struct vnode *.
This will form the basic infrastructure for real cloning device support (besides being architecurally cleaner -- it'll be good to get away from using numbers to represent objects).
|
1.39.2.1 | 12-Nov-2001 |
thorpej | Sync the thorpej-mips-cache branch with -current.
|
1.62.2.1 | 30-May-2002 |
gehenna | Catch up with -current.
|
1.63.2.3 | 26-Aug-2003 |
tron | Pull up revision 1.76 (requested by tls in ticket #1434): Correct use of MAXBSIZE where MAXPHYS was intended. This is a necessary first step towards per-device MAXPHYS, and has the beneficial side effect of allowing clustering to MAXPHYS even on systems that need to run with a reduced MAXBSIZE to get more metadata buffers.
|
1.63.2.2 | 23-Oct-2002 |
lukem | Pull up revision 1.65 (requested by fvdl in ticket #935): Use B_ASYNC in the !PGO_SYNCIO case. Gets back most, if not all, NFS read throughput performance lost since the introduction of UBC. Spotted by YAMAMOTO Takashi, many thanks to him.
|
1.63.2.1 | 01-Jun-2002 |
tv | Pull up revision 1.64 (requested by enami in ticket #114): Add missing pageq lock while uvm_pagefree() is called (either directly or indirectly). Reviewed by chuq.
|
1.80.2.11 | 11-Dec-2005 |
christos | Sync with head.
|
1.80.2.10 | 10-Nov-2005 |
skrll | Sync with HEAD. Here we go again...
|
1.80.2.9 | 04-Mar-2005 |
skrll | Sync with HEAD.
Hi Perry!
|
1.80.2.8 | 17-Feb-2005 |
skrll | Sync with HEAD.
|
1.80.2.7 | 04-Feb-2005 |
skrll | Sync with HEAD.
|
1.80.2.6 | 17-Jan-2005 |
skrll | Sync with HEAD.
|
1.80.2.5 | 19-Oct-2004 |
skrll | Sync with HEAD
|
1.80.2.4 | 21-Sep-2004 |
skrll | Fix the sync with head I botched.
|
1.80.2.3 | 18-Sep-2004 |
skrll | Sync with HEAD.
|
1.80.2.2 | 03-Aug-2004 |
skrll | Sync with HEAD
|
1.80.2.1 | 02-Jul-2003 |
darrenr | Apply the aborted ktrace-lwp changes to a specific branch. This is just for others to review, I'm concerned that patch fuziness may have resulted in some errant code being generated but I'll look at that later by comparing the diff from the base to the branch with the file I attempt to apply to it. This will, at the very least, put the changes in a better context for others to review them and attempt to tinker with removing passing of 'struct lwp' through the kernel.
|
1.92.2.1 | 29-Apr-2005 |
kent | sync with -current
|
1.93.2.3 | 19-Mar-2005 |
yamt | sync with head. xen and whitespace. xen part is not finished.
|
1.93.2.2 | 12-Feb-2005 |
yamt | sync with head.
|
1.93.2.1 | 25-Jan-2005 |
yamt | file genfs_vnops.c was added on branch yamt-km on 2005-02-12 18:17:53 +0000
|
1.96.2.1 | 24-Aug-2005 |
riz | Pull up following revision(s) (requested by yamt in ticket #688): sys/miscfs/genfs/genfs_vnops.c: revision 1.98 via patch sys/ufs/ffs/ffs_vfsops.c: revision 1.165 sys/ufs/lfs/lfs_extern.h: revision 1.69 sys/fs/filecorefs/filecore_vfsops.c: revision 1.20 sys/nfs/nfs_node.c: revision 1.80 sys/fs/smbfs/smbfs_node.c: revision 1.24 sys/fs/cd9660/cd9660_vfsops.c: revision 1.24 sys/fs/msdosfs/msdosfs_denode.c: revision 1.8 sys/miscfs/genfs/genfs_node.h: revision 1.6 sys/ufs/lfs/lfs_vfsops.c: revision 1.183 sys/ufs/ext2fs/ext2fs_vfsops.c: revision 1.86 sys/fs/adosfs/advfsops.c: revision 1.23 sys/fs/ntfs/ntfs_vfsops.c: revision 1.31 - constify genfs_ops. - use member designators.
sys/miscfs/genfs/genfs_vnops.c: revision 1.99 via patch genfs_getpages: don't forget to put the vnode onto the syncer's work que ue even in the case of PGO_LOCKED.
sys/uvm/uvm_bio.c: revision 1.40 sys/uvm/uvm_pager.h: revision 1.29 sys/miscfs/genfs/genfs_vnops.c: revision 1.100 via patch sys/ufs/ufs/ufs_inode.c: revision 1.50 - introduce PGO_NOBLOCKALLOC and use it for ubc mapping to prevent unnecessary block allocations in the case that page size > block size. - ufs_balloc_range: use VM_PROT_WRITE+PGO_NOBLOCKALLOC rather than VM_PROT_READ.
sys/uvm/uvm_fault.c: revision 1.96 sys/miscfs/genfs/genfs_vnops.c: revision 1.101 via patch sys/uvm/uvm_object.h: revision 1.19 sys/miscfs/genfs/genfs_node.h: revision 1.7 ensure that vnodes with dirty pages are always on syncer's queue. - genfs_putpages: wait for i/o completion of PG_RELEASED/PG_PAGEOUT pages by setting "wasclean" false when encountering them. suggested by Stephan Uphoff in PR/24596 (1). - genfs_putpages: write protect pages when cleaning out, if we're going to take the vnode off the syncer's queue. uvm_fault: don't write-map pages unless its vnode is already on the syncer's queue. fix PR/24596 (3) but in the different way from the suggested fix. (to keep our current behaviour, ie. not to require explicit msync. discussed on tech-kern@.) - genfs_putpages: don't mistakenly take a vnode off the queue by introducing a generation number in genfs_node. genfs_getpages: increment the generation number. suggested by Stephan Uphoff in PR/24596 (2). - add some assertions.
sys/miscfs/genfs/genfs_vnops.c: revision 1.102 via patch genfs_putpages: don't bother to clean the vnode unless VONWORKLST.
sys/ufs/ffs/ffs_vnops.c: revision 1.71 ffs_full_fsync: because VBLK/VCHR can be mmap'ed, do VOP_PUTPAGES for them as well.
sys/uvm/uvm_fault.c: revision 1.97 uvm_fault: check a correct object in the case of layered filesystems. fix PR/30811 from Jukka Salmi.
sys/uvm/uvm_object.h: revision 1.20 sys/ufs/ffs/ffs_vfsops.c: revision 1.167 sys/uvm/uvm_bio.c: revision 1.41 sys/ufs/ufs/ufs_vnops.c: revision 1.129 sys/uvm/uvm_mmap.c: revision 1.92 sys/uvm/uvm_fault.c: revision 1.98 sys/kern/vfs_subr.c: revision 1.252 sys/fs/msdosfs/denode.h: revision 1.5 sys/miscfs/genfs/genfs_vnops.c: revision 1.103 via patch sys/fs/msdosfs/msdosfs_denode.c: revision 1.9 sys/sys/vnode.h: revision 1.141 sys/ufs/ufs/ufs_inode.c: revision 1.51 sys/ufs/ufs/ufs_extern.h: revision 1.45 via patch sys/miscfs/genfs/genfs_node.h: revision 1.8 sys/ufs/lfs/lfs_vfsops.c: revision 1.184 sys/uvm/uvm_pager.h: revision 1.30 sys/ufs/ext2fs/ext2fs_vfsops.c: revision 1.87 update file timestamps for nfsd loaned-read and mmap. PR/25279. discussed on tech-kern@.
sys/miscfs/genfs/genfs_vnops.c: revision 1.104 via patch don't write-protect wired pages. pointed by Chuck Silvers. for now, leave a vnode on the syncer's queue, as suggested by him.
sys/ufs/ffs/ffs_vnops.c: revision 1.72 revert VCHR part of ffs_vnops.c 1.71. as VCHR uses the device pager, no point to call VOP_PUTPAGES here. pointed by Chuck Silvers.
|
1.98.2.10 | 24-Mar-2008 |
yamt | sync with head.
|
1.98.2.9 | 11-Feb-2008 |
yamt | sync with head.
|
1.98.2.8 | 04-Feb-2008 |
yamt | sync with head.
|
1.98.2.7 | 21-Jan-2008 |
yamt | sync with head
|
1.98.2.6 | 07-Dec-2007 |
yamt | sync with head
|
1.98.2.5 | 27-Oct-2007 |
yamt | sync with head.
|
1.98.2.4 | 03-Sep-2007 |
yamt | sync with head.
|
1.98.2.3 | 26-Feb-2007 |
yamt | sync with head.
|
1.98.2.2 | 30-Dec-2006 |
yamt | sync with head.
|
1.98.2.1 | 21-Jun-2006 |
yamt | sync with head.
|
1.107.2.1 | 20-Oct-2005 |
yamt | remove genfs_fsync.
|
1.109.2.4 | 19-Nov-2005 |
yamt | remove contextless read-ahead code.
|
1.109.2.3 | 18-Nov-2005 |
yamt | - associate read-ahead context to vnode, rather than file. - revert VOP_READ prototype.
|
1.109.2.2 | 15-Nov-2005 |
yamt | adapt ffs, lfs, nfs.
|
1.109.2.1 | 14-Nov-2005 |
yamt | disable genfs readahead.
|
1.118.2.3 | 01-Feb-2006 |
yamt | sync with head.
|
1.118.2.2 | 15-Jan-2006 |
yamt | sync with head.
|
1.118.2.1 | 31-Dec-2005 |
yamt | adapt some random parts of kernel to uio_vmspace.
|
1.121.4.2 | 01-Jun-2006 |
kardel | Sync with head.
|
1.121.4.1 | 22-Apr-2006 |
simonb | Sync with head.
|
1.121.2.1 | 09-Sep-2006 |
rpaulo | sync with head
|
1.122.6.2 | 24-May-2006 |
tron | Merge 2006-05-24 NetBSD-current into the "peter-altq" branch.
|
1.122.6.1 | 31-Mar-2006 |
tron | Merge 2006-03-31 NetBSD-current into the "peter-altq" branch.
|
1.122.4.3 | 06-May-2006 |
christos | - Move kauth_cred_t declaration to <sys/types.h> - Cleanup struct ucred; forward declarations that are unused. - Don't include <sys/kauth.h> in any header, but include it in the c files that need it.
Approved by core.
|
1.122.4.2 | 19-Apr-2006 |
elad | sync with head.
|
1.122.4.1 | 08-Mar-2006 |
elad | Adapt to kernel authorization KPI.
|
1.122.2.5 | 11-Aug-2006 |
yamt | sync with head
|
1.122.2.4 | 24-May-2006 |
yamt | sync with head.
|
1.122.2.3 | 11-Apr-2006 |
yamt | sync with head
|
1.122.2.2 | 01-Apr-2006 |
yamt | sync with head.
|
1.122.2.1 | 05-Mar-2006 |
yamt | separate page replacement policy from the rest of kernel.
|
1.128.4.4 | 01-Feb-2007 |
ad | Sync with head.
|
1.128.4.3 | 30-Jan-2007 |
ad | Remove support for SA. Ok core@.
|
1.128.4.2 | 12-Jan-2007 |
ad | Sync with head.
|
1.128.4.1 | 18-Nov-2006 |
ad | Sync with head.
|
1.129.2.3 | 18-Dec-2006 |
yamt | sync with head.
|
1.129.2.2 | 10-Dec-2006 |
yamt | sync with head.
|
1.129.2.1 | 22-Oct-2006 |
yamt | sync with head
|
1.140.4.1 | 03-Sep-2007 |
wrstuden | Sync w/ NetBSD-4-RC_1
|
1.140.2.1 | 05-Jun-2007 |
bouyer | Pull up following revision(s) (requested by perseant in ticket #703): sys/miscfs/genfs/genfs.h 1.21 sys/miscfs/genfs/genfs_vnops.c 1.151 sys/ufs/lfs/lfs.h 1.119, 1.120 sys/ufs/lfs/lfs_bio.c 1.99-101 sys/ufs/lfs/lfs_extern.h 1.89 sys/ufs/lfs/lfs_inode.c 1.108, 1.109 sys/ufs/lfs/lfs_segment.c 1.197, 1.199, 1.200 sys/ufs/lfs/lfs_subr.c 1.69, 1.70 sys/ufs/lfs/lfs_syscalls.c 1.119 sys/ufs/lfs/lfs_vfsops.c 1.234, 1.235 sys/ufs/lfs/lfs_vnops.c 1.195, 1.196, 1.200, 1.202-206
Reduce busy waiting in lfs_putpages(), and other LFS improvements.
|
1.146.2.4 | 17-May-2007 |
yamt | sync with head.
|
1.146.2.3 | 07-May-2007 |
yamt | sync with head.
|
1.146.2.2 | 12-Mar-2007 |
rmind | Sync with HEAD.
|
1.146.2.1 | 27-Feb-2007 |
yamt | - sync with head. - move sched_changepri back to kern_synch.c as it doesn't know PPQ anymore.
|
1.150.4.1 | 11-Jul-2007 |
mjf | Sync with head.
|
1.150.2.15 | 23-Oct-2007 |
ad | Sync with head.
|
1.150.2.14 | 16-Sep-2007 |
ad | Checkpoint work in progress on the vnode lifecycle and reference counting stuff. This makes it work properly without kernel_lock and fixes a few quite old bugs. See vfs_subr.c 1.283.2.17 for details.
|
1.150.2.13 | 01-Sep-2007 |
yamt | fix a race and add a comment about it.
|
1.150.2.12 | 24-Aug-2007 |
ad | Sync with buffer cache locking changes. See buf.h/vfs_bio.c for details. Some minor portions are incomplete and needs to be verified as a whole.
|
1.150.2.11 | 21-Aug-2007 |
yamt | fix some races around pagedaemon and uvm_wait. ok'ed by Andrew Doran.
|
1.150.2.10 | 19-Aug-2007 |
ad | - Back out the biodone() changes. - Eliminate B_ERROR (from HEAD).
|
1.150.2.9 | 23-Jun-2007 |
ad | - Lock v_cleanblkhd, v_dirtyblkhd, v_numoutput with the vnode's interlock. Get rid of global_v_numoutput_lock. Partially incomplete as the buffer cache locking doesn't work very well and needs an overhaul. - Some changes to try and make softdep MP safe. Untested.
|
1.150.2.8 | 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.150.2.7 | 09-Jun-2007 |
ad | Sync with head.
|
1.150.2.6 | 08-Jun-2007 |
ad | Sync with head.
|
1.150.2.5 | 13-Apr-2007 |
ad | - Fix a (new) bug where vget tries to acquire freed vnodes' interlocks. - Minor locking fixes.
|
1.150.2.4 | 09-Apr-2007 |
ad | - Add two new arguments to kthread_create1: pri_t pri, bool mpsafe. - Fork kthreads off proc0 as new LWPs, not new processes.
|
1.150.2.3 | 05-Apr-2007 |
ad | Compile fixes.
|
1.150.2.2 | 21-Mar-2007 |
ad | - Replace more simple_locks, and fix up in a few places. - Use condition variables. - LOCK_ASSERT -> KASSERT.
|
1.150.2.1 | 13-Mar-2007 |
ad | Pull in the initial set of changes for the vmlocking branch.
|
1.155.2.1 | 15-Aug-2007 |
skrll | Sync with HEAD.
|
1.156.10.2 | 29-Jul-2007 |
ad | It's not a good idea for device drivers to modify b_flags, as they don't need to understand the locking around that field. Instead of setting B_ERROR, set b_error instead. b_error is 'owned' by whoever completes the I/O request.
|
1.156.10.1 | 29-Jul-2007 |
ad | file genfs_vnops.c was added on branch matt-mips64 on 2007-07-29 12:15:47 +0000
|
1.156.8.2 | 18-Oct-2007 |
yamt | sync with head.
|
1.156.8.1 | 14-Oct-2007 |
yamt | sync with head.
|
1.156.6.3 | 23-Mar-2008 |
matt | sync with HEAD
|
1.156.6.2 | 09-Jan-2008 |
matt | sync with HEAD
|
1.156.6.1 | 06-Nov-2007 |
matt | sync with HEAD
|
1.156.4.2 | 09-Dec-2007 |
jmcneill | Sync with HEAD.
|
1.156.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.158.6.2 | 08-Dec-2007 |
ad | Sync with head.
|
1.158.6.1 | 04-Dec-2007 |
ad | Pull the vmlocking changes into a new branch.
|
1.158.4.2 | 18-Feb-2008 |
mjf | Sync with HEAD.
|
1.158.4.1 | 08-Dec-2007 |
mjf | Sync with HEAD.
|
1.159.4.2 | 19-Jan-2008 |
bouyer | Sync with HEAD
|
1.159.4.1 | 02-Jan-2008 |
bouyer | Sync with HEAD
|
1.164.6.2 | 02-Jun-2008 |
mjf | Sync with HEAD.
|
1.164.6.1 | 03-Apr-2008 |
mjf | Sync with HEAD.
|
1.165.2.1 | 18-May-2008 |
yamt | sync with head.
|
1.166.2.7 | 09-Oct-2010 |
yamt | sync with head
|
1.166.2.6 | 11-Aug-2010 |
yamt | sync with head.
|
1.166.2.5 | 11-Mar-2010 |
yamt | sync with head
|
1.166.2.4 | 18-Jul-2009 |
yamt | sync with head.
|
1.166.2.3 | 16-May-2009 |
yamt | sync with head
|
1.166.2.2 | 04-May-2009 |
yamt | sync with head.
|
1.166.2.1 | 16-May-2008 |
yamt | sync with head.
|
1.167.18.1 | 20-May-2011 |
matt | bring matt-nb5-mips64 up to date with netbsd-5-1-RELEASE (except compat).
|
1.167.16.1 | 07-Sep-2010 |
bouyer | Pull up following revision(s) (requested by chs in ticket #1448): sys/uvm/uvm_pager.h: revision 1.39 via patch sys/miscfs/genfs/genfs_vnops.c: revision 1.183 via patch sys/ufs/ufs/ufs_inode.c: revision 1.83 via patch sys/miscfs/genfs/genfs_io.c: revision 1.40 via patch sys/miscfs/genfs/genfs_node.h: revision 1.20 via patch replace the earlier workaround for PR 40389 with a better fix. the earlier change caused data corruption by freeing pages without invaliding their mappings. instead of the trylock/retry, just take the genfs-node lock before calling VOP_GETPAGES() and pass a new flag to tell it that we're already holding this lock.
|
1.167.14.2 | 23-Jul-2009 |
jym | Sync with HEAD.
|
1.167.14.1 | 13-May-2009 |
jym | Sync with HEAD.
Commit is split, to avoid a "too many arguments" protocol error.
|
1.167.10.1 | 07-Sep-2010 |
bouyer | Pull up following revision(s) (requested by chs in ticket #1448): sys/uvm/uvm_pager.h: revision 1.39 via patch sys/miscfs/genfs/genfs_vnops.c: revision 1.183 via patch sys/ufs/ufs/ufs_inode.c: revision 1.83 via patch sys/miscfs/genfs/genfs_io.c: revision 1.40 via patch sys/miscfs/genfs/genfs_node.h: revision 1.20 via patch replace the earlier workaround for PR 40389 with a better fix. the earlier change caused data corruption by freeing pages without invaliding their mappings. instead of the trylock/retry, just take the genfs-node lock before calling VOP_GETPAGES() and pass a new flag to tell it that we're already holding this lock.
|
1.167.8.1 | 28-Apr-2009 |
skrll | Sync with HEAD.
|
1.176.4.4 | 05-Mar-2011 |
rmind | sync with head
|
1.176.4.3 | 03-Jul-2010 |
rmind | sync with head
|
1.176.4.2 | 30-May-2010 |
rmind | sync with head
|
1.176.4.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.176.2.3 | 22-Oct-2010 |
uebayasi | Sync with HEAD (-D20101022).
|
1.176.2.2 | 17-Aug-2010 |
uebayasi | Sync with HEAD.
|
1.176.2.1 | 30-Apr-2010 |
uebayasi | Sync with HEAD.
|
1.186.6.1 | 23-Jun-2011 |
cherry | Catchup with rmind-uvmplock merge.
|
1.187.6.1 | 05-Apr-2012 |
mrg | sync to latest -current.
|
1.187.2.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.187.2.1 | 17-Apr-2012 |
yamt | sync with head
|
1.189.4.1 | 18-May-2014 |
rmind | sync with head
|
1.189.2.2 | 03-Dec-2017 |
jdolecek | update from HEAD
|
1.189.2.1 | 20-Aug-2014 |
tls | Rebase to HEAD as of a few days ago.
|
1.192.14.1 | 08-Jul-2017 |
snj | Pull up following revision(s) (requested by christos in ticket #1442): sys/kern/kern_event.c: revision 1.92 via patch sys/miscfs/genfs/genfs_vnops.c: revision 1.198 via patch sys/sys/event.h: revision 1.30 via patch Provide EVFILT_WRITE; this is what FreeBSD does and go wants it. Makes go unit tests pass. -- fix file descriptor locking (from joerg). fixes kernel crashes by running go
|
1.192.10.2 | 26-Apr-2017 |
pgoyette | Sync with HEAD
|
1.192.10.1 | 20-Mar-2017 |
pgoyette | Sync with HEAD
|
1.192.8.1 | 08-Jul-2017 |
snj | Pull up following revision(s) (requested by christos in ticket #1442): sys/kern/kern_event.c: revision 1.92 via patch sys/miscfs/genfs/genfs_vnops.c: revision 1.198 via patch sys/sys/event.h: revision 1.30 via patch Provide EVFILT_WRITE; this is what FreeBSD does and go wants it. Makes go unit tests pass. -- fix file descriptor locking (from joerg). fixes kernel crashes by running go
|
1.192.6.2 | 28-Aug-2017 |
skrll | Sync with HEAD
|
1.192.6.1 | 05-Feb-2017 |
skrll | Sync with HEAD
|
1.192.4.1 | 08-Jul-2017 |
snj | Pull up following revision(s) (requested by christos in ticket #1442): sys/kern/kern_event.c: revision 1.92 via patch sys/miscfs/genfs/genfs_vnops.c: revision 1.198 via patch sys/sys/event.h: revision 1.30 via patch Provide EVFILT_WRITE; this is what FreeBSD does and go wants it. Makes go unit tests pass. -- fix file descriptor locking (from joerg). fixes kernel crashes by running go
|
1.193.2.1 | 21-Apr-2017 |
bouyer | Sync with HEAD
|
1.195.4.2 | 05-Jul-2017 |
snj | Pull up following revision(s) (requested by christos in ticket #91): sys/kern/kern_event.c: revision 1.92 sys/miscfs/genfs/genfs_vnops.c: revision 1.198 sys/sys/event.h: revision 1.30 Provide EVFILT_WRITE; this is what FreeBSD does and go wants it. Makes go unit tests pass. -- fix file descriptor locking (from joerg). fixes kernel crashes by running go
|
1.195.4.1 | 04-Jun-2017 |
bouyer | pullup the following revisions, requested by hannken in ticket #2: src/share/man/man9/fstrans.9 1.25 src/sys/kern/vfs_mount.c 1.66 src/sys/kern/vfs_subr.c 1.468 src/sys/kern/vfs_trans.c 1.46 src/sys/kern/vfs_vnode.c 1.94, 1.95, 1.96 src/sys/kern/vnode_if.c 1.105, 1.106 src/sys/kern/vnode_if.sh 1.65, 1.66 src/sys/kern/vnode_if.src 1.76 src/sys/miscfs/genfs/genfs_io.c 1.69 src/sys/miscfs/genfs/genfs_vnops.c 1.196, 1.197 src/sys/miscfs/genfs/layer_extern.h 1.40 src/sys/miscfs/genfs/layer_vfsops.c 1.51 src/sys/miscfs/genfs/layer_vnops.c 1.67 src/sys/miscfs/nullfs/null_vnops.c 1.42 src/sys/miscfs/overlay/overlay_vnops.c 1.24 src/sys/miscfs/umapfs/umap_vnops.c 1.60 src/sys/rump/include/rump/rumpvnode_if.h 1.29, 1.30 src/sys/rump/librump/rumpkern/emul.c 1.182 src/sys/rump/librump/rumpvfs/rumpvnode_if.c 1.29, 1.30 src/sys/sys/fstrans.h 1.11 src/sys/sys/vnode.h 1.278 src/sys/sys/vnode_if.h 1.100, 1.101 src/sys/sys/vnode_impl.h 1.14, 1.15 src/sys/ufs/lfs/lfs_pages.c 1.12
Vnode state, lock and fstrans cleanup: - Rename vnode state "VS_ACTIVE" to "VS_LOADED" and add synthetic state "VS_ACTIVE" to assert a loaded vnode with usecount > 0.
- Redo FSTRANS in vnode_if.c and use it for VOP_LOCK and VOP_UNLOCK.
- Cleanup the genfs lock operations.
- Make "struct vnode_impl" member "vi_lock" a krwlock_t again.
- Remove the lock type argument from fstrans_start and fstrans_start_nowait, remove now unused FSTRANS state "FSTRANS_SUSPENDING".
|
1.199.4.1 | 08-Apr-2020 |
martin | Merge changes from current as of 20200406
|
1.200.2.4 | 29-Feb-2020 |
ad | Sync with head.
|
1.200.2.3 | 24-Jan-2020 |
ad | vnodes:
- Have own v_usecount again, don't share the uvm_object's refcount. - Cluster the members of vnode_t and vnode_impl_t in a cache-concious way. - Go back to having vi_lock directly in vnode_impl_t. - Go back to having v_usecount adjusted with atomics. - Start adjusting v_holdcnt with atomics, too. - Put all the namecache stuff back into vnode_impl_t.
|
1.200.2.2 | 22-Jan-2020 |
ad | Make sure LK_UPGRADE always comes with LK_NOWAIT; dropping the lock in here is unclean and I wonder if it could screw over fstrans.
|
1.200.2.1 | 18-Jan-2020 |
ad | Allow VOP_LOCK(LK_NONE).
|
1.210.6.1 | 01-Aug-2021 |
thorpej | Sync with HEAD.
|
1.219.4.1 | 05-Mar-2023 |
martin | Pull up following revision(s) (requested by hannken in ticket #111):
sys/miscfs/genfs/genfs_vnops.c: revision 1.220
Fix genfs_can_chtimes() to also handle the condition:
If the time pointer is null, then write permission on the file is also sufficient.
From FreeBSD.
Should fix PR kern/57246 "NFS group permissions regression"
|
1.17 | 11-Apr-2017 |
hannken | Field "layerm_vfs" of "struct layer_mount" got superseded by "mnt_lower". Adapt consumers and remove the now unused field.
Ride 7.99.68
|
1.16 | 28-May-2014 |
hannken | branches: 1.16.4; 1.16.8; 1.16.12; Change field "layerm_tag" to correct type "enum vtagtype".
CID 1216449: Mixing enum types
|
1.15 | 25-May-2014 |
hannken | Change layerfs from hashlist to vcache. Make VI_LOCKSHARE public again.
Ride 6.99.43
|
1.14 | 06-Jun-2010 |
hannken | branches: 1.14.18; 1.14.32; Change layered file systems to always pass the locking VOP's down to the leaf file system. Remove now unused member v_vnlock from struct vnode. Welcome to 5.99.30
Discussed on tech-kern.
|
1.13 | 30-Jan-2008 |
ad | branches: 1.13.10; 1.13.30; 1.13.32; Replace struct lock on vnodes with a simpler lock object built on krwlock_t. This is a step towards removing lockmgr and simplifying vnode locking. Discussed on tech-kern.
|
1.12 | 10-Oct-2007 |
ad | branches: 1.12.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.11 | 11-Dec-2005 |
christos | branches: 1.11.30; 1.11.44; 1.11.46; 1.11.48; merge ktrace-lwp.
|
1.10 | 25-Sep-2005 |
jmmv | Follow compat naming tradition: rename compat_export_args to export_args30.
|
1.9 | 23-Sep-2005 |
jmmv | Apply the NFS exports list rototill patch:
- Remove all NFS related stuff from file system specific code. - Drop the vfs_checkexp hook and generalize it in the new nfs_check_export function, thus removing redundancy from all file systems. - Move all NFS export-related stuff from kern/vfs_subr.c to the new file sys/nfs/nfs_export.c. The former was becoming large and its code is always compiled, regardless of the build options. Using the latter, the code is only compiled in when NFSSERVER is enabled. While doing this, also make some functions in nfs_subs.c conditional to NFSSERVER. - Add a new command in nfssvc(2), called NFSSVC_SETEXPORTSLIST, that takes a path and a set of export entries. At the moment it can only clear the exports list or append entries, one by one, but it is done in a way that allows setting the whole set of entries atomically in the future (see the comment in mountd_set_exports_list or in doc/TODO). - Change mountd(8) to use the nfssvc(2) system call instead of mount(2) so that it becomes file system agnostic. In fact, all this whole thing was done to remove a 'XXX' block from this utility! - Change the mount*, newfs and fsck* userland utilities to not deal with NFS exports initialization; done internally by the kernel when initializing the NFS support for each file system. - Implement an interface for VFS (called VFS hooks) so that several kernel subsystems can run arbitrary code upon receipt of specific VFS events. At the moment, this only provides support for unmount and is used to destroy NFS exports lists from the file systems being unmounted, though it has room for extension.
Thanks go to yamt@, chs@, thorpej@, wrstuden@ and others for their comments and advice in the development of this patch.
|
1.8 | 30-Aug-2005 |
xtraeme | Remove __P()
|
1.7 | 24-Jul-2005 |
erh | Provide a sysctl (vfs.layerfs.debug) to control verbose output when LAYERFS_DIAGNOSTIC is turned on.
|
1.6 | 28-May-2004 |
wrstuden | branches: 1.6.12; Since VOP_UPCALL() has been a long time in coming, add this partial fix for layered-file-removal. It will work for the case of accessing and deleting a file through the layered file system. Accessing via the layer and deleting on the underlying still won't work, nor will accessing via complicated structures (like two umap layers over a given file systems).
We still need VOP_UPCALL(), but this is better than things were before.
This patch has been discussed off & on for a while. This incarnation was tested by hannken at netbsd dot org.
|
1.5 | 07-Aug-2003 |
agc | branches: 1.5.2; Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22364, verified by myself.
|
1.4 | 07-Jun-2001 |
wiz | branches: 1.4.22; Typos in comments (misc/13133 by Michael K. Sanders)
|
1.3 | 30-Mar-2000 |
simonb | branches: 1.3.6; Delete redundant decl of layer_node_create(), it's in layer_extern.h.
|
1.2 | 13-Mar-2000 |
soren | Fix doubled 'the's in comments.
|
1.1 | 08-Jul-1999 |
wrstuden | branches: 1.1.2; 1.1.4; Introduce layer library in genfs. This set of files abstracts most of the functionality of nullfs. The latter is now just a mount & unmount routine, and a few tables. umapfs borrow most of this infrastructure.
Both fs's are now nfs-exportable.
All layered fs's share a common format to private mount & private vnode structs (which a particular fs can extend).
Also add genfs_noerr_rele(), a vnode op which will vrele/vput operand vnodes appropriately.
|
1.1.4.1 | 20-Nov-2000 |
bouyer | Update thorpej_scsipi to -current as of a month ago
|
1.1.2.2 | 02-Aug-1999 |
thorpej | Update from trunk.
|
1.1.2.1 | 08-Jul-1999 |
thorpej | file layer.h was added on branch chs-ubc2 on 1999-08-02 22:27:34 +0000
|
1.3.6.1 | 21-Jun-2001 |
nathanw | Catch up to -current.
|
1.4.22.4 | 10-Nov-2005 |
skrll | Sync with HEAD. Here we go again...
|
1.4.22.3 | 21-Sep-2004 |
skrll | Fix the sync with head I botched.
|
1.4.22.2 | 18-Sep-2004 |
skrll | Sync with HEAD.
|
1.4.22.1 | 03-Aug-2004 |
skrll | Sync with HEAD
|
1.5.2.1 | 30-May-2004 |
tron | Pull up revision 1.6 (requested by wrstuden in ticket #424): Since VOP_UPCALL() has been a long time in coming, add this partial fix for layered-file-removal. It will work for the case of accessing and deleting a file through the layered file system. Accessing via the layer and deleting on the underlying still won't work, nor will accessing via complicated structures (like two umap layers over a given file systems). We still need VOP_UPCALL(), but this is better than things were before. This patch has been discussed off & on for a while. This incarnation was tested by hannken at netbsd dot org.
|
1.6.12.3 | 04-Feb-2008 |
yamt | sync with head.
|
1.6.12.2 | 27-Oct-2007 |
yamt | sync with head.
|
1.6.12.1 | 21-Jun-2006 |
yamt | sync with head.
|
1.11.48.1 | 14-Oct-2007 |
yamt | sync with head.
|
1.11.46.2 | 23-Mar-2008 |
matt | sync with HEAD
|
1.11.46.1 | 06-Nov-2007 |
matt | sync with HEAD
|
1.11.44.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.11.30.1 | 13-Mar-2007 |
ad | Pull in the initial set of changes for the vmlocking branch.
|
1.12.4.1 | 18-Feb-2008 |
mjf | Sync with HEAD.
|
1.13.32.1 | 03-Jul-2010 |
rmind | sync with head
|
1.13.30.1 | 17-Aug-2010 |
uebayasi | Sync with HEAD.
|
1.13.10.1 | 11-Aug-2010 |
yamt | sync with head.
|
1.14.32.1 | 10-Aug-2014 |
tls | Rebase.
|
1.14.18.2 | 03-Dec-2017 |
jdolecek | update from HEAD
|
1.14.18.1 | 20-Aug-2014 |
tls | Rebase to HEAD as of a few days ago.
|
1.16.12.1 | 21-Apr-2017 |
bouyer | Sync with HEAD
|
1.16.8.1 | 26-Apr-2017 |
pgoyette | Sync with HEAD
|
1.16.4.1 | 28-Aug-2017 |
skrll | Sync with HEAD
|
1.41 | 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.40 | 04-Jun-2017 |
hannken | branches: 1.40.6; 1.40.12; Locking a layer vnode using the regular bypass routine is no longer racy. Undo the change from 2017-03-30 11:16:52, commitid eurqbzuGxGRlryLz and make vi_lock a krwlock_t again.
|
1.39 | 30-Mar-2017 |
hannken | branches: 1.39.6; Locking a layer vnode is racy as it may become reclaimed before calling the operation on the lower vnode.
Replace vi_lock with a rw_obj and change layered file systems to share the lock with the lower vnode.
Layered file systems now use genfs_lock()/_unlock/_islocked().
Welcome to 7.99.67
|
1.38 | 17-Feb-2017 |
hannken | Add generic genfs_suspendctl() and use it for all file systems. Layered file systems need work.
|
1.37 | 27-Jan-2017 |
hannken | Handle v_writecount from layer_open(), layer_close() and layer_revoke() so lower file system vnodes get marked as open for writing.
|
1.36 | 25-May-2014 |
hannken | branches: 1.36.4; 1.36.8; 1.36.12; Change layerfs from hashlist to vcache. Make VI_LOCKSHARE public again.
Ride 6.99.43
|
1.35 | 27-Feb-2014 |
hannken | branches: 1.35.2; The current implementation of vn_lock() is racy. Modification of the vnode operations vector for active vnodes is unsafe because it is not known whether deadfs or the original file system will be called.
- Pass down LK_RETRY to the lock operation (hint for deadfs only).
- Change deadfs lock operation to return ENOENT if LK_RETRY is unset.
- Change all other lock operations to check for dead vnode once the vnode is locked and unlock and return ENOENT in this case.
With these changes in place vnode lock operations will never succeed after vclean() has marked the vnode as VI_XLOCK and before vclean() has changed the operations vector.
Adresses PR kern/37706 (Forced unmount of file systems is unsafe)
Discussed on tech-kern.
Welcome to 6.99.33
|
1.34 | 01-Feb-2012 |
dholland | branches: 1.34.6; 1.34.10; Change the syscall API for quotas over to the new non-proplib one.
- struct vfs_quotactl_args -> struct quotactl_args - add sys/stdint.h to sys/quotactl.h for clean userland build - install sys/quotactl.h in /usr/include - update set lists for same - add new marshalling code in libquota - add new unmarshalling code in vfs_syscalls.c - discard proplib interpreter code in vfs_quotactl.c - add dispatching code for the 14 quotactl ops in vfs_quotactl.c - mark the proplib quotactl syscall obsolete - add a new syscall number for the new quotactl syscall - change the name of the syscall to __quotactl() - remove the decl of the old quotactl from quota/quotaprop.h - add a decl of the new quotactl to sys/quotactl.h - update the libc build - update ktruss - remove proplib marshalling code from libquota - update copy of syscall table in gdb ppc sources - hack rumphijack to accomodate new quotactl name (as I recall, pooka wanted such a name change to simplify something, but I don't really see what/how)
This change appears to require a kernel version bump for rumpish reasons.
|
1.33 | 29-Jan-2012 |
dholland | Remove the extra op argument to VFS_QUOTACTL() - the op is now stored purely in the args structure.
This change requires a kernel version bump.
|
1.32 | 29-Jan-2012 |
dholland | Introduce struct vfs_quotactl_args. Use it.
This change uglifies vfs_quotactl some in order to make room for moving operation-specific but FS-independent logic out of ufs_quota.c.
Note: this change requires a kernel version bump.
|
1.31 | 29-Jan-2012 |
dholland | Move the proplib-based quota command dispatching (that is, the code that knows the magic string names for the allowed actions) out of UFS-specific code and to fs-independent code.
This introduces QUOTACTL_* operation codes and changes the signature of VFS_QUOTACTL() again for compile safety.
Note: this change requires a kernel version bump.
|
1.30 | 29-Jan-2012 |
dholland | Move the code for iterating over the multiple RPC calls in a quota proplib XML packet to vfs_quotactl.c out of sys/ufs/ufs.
Add a dummy extra arg to VFS_QUOTACTL for compile safety.
Note: this change requires a kernel version bump.
|
1.29 | 11-Jul-2011 |
hannken | branches: 1.29.2; 1.29.6; Change VOP_BWRITE() to take a vnode as its first argument like all other VOPs do. Layered file systems no longer have to modify bp->b_vp and run into trouble when an async VOP_BWRITE() uses the wrong vnode.
- change all occurences of VOP_BWRITE(bp) to VOP_BWRITE(bp->b_vp, bp). - remove layer_bwrite(). - welcome to 5.99.55
Adresses PR kern/38762 panic: vwakeup: neg numoutput
No objections from tech-kern@.
|
1.28 | 06-Mar-2011 |
bouyer | merge the bouyer-quota2 branch. This adds a new on-disk format to store disk quota usage and limits, integrated with ffs metadata. Usage is checked by fsck_ffs (no more quotacheck) and is covered by the WAPBL journal. Enabled with kernel option QUOTA2 (added where QUOTA was enabled in kernel config files), turned on with tunefs(8) on a per-filesystem basis. mount_mfs(8) can also turn quotas on.
See http://mail-index.netbsd.org/tech-kern/2011/02/19/msg010025.html for details.
|
1.27 | 10-Jan-2011 |
hannken | branches: 1.27.2; 1.27.4; Add layer_revoke() that adjusts the lower vnode use count to be at least as high as the upper vnode count before passing down the VOP_REVOKE().
This way vclean() check for active (vp->v_usecount > 1) vnodes gets it right.
Should fix PR kern/43456.
|
1.26 | 02-Jul-2010 |
hannken | LK_INTERLOCK is no longer a valid flag for VOP_LOCK(). This makes layer_*lock*() obsolete. Remove them and handle lock operations with the generic bypass function.
Ride 5.99.34.
|
1.25 | 02-Jul-2010 |
rmind | Slightly clean-up layerfs and nullfs: update the big description more to the reality (remove duplicate one in nullfs, merge some differences from it), KNF, improve and update some comments, add few KASSERT()s, remove unused declarations, avoid double inclusion of headers, misc.
No functional changes.
|
1.24 | 28-Jan-2008 |
dholland | branches: 1.24.10; 1.24.30; 1.24.32; 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.23 | 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.22 | 13-Jul-2006 |
martin | branches: 1.22.28; 1.22.30; 1.22.36; Fix alignement problems for fhandle_t, exposed by gcc4.1.
While touching all vptofh/fhtovp functions, get rid of VFS_MAXFIDSIZ, version the getfh(2) syscall and explicitly pass the size available in the filehandle from userland.
Discussed on tech-kern, with lots of help from yamt (thanks!).
|
1.21 | 14-May-2006 |
elad | branches: 1.21.4; integrate kauth.
|
1.20 | 11-Dec-2005 |
christos | branches: 1.20.4; 1.20.6; 1.20.8; 1.20.10; 1.20.12; merge ktrace-lwp.
|
1.19 | 23-Sep-2005 |
jmmv | Apply the NFS exports list rototill patch:
- Remove all NFS related stuff from file system specific code. - Drop the vfs_checkexp hook and generalize it in the new nfs_check_export function, thus removing redundancy from all file systems. - Move all NFS export-related stuff from kern/vfs_subr.c to the new file sys/nfs/nfs_export.c. The former was becoming large and its code is always compiled, regardless of the build options. Using the latter, the code is only compiled in when NFSSERVER is enabled. While doing this, also make some functions in nfs_subs.c conditional to NFSSERVER. - Add a new command in nfssvc(2), called NFSSVC_SETEXPORTSLIST, that takes a path and a set of export entries. At the moment it can only clear the exports list or append entries, one by one, but it is done in a way that allows setting the whole set of entries atomically in the future (see the comment in mountd_set_exports_list or in doc/TODO). - Change mountd(8) to use the nfssvc(2) system call instead of mount(2) so that it becomes file system agnostic. In fact, all this whole thing was done to remove a 'XXX' block from this utility! - Change the mount*, newfs and fsck* userland utilities to not deal with NFS exports initialization; done internally by the kernel when initializing the NFS support for each file system. - Implement an interface for VFS (called VFS hooks) so that several kernel subsystems can run arbitrary code upon receipt of specific VFS events. At the moment, this only provides support for unmount and is used to destroy NFS exports lists from the file systems being unmounted, though it has room for extension.
Thanks go to yamt@, chs@, thorpej@, wrstuden@ and others for their comments and advice in the development of this patch.
|
1.18 | 30-Aug-2005 |
xtraeme | Remove __P()
|
1.17 | 30-Jun-2004 |
hannken | branches: 1.17.12; Do LAYERFS_REMOVED for vop_rmdir.
Reviewed by: Bill Studenmund <wrstuden@netbsd.org>
|
1.16 | 07-Jun-2004 |
yamt | do a LAYERFS_REMOVED hack for vop_rename as well.
|
1.15 | 29-May-2004 |
wrstuden | Add layerfs_snapshot() as a handler routine for VFS_SNAPSHOT() calls through a layered file system.
Note: we don't actually support snapshots through a layered file system, and this routine returns an error. However we: 1) have clearly documented what needs fixing (which isn't trivial to fix) and 2) if we do fix this, all layered file systems can take advantage of it at once.
|
1.14 | 28-May-2004 |
wrstuden | Since VOP_UPCALL() has been a long time in coming, add this partial fix for layered-file-removal. It will work for the case of accessing and deleting a file through the layered file system. Accessing via the layer and deleting on the underlying still won't work, nor will accessing via complicated structures (like two umap layers over a given file systems).
We still need VOP_UPCALL(), but this is better than things were before.
This patch has been discussed off & on for a while. This incarnation was tested by hannken at netbsd dot org.
|
1.13 | 27-Apr-2004 |
jrf | First pass for some caddr_t removal and changes to get rid of it where we no longer use and/or need it
- removed casts from unionfs, deadfs and fdesc (there are more to hunt down still) - changed vfs_quotactl args argumet from caddr_t to void * - changed vfs_quotactl structures/callers to reflect the api change
Compiled fine and ran for about a day. Approved/reviewed by christos@netbsd.org and gimpy@netbsd.org.
|
1.12 | 21-Apr-2004 |
christos | Replace the statfs() family of system calls with statvfs(). Retain binary compatibility.
|
1.11 | 25-Jan-2004 |
hannken | branches: 1.11.2; Make VOP_STRATEGY(bp) a real VOP as discussed on tech-kern.
VOP_STRATEGY(bp) is replaced by one of two new functions:
- VOP_STRATEGY(vp, bp) Call the strategy routine of vp for bp. - DEV_STRATEGY(bp) Call the d_strategy routine of bp->b_dev for bp.
DEV_STRATEGY(bp) is used only for block-to-block device situations.
|
1.10 | 04-Dec-2003 |
atatat | Dynamic sysctl.
Gone are the old kern_sysctl(), cpu_sysctl(), hw_sysctl(), vfs_sysctl(), etc, routines, along with sysctl_int() et al. Now all nodes are registered with the tree, and nodes can be added (or removed) easily, and I/O to and from the tree is handled generically.
Since the nodes are registered with the tree, the mapping from name to number (and back again) can now be discovered, instead of having to be hard coded. Adding new nodes to the tree is likewise much simpler -- the new infrastructure handles almost all the work for simple types, and just about anything else can be done with a small helper function.
All existing nodes are where they were before (numerically speaking), so all existing consumers of sysctl information should notice no difference.
PS - I'm sorry, but there's a distinct lack of documentation at the moment. I'm working on sysctl(3/8/9) right now, and I promise to watch out for buses.
|
1.9 | 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.8 | 29-Jun-2003 |
fvdl | branches: 1.8.2; Back out the lwp/ktrace changes. They contained a lot of colateral damage, and need to be examined and discussed more.
|
1.7 | 29-Jun-2003 |
thorpej | Undo part of the ktrace/lwp changes. In particular: * Remove the "lwp *" argument that was added to vget(). Turns out that nothing actually used it! * Remove the "lwp *" arguments that were added to VFS_ROOT(), VFS_VGET(), and VFS_FHTOVP(); all they did was pass it to vget() (which, as noted above, didn't use it). * Remove all of the "lwp *" arguments to internal functions that were added just to appease the above.
|
1.6 | 28-Jun-2003 |
darrenr | Pass lwp pointers throughtout the kernel, as required, so that the lwpid can be inserted into ktrace records. The general change has been to replace "struct proc *" with "struct lwp *" in various function prototypes, pass the lwp through and use l_proc to get the process pointer when needed.
Bump the kernel rev up to 1.6V
|
1.5 | 06-Dec-2001 |
chs | add VOP_GETPAGES and VOP_PUTPAGES methods for layered filesystems. drop the interlock on the upper layer, acquire the interlock on the lower layer.
|
1.4 | 07-Jun-2001 |
wiz | branches: 1.4.2; Typos in comments (misc/13133 by Michael K. Sanders)
|
1.3 | 16-Mar-2000 |
jdolecek | branches: 1.3.6; Add new VFS op routine - vfs_done and call it on filesystem detach in vfs_detach(). vfs_done may free global filesystem's resources, typically those allocated in respective filesystem's init function. Needed so those filesystems which went in via LKM have a chance to clean after themselves before unloading. This fixes random panics when LKM for filesystem using pools was loaded and unloaded several times.
For each leaf filesystem, add appropriate vfs_done routine.
|
1.2 | 13-Mar-2000 |
soren | Fix doubled 'the's in comments.
|
1.1 | 08-Jul-1999 |
wrstuden | branches: 1.1.2; 1.1.4; Introduce layer library in genfs. This set of files abstracts most of the functionality of nullfs. The latter is now just a mount & unmount routine, and a few tables. umapfs borrow most of this infrastructure.
Both fs's are now nfs-exportable.
All layered fs's share a common format to private mount & private vnode structs (which a particular fs can extend).
Also add genfs_noerr_rele(), a vnode op which will vrele/vput operand vnodes appropriately.
|
1.1.4.1 | 20-Nov-2000 |
bouyer | Update thorpej_scsipi to -current as of a month ago
|
1.1.2.2 | 02-Aug-1999 |
thorpej | Update from trunk.
|
1.1.2.1 | 08-Jul-1999 |
thorpej | file layer_extern.h was added on branch chs-ubc2 on 1999-08-02 22:27:34 +0000
|
1.3.6.2 | 08-Jan-2002 |
nathanw | Catch up to -current.
|
1.3.6.1 | 21-Jun-2001 |
nathanw | Catch up to -current.
|
1.4.2.1 | 10-Jan-2002 |
thorpej | Sync kqueue branch with -current.
|
1.8.2.6 | 10-Nov-2005 |
skrll | Sync with HEAD. Here we go again...
|
1.8.2.5 | 21-Sep-2004 |
skrll | Fix the sync with head I botched.
|
1.8.2.4 | 18-Sep-2004 |
skrll | Sync with HEAD.
|
1.8.2.3 | 24-Aug-2004 |
skrll | Undo part of the ktrace/lwp changes. In particular: * Remove the "lwp *" argument that was added to vget(). Turns out that nothing actually used it! * Remove the "lwp *" arguments that were added to VFS_ROOT(), VFS_VGET(), and VFS_FHTOVP(); all they did was pass it to vget() (which, as noted above, didn't use it). * Remove all of the "lwp *" arguments to internal functions that were added just to appease the above.
|
1.8.2.2 | 03-Aug-2004 |
skrll | Sync with HEAD
|
1.8.2.1 | 02-Jul-2003 |
darrenr | Apply the aborted ktrace-lwp changes to a specific branch. This is just for others to review, I'm concerned that patch fuziness may have resulted in some errant code being generated but I'll look at that later by comparing the diff from the base to the branch with the file I attempt to apply to it. This will, at the very least, put the changes in a better context for others to review them and attempt to tinker with removing passing of 'struct lwp' through the kernel.
|
1.11.2.3 | 02-Jul-2004 |
he | Pull up revision 1.17 (requested by hannken in ticket #575): Do LAYERFS_REMOVED for vop_rmdir.
|
1.11.2.2 | 21-Jun-2004 |
tron | Pull up revision 1.16 (requested by yamt in ticket #512): do a LAYERFS_REMOVED hack for vop_rename as well.
|
1.11.2.1 | 30-May-2004 |
tron | Pull up revision 1.14 (requested by wrstuden in ticket #424): Since VOP_UPCALL() has been a long time in coming, add this partial fix for layered-file-removal. It will work for the case of accessing and deleting a file through the layered file system. Accessing via the layer and deleting on the underlying still won't work, nor will accessing via complicated structures (like two umap layers over a given file systems). We still need VOP_UPCALL(), but this is better than things were before. This patch has been discussed off & on for a while. This incarnation was tested by hannken at netbsd dot org.
|
1.17.12.4 | 04-Feb-2008 |
yamt | sync with head.
|
1.17.12.3 | 07-Dec-2007 |
yamt | sync with head
|
1.17.12.2 | 30-Dec-2006 |
yamt | sync with head.
|
1.17.12.1 | 21-Jun-2006 |
yamt | sync with head.
|
1.20.12.1 | 24-May-2006 |
tron | Merge 2006-05-24 NetBSD-current into the "peter-altq" branch.
|
1.20.10.2 | 20-Apr-2006 |
christos | kauth_cred_t -> struct kauth_cred;
|
1.20.10.1 | 08-Mar-2006 |
elad | Adapt to kernel authorization KPI.
|
1.20.8.2 | 11-Aug-2006 |
yamt | sync with head
|
1.20.8.1 | 24-May-2006 |
yamt | sync with head.
|
1.20.6.1 | 01-Jun-2006 |
kardel | Sync with head.
|
1.20.4.1 | 09-Sep-2006 |
rpaulo | sync with head
|
1.21.4.1 | 13-Jul-2006 |
gdamore | Merge from HEAD.
|
1.22.36.2 | 18-Feb-2008 |
mjf | Sync with HEAD.
|
1.22.36.1 | 08-Dec-2007 |
mjf | Sync with HEAD.
|
1.22.30.2 | 23-Mar-2008 |
matt | sync with HEAD
|
1.22.30.1 | 09-Jan-2008 |
matt | sync with HEAD
|
1.22.28.1 | 27-Nov-2007 |
joerg | Sync with HEAD. amd64 Xen support needs testing.
|
1.24.32.3 | 21-Apr-2011 |
rmind | sync with head
|
1.24.32.2 | 05-Mar-2011 |
rmind | sync with head
|
1.24.32.1 | 03-Jul-2010 |
rmind | sync with head
|
1.24.30.1 | 17-Aug-2010 |
uebayasi | Sync with HEAD.
|
1.24.10.1 | 11-Aug-2010 |
yamt | sync with head.
|
1.27.4.1 | 20-Jan-2011 |
bouyer | Snapshot of work in progress on a modernised disk quota system: - new quotactl syscall (versionned for backward compat), which takes as parameter a path to a mount point, and a prop_dictionary (in plistref format) describing commands and arguments. For each command, status and data are returned as a prop_dictionary. quota commands features will be added to take advantage of this, exporting quota data or getting quota commands as plists.
- new on disk-format storage (all 64bit wide), integrated to metadata for ffs (and playing nicely with wapbl). Quotas are enabled on a ffs filesystem via superblock flags. tunefs(8) can enable or disable quotas. On a quota-enabled filesystem, fsck_ffs(8) will track per-uid/gid block and inode usages, and will check and update quotas in Pass 6. quota usage and limits are stored in unliked files (one for users, one for groups)l fsck_ffs(8) will create the files if needed, or free them if needed. This means that after enabling or disabling quotas on a filesystem; a fsck_ffs(8) run is required. quotacheck(8) is not needed any more, on a unclean shutdown fsck or journal replay will take care of fixing quotas. newfs(8) can create a ready-to-mount quota-enabled filesystem (superblock flags are set and quota inodes are created). Other new features or semantic changes: - default quota datas, applied to users or groups which don't already have a quota entry - per-user/group grace time (instead of a filesystem global one) - 0 really means "nothing allowed at all", not "no limit". If you want "no limit", set the limit to UQUAD_MAX (tools will understand "unlimited" and "-")
A quota file is structured as follow: it starts with a header, containing a few per-filesystem values, and the default quota limits. Quota entries are linked together as a simple list, each entry has a pointer (as an offset withing the file) to the next. The header has a pointer to a list of free quota entries, and a hash table of in-use entries. The size of the hash table depends on the filesystem block size (header+hash table should fit in the first block). The file is not sparse and is a multiple of filesystem block size (when the free quota entry list is empty a new filesystem block is allocated). quota entries to not cross filesystem block boundaries.
In memory, the kernel keeps a cache of recently used quota entries as a reference to the block number, and offset withing the block. The quota entry itself is keept in the buf cache.
fsck_ffs(8), tunefs(8) and newfs(8) supports are completed (with related atf tests :) The kernel can update disk usage and report it via quotactl(2).
Todo: enforce quotas limits (limits are not checked by kernel yet) update repquota, edquota and rpc.rquotad to the new world implement compat_50_quotactl ioctl. update quotactl(2) man page
fsck_ffs required fixes so that allocating new blocks or inodes will properly update the superblock and cg sumaries. This was not an issue up to now because superblock and cg sumaries check happened last, but now allocations or frees can happen in pass 6.
|
1.27.2.1 | 06-Jun-2011 |
jruoho | Sync with HEAD.
|
1.29.6.1 | 18-Feb-2012 |
mrg | merge to -current.
|
1.29.2.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.29.2.1 | 17-Apr-2012 |
yamt | sync with head
|
1.34.10.1 | 18-May-2014 |
rmind | sync with head
|
1.34.6.2 | 03-Dec-2017 |
jdolecek | update from HEAD
|
1.34.6.1 | 20-Aug-2014 |
tls | Rebase to HEAD as of a few days ago.
|
1.35.2.1 | 10-Aug-2014 |
tls | Rebase.
|
1.36.12.1 | 21-Apr-2017 |
bouyer | Sync with HEAD
|
1.36.8.2 | 26-Apr-2017 |
pgoyette | Sync with HEAD
|
1.36.8.1 | 20-Mar-2017 |
pgoyette | Sync with HEAD
|
1.36.4.2 | 28-Aug-2017 |
skrll | Sync with HEAD
|
1.36.4.1 | 05-Feb-2017 |
skrll | Sync with HEAD
|
1.39.6.1 | 04-Jun-2017 |
bouyer | pullup the following revisions, requested by hannken in ticket #2: src/share/man/man9/fstrans.9 1.25 src/sys/kern/vfs_mount.c 1.66 src/sys/kern/vfs_subr.c 1.468 src/sys/kern/vfs_trans.c 1.46 src/sys/kern/vfs_vnode.c 1.94, 1.95, 1.96 src/sys/kern/vnode_if.c 1.105, 1.106 src/sys/kern/vnode_if.sh 1.65, 1.66 src/sys/kern/vnode_if.src 1.76 src/sys/miscfs/genfs/genfs_io.c 1.69 src/sys/miscfs/genfs/genfs_vnops.c 1.196, 1.197 src/sys/miscfs/genfs/layer_extern.h 1.40 src/sys/miscfs/genfs/layer_vfsops.c 1.51 src/sys/miscfs/genfs/layer_vnops.c 1.67 src/sys/miscfs/nullfs/null_vnops.c 1.42 src/sys/miscfs/overlay/overlay_vnops.c 1.24 src/sys/miscfs/umapfs/umap_vnops.c 1.60 src/sys/rump/include/rump/rumpvnode_if.h 1.29, 1.30 src/sys/rump/librump/rumpkern/emul.c 1.182 src/sys/rump/librump/rumpvfs/rumpvnode_if.c 1.29, 1.30 src/sys/sys/fstrans.h 1.11 src/sys/sys/vnode.h 1.278 src/sys/sys/vnode_if.h 1.100, 1.101 src/sys/sys/vnode_impl.h 1.14, 1.15 src/sys/ufs/lfs/lfs_pages.c 1.12
Vnode state, lock and fstrans cleanup: - Rename vnode state "VS_ACTIVE" to "VS_LOADED" and add synthetic state "VS_ACTIVE" to assert a loaded vnode with usecount > 0.
- Redo FSTRANS in vnode_if.c and use it for VOP_LOCK and VOP_UNLOCK.
- Cleanup the genfs lock operations.
- Make "struct vnode_impl" member "vi_lock" a krwlock_t again.
- Remove the lock type argument from fstrans_start and fstrans_start_nowait, remove now unused FSTRANS state "FSTRANS_SUSPENDING".
|
1.40.12.1 | 17-Jan-2020 |
ad | Sync with head.
|
1.40.6.1 | 08-Apr-2020 |
martin | Merge changes from current as of 20200406
|
1.39 | 10-Apr-2022 |
andvar | fix various typos in comments and output/log messages.
|
1.38 | 13-Apr-2020 |
ad | 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.
|
1.37 | 09-Nov-2014 |
maxv | branches: 1.37.20; 1.37.30; Do not uselessly include <sys/malloc.h>.
|
1.36 | 25-May-2014 |
hannken | branches: 1.36.2; Change layerfs from hashlist to vcache. Make VI_LOCKSHARE public again.
Ride 6.99.43
|
1.35 | 10-Feb-2014 |
hannken | branches: 1.35.2; Change layerfs_vget(), layerfs_fhtovp() and the various layer xxx_mount() functions to unlock/relock the node for the call to layer_node_create().
Finally remove dirty hacks (LK_NOWAIT, kpause) from layer_node_find().
|
1.34 | 09-Feb-2014 |
hannken | When layer_node_alloc() finds another thread already inserted the node into the hashlist and discards the now unneeded node it will raise a panic "dead but not clean".
Reorder the initialization and use ungetnewvnode() to discard the node.
|
1.33 | 29-Jan-2014 |
hannken | Allow layer_node_create() with unlocked lower node and change layer_bypass() to enter nodes from creation operations unlocked.
|
1.32 | 12-Jun-2011 |
rmind | branches: 1.32.2; 1.32.12; 1.32.16; 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.31 | 21-Jul-2010 |
hannken | branches: 1.31.6; Make holding v_interlock mandatory for callers of vget().
Announced some time ago on tech-kern.
|
1.30 | 02-Jul-2010 |
rmind | Slightly clean-up layerfs and nullfs: update the big description more to the reality (remove duplicate one in nullfs, merge some differences from it), KNF, improve and update some comments, add few KASSERT()s, remove unused declarations, avoid double inclusion of headers, misc.
No functional changes.
|
1.29 | 06-Jun-2010 |
hannken | Change layered file systems to always pass the locking VOP's down to the leaf file system. Remove now unused member v_vnlock from struct vnode. Welcome to 5.99.30
Discussed on tech-kern.
|
1.28 | 08-Jan-2010 |
pooka | branches: 1.28.2; 1.28.4; The VATTR_NULL/VREF/VHOLD/HOLDRELE() macros lost their will to live years ago when the kernel was modified to not alter ABI based on DIAGNOSTIC, and now just call the respective function interfaces (in lowercase). Plenty of mix'n match upper/lowercase has creeped into the tree since then. Nuke the macros and convert all callsites to lowercase.
no functional change
|
1.27 | 15-Mar-2009 |
cegger | ansify function definitions
|
1.26 | 14-Mar-2009 |
dsl | Change about 4500 of the K&R function definitions to ANSI ones. There are still about 1600 left, but they have ',' or /* ... */ in the actual variable definitions - which my awk script doesn't handle. There are also many that need () -> (void). (The script does handle misordered arguments.)
|
1.25 | 24-Jan-2008 |
ad | branches: 1.25.10; 1.25.18; 1.25.24; specfs changes for PR kern/37717 (raidclose() is no longer called on shutdown). There are still problems with device access and a PR will be filed.
- Kill checkalias(). Allow multiple vnodes to reference a single device.
- Don't play dangerous tricks with block vnodes to ensure that only one vnode can describe a block device. Instead, prohibit concurrent opens of block devices. As a bonus remove the unreliable code that prevents multiple file system mounts on the same device. It's no longer needed.
- Track opens by vnode and by device. Issue cdev_close() when the last open goes away, instead of abusing vnode::v_usecount to tell if the device is open.
|
1.24 | 23-Jan-2008 |
ad | layer_node_find: if we find a node being cleaned out, then ignore it and continue. A thread trying to clean out the extant layer vnode needs to acquire the shared lock (i.e. the lower vnode's lock), which our caller already holds. To allow the cleaning to succeed the current thread must make progress. So, for a brief time more than one vnode in a layered file system may refer to a single vnode in the lower file system.
|
1.23 | 02-Jan-2008 |
ad | Merge vmlocking2 to head.
|
1.22 | 10-Oct-2007 |
ad | branches: 1.22.4; 1.22.6; 1.22.10; 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.21 | 09-Dec-2006 |
chs | branches: 1.21.6; 1.21.18; 1.21.20; 1.21.22; 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.20 | 25-Nov-2006 |
elad | branches: 1.20.2; Part of PR/33280: Christian Ehrhardt: In the error path (which probably can't happen) lmp->layerm_hashlock is not unlocked.
|
1.19 | 24-Nov-2006 |
wiz | s/existance/existence/, from Zafer.
|
1.18 | 11-Dec-2005 |
christos | branches: 1.18.20; 1.18.22; merge ktrace-lwp.
|
1.17 | 30-Aug-2005 |
xtraeme | Remove __P()
|
1.16 | 24-Jul-2005 |
erh | Provide a sysctl (vfs.layerfs.debug) to control verbose output when LAYERFS_DIAGNOSTIC is turned on.
|
1.15 | 07-Aug-2003 |
agc | branches: 1.15.16; Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22364, verified by myself.
|
1.14 | 29-Jun-2003 |
fvdl | branches: 1.14.2; Back out the lwp/ktrace changes. They contained a lot of colateral damage, and need to be examined and discussed more.
|
1.13 | 29-Jun-2003 |
thorpej | Undo part of the ktrace/lwp changes. In particular: * Remove the "lwp *" argument that was added to vget(). Turns out that nothing actually used it! * Remove the "lwp *" arguments that were added to VFS_ROOT(), VFS_VGET(), and VFS_FHTOVP(); all they did was pass it to vget() (which, as noted above, didn't use it). * Remove all of the "lwp *" arguments to internal functions that were added just to appease the above.
|
1.12 | 28-Jun-2003 |
darrenr | Pass lwp pointers throughtout the kernel, as required, so that the lwpid can be inserted into ktrace records. The general change has been to replace "struct proc *" with "struct lwp *" in various function prototypes, pass the lwp through and use l_proc to get the process pointer when needed.
Bump the kernel rev up to 1.6V
|
1.11 | 20-Feb-2002 |
enami | Don't use MALLOC for variable sized allocation.
|
1.10 | 15-Nov-2001 |
lukem | don't need <sys/types.h> when including <sys/param.h>
|
1.9 | 10-Nov-2001 |
lukem | add RCSIDs
|
1.8 | 07-Jun-2001 |
wiz | branches: 1.8.2; 1.8.6; Typos in comments (misc/13133 by Michael K. Sanders)
|
1.7 | 27-Nov-2000 |
chs | branches: 1.7.2; Initial integration of the Unified Buffer Cache project.
|
1.6 | 16-Mar-2000 |
jdolecek | Add new VFS op routine - vfs_done and call it on filesystem detach in vfs_detach(). vfs_done may free global filesystem's resources, typically those allocated in respective filesystem's init function. Needed so those filesystems which went in via LKM have a chance to clean after themselves before unloading. This fixes random panics when LKM for filesystem using pools was loaded and unloaded several times.
For each leaf filesystem, add appropriate vfs_done routine.
|
1.5 | 13-Mar-2000 |
soren | Fix doubled 'the's in comments.
|
1.4 | 25-Oct-1999 |
wrstuden | Since we don't put layered device nodes in the spechash hash chains, initialize vp->v_hashchain to NULL.
|
1.3 | 15-Jul-1999 |
wrstuden | branches: 1.3.2; 1.3.4; 1.3.6; 1.3.8; Define VLAYER and make layered fs's set this flag when creating their vnodes.
getnewvnode now checks this bit, and it if's set makes sure a vnode's not locked before removing it from the free list.
Closes PR 7954 by Alan Barrett <apb@iafrica.com>.
|
1.2 | 12-Jul-1999 |
wrstuden | Fix tyop pointed out by Chuck Silvers <chuq@chuq.com>.
|
1.1 | 08-Jul-1999 |
wrstuden | Introduce layer library in genfs. This set of files abstracts most of the functionality of nullfs. The latter is now just a mount & unmount routine, and a few tables. umapfs borrow most of this infrastructure.
Both fs's are now nfs-exportable.
All layered fs's share a common format to private mount & private vnode structs (which a particular fs can extend).
Also add genfs_noerr_rele(), a vnode op which will vrele/vput operand vnodes appropriately.
|
1.3.8.1 | 27-Dec-1999 |
wrstuden | Pull up to last week's -current.
|
1.3.6.1 | 15-Nov-1999 |
fvdl | Sync with -current
|
1.3.4.2 | 08-Dec-2000 |
bouyer | Sync with HEAD.
|
1.3.4.1 | 20-Nov-2000 |
bouyer | Update thorpej_scsipi to -current as of a month ago
|
1.3.2.2 | 02-Aug-1999 |
thorpej | Update from trunk.
|
1.3.2.1 | 15-Jul-1999 |
thorpej | file layer_subr.c was added on branch chs-ubc2 on 1999-08-02 22:27:34 +0000
|
1.7.2.4 | 28-Feb-2002 |
nathanw | Catch up to -current.
|
1.7.2.3 | 08-Jan-2002 |
nathanw | Catch up to -current.
|
1.7.2.2 | 14-Nov-2001 |
nathanw | Catch up to -current.
|
1.7.2.1 | 21-Jun-2001 |
nathanw | Catch up to -current.
|
1.8.6.1 | 12-Nov-2001 |
thorpej | Sync the thorpej-mips-cache branch with -current.
|
1.8.2.2 | 16-Mar-2002 |
jdolecek | Catch up with -current.
|
1.8.2.1 | 10-Jan-2002 |
thorpej | Sync kqueue branch with -current.
|
1.14.2.6 | 10-Nov-2005 |
skrll | Sync with HEAD. Here we go again...
|
1.14.2.5 | 21-Sep-2004 |
skrll | Fix the sync with head I botched.
|
1.14.2.4 | 18-Sep-2004 |
skrll | Sync with HEAD.
|
1.14.2.3 | 24-Aug-2004 |
skrll | Undo part of the ktrace/lwp changes. In particular: * Remove the "lwp *" argument that was added to vget(). Turns out that nothing actually used it! * Remove the "lwp *" arguments that were added to VFS_ROOT(), VFS_VGET(), and VFS_FHTOVP(); all they did was pass it to vget() (which, as noted above, didn't use it). * Remove all of the "lwp *" arguments to internal functions that were added just to appease the above.
|
1.14.2.2 | 03-Aug-2004 |
skrll | Sync with HEAD
|
1.14.2.1 | 02-Jul-2003 |
darrenr | Apply the aborted ktrace-lwp changes to a specific branch. This is just for others to review, I'm concerned that patch fuziness may have resulted in some errant code being generated but I'll look at that later by comparing the diff from the base to the branch with the file I attempt to apply to it. This will, at the very least, put the changes in a better context for others to review them and attempt to tinker with removing passing of 'struct lwp' through the kernel.
|
1.15.16.5 | 04-Feb-2008 |
yamt | sync with head.
|
1.15.16.4 | 21-Jan-2008 |
yamt | sync with head
|
1.15.16.3 | 27-Oct-2007 |
yamt | sync with head.
|
1.15.16.2 | 30-Dec-2006 |
yamt | sync with head.
|
1.15.16.1 | 21-Jun-2006 |
yamt | sync with head.
|
1.18.22.1 | 10-Dec-2006 |
yamt | sync with head.
|
1.18.20.1 | 12-Jan-2007 |
ad | Sync with head.
|
1.20.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.21.22.1 | 14-Oct-2007 |
yamt | sync with head.
|
1.21.20.3 | 23-Mar-2008 |
matt | sync with HEAD
|
1.21.20.2 | 09-Jan-2008 |
matt | sync with HEAD
|
1.21.20.1 | 06-Nov-2007 |
matt | sync with HEAD
|
1.21.18.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.21.6.2 | 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.21.6.1 | 13-Mar-2007 |
ad | Pull in the initial set of changes for the vmlocking branch.
|
1.22.10.1 | 02-Jan-2008 |
bouyer | Sync with HEAD
|
1.22.6.3 | 12-Dec-2007 |
ad | layer_node_alloc: copy VV_MPSAFE from lowervp.
|
1.22.6.2 | 06-Dec-2007 |
ad | - layer_node_find: fix a race. - Use kmem_alloc/free.
|
1.22.6.1 | 04-Dec-2007 |
ad | Pull the vmlocking changes into a new branch.
|
1.22.4.1 | 18-Feb-2008 |
mjf | Sync with HEAD.
|
1.25.24.1 | 13-May-2009 |
jym | Sync with HEAD.
Commit is split, to avoid a "too many arguments" protocol error.
|
1.25.18.1 | 28-Apr-2009 |
skrll | Sync with HEAD.
|
1.25.10.3 | 11-Aug-2010 |
yamt | sync with head.
|
1.25.10.2 | 11-Mar-2010 |
yamt | sync with head
|
1.25.10.1 | 04-May-2009 |
yamt | sync with head.
|
1.28.4.5 | 30-May-2011 |
rmind | - Amend getnewvnode(9) to take the lock for sharing, not a vnode. - Update tmpfs to perform vnode and UVM object lock sharing correctly.
|
1.28.4.4 | 19-May-2011 |
rmind | Implement sharing of vnode_t::v_interlock amongst vnodes: - Lock is shared amongst UVM objects using uvm_obj_setlock() or getnewvnode(). - Adjust vnode cache to handle unsharing, add VI_LOCKSHARE flag for that. - Use sharing in tmpfs and layerfs for underlying object. - Simplify locking in ubc_fault(). - Sprinkle some asserts.
Discussed with ad@.
|
1.28.4.3 | 05-Mar-2011 |
rmind | sync with head
|
1.28.4.2 | 03-Jul-2010 |
rmind | sync with head
|
1.28.4.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.28.2.1 | 17-Aug-2010 |
uebayasi | Sync with HEAD.
|
1.31.6.1 | 23-Jun-2011 |
cherry | Catchup with rmind-uvmplock merge.
|
1.32.16.1 | 18-May-2014 |
rmind | sync with head
|
1.32.12.2 | 03-Dec-2017 |
jdolecek | update from HEAD
|
1.32.12.1 | 20-Aug-2014 |
tls | Rebase to HEAD as of a few days ago.
|
1.32.2.1 | 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.35.2.1 | 10-Aug-2014 |
tls | Rebase.
|
1.36.2.1 | 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.37.30.1 | 20-Apr-2020 |
bouyer | Sync with HEAD
|
1.37.20.1 | 21-Apr-2020 |
martin | Sync with HEAD
|
1.56 | 09-Dec-2022 |
hannken | Harden layered file systems usage of field "mnt_lower" against forced unmounts of the lower layer.
- Dont allow "dead_rootmount" as lower layer.
- Take file system busy before a vfs operation walks down the stack.
Reported-by: syzbot+27b35e5675b1753cec03@syzkaller.appspotmail.com Reported-by: syzbot+99071492e3de2eff49e9@syzkaller.appspotmail.com
|
1.55 | 18-Jul-2022 |
thorpej | Make kqueue event status for vnodes shareable, and for stacked file systems like nullfs, make the upper vnode share that status with the lower vnode.
And, lo, NetBSD 9.99.99.
Fixes PR kern/56713.
|
1.54 | 23-Feb-2020 |
ad | 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.
|
1.53 | 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.52 | 07-Aug-2019 |
pgoyette | branches: 1.52.2; Many years ago someone created a new __link_set_sysctl_funcs to hold the list of routines that need to be called for setting up sysctl variables. This worked great for all code included in the kernel itself, but didn't deal with modules that want to create their own sysctl data. So, we ended up with a lot of #ifdef _MODULE blocks so modules could explicitly call their setup functions when loaded as non-built-in modules.
So today, we complete the task that was started so many years ago.
When modules are loaded, after we've called xxx_modcmd(INIT...) we check if the module contains its own __link_set_sysctl_funcs, and if so we call the functions listed. We add a struct sysctllog member to the struct module so we can call sysctl_teardown() when the module gets unloaded. (The sequence of events ensures that the sysctl stuff doesn't get created until the rest of the module's init code does any required memory allocation.)
So, no more need to explicitly call the sysctl setup routines when built as a loadable module.
|
1.51 | 04-Jun-2017 |
hannken | branches: 1.51.6; Locking a layer vnode using the regular bypass routine is no longer racy. Undo the change from 2017-03-30 11:16:52, commitid eurqbzuGxGRlryLz and make vi_lock a krwlock_t again.
|
1.50 | 01-Jun-2017 |
chs | branches: 1.50.2; remove checks for failure after memory allocation calls that cannot fail:
kmem_alloc() with KM_SLEEP kmem_zalloc() with KM_SLEEP percpu_alloc() pserialize_create() psref_class_create()
all of these paths include an assertion that the allocation has not failed, so callers should not assert that again.
|
1.49 | 11-Apr-2017 |
hannken | Field "layerm_vfs" of "struct layer_mount" got superseded by "mnt_lower". Adapt consumers and remove the now unused field.
Ride 7.99.68
|
1.48 | 30-Mar-2017 |
hannken | Locking a layer vnode is racy as it may become reclaimed before calling the operation on the lower vnode.
Replace vi_lock with a rw_obj and change layered file systems to share the lock with the lower vnode.
Layered file systems now use genfs_lock()/_unlock/_islocked().
Welcome to 7.99.67
|
1.47 | 17-Feb-2017 |
hannken | Add generic genfs_suspendctl() and use it for all file systems. Layered file systems need work.
|
1.46 | 20-Apr-2015 |
riastradh | branches: 1.46.2; 1.46.4; Cull unused vnode v_iflags: VI_LAYER, VI_LOCKSHARE.
|
1.45 | 09-Nov-2014 |
maxv | branches: 1.45.2; Do not uselessly include <sys/malloc.h>.
|
1.44 | 25-May-2014 |
hannken | branches: 1.44.2; Change layerfs from hashlist to vcache. Make VI_LOCKSHARE public again.
Ride 6.99.43
|
1.43 | 25-Feb-2014 |
pooka | branches: 1.43.2; 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.42 | 10-Feb-2014 |
hannken | Change layerfs_vget(), layerfs_fhtovp() and the various layer xxx_mount() functions to unlock/relock the node for the call to layer_node_create().
Finally remove dirty hacks (LK_NOWAIT, kpause) from layer_node_find().
|
1.41 | 31-May-2012 |
pgoyette | branches: 1.41.2; 1.41.4; Ooopppsss! sysctl nodes created during module load time cannot be PERMANENT
|
1.40 | 31-May-2012 |
pgoyette | When built as module, track sysctl node creations, and destroy them on module exit.
|
1.39 | 01-Feb-2012 |
dholland | Change the syscall API for quotas over to the new non-proplib one.
- struct vfs_quotactl_args -> struct quotactl_args - add sys/stdint.h to sys/quotactl.h for clean userland build - install sys/quotactl.h in /usr/include - update set lists for same - add new marshalling code in libquota - add new unmarshalling code in vfs_syscalls.c - discard proplib interpreter code in vfs_quotactl.c - add dispatching code for the 14 quotactl ops in vfs_quotactl.c - mark the proplib quotactl syscall obsolete - add a new syscall number for the new quotactl syscall - change the name of the syscall to __quotactl() - remove the decl of the old quotactl from quota/quotaprop.h - add a decl of the new quotactl to sys/quotactl.h - update the libc build - update ktruss - remove proplib marshalling code from libquota - update copy of syscall table in gdb ppc sources - hack rumphijack to accomodate new quotactl name (as I recall, pooka wanted such a name change to simplify something, but I don't really see what/how)
This change appears to require a kernel version bump for rumpish reasons.
|
1.38 | 29-Jan-2012 |
dholland | Remove the extra op argument to VFS_QUOTACTL() - the op is now stored purely in the args structure.
This change requires a kernel version bump.
|
1.37 | 29-Jan-2012 |
dholland | Introduce struct vfs_quotactl_args. Use it.
This change uglifies vfs_quotactl some in order to make room for moving operation-specific but FS-independent logic out of ufs_quota.c.
Note: this change requires a kernel version bump.
|
1.36 | 29-Jan-2012 |
dholland | Move the proplib-based quota command dispatching (that is, the code that knows the magic string names for the allowed actions) out of UFS-specific code and to fs-independent code.
This introduces QUOTACTL_* operation codes and changes the signature of VFS_QUOTACTL() again for compile safety.
Note: this change requires a kernel version bump.
|
1.35 | 29-Jan-2012 |
dholland | Move the code for iterating over the multiple RPC calls in a quota proplib XML packet to vfs_quotactl.c out of sys/ufs/ufs.
Add a dummy extra arg to VFS_QUOTACTL for compile safety.
Note: this change requires a kernel version bump.
|
1.34 | 06-Mar-2011 |
bouyer | branches: 1.34.4; 1.34.8; merge the bouyer-quota2 branch. This adds a new on-disk format to store disk quota usage and limits, integrated with ffs metadata. Usage is checked by fsck_ffs (no more quotacheck) and is covered by the WAPBL journal. Enabled with kernel option QUOTA2 (added where QUOTA was enabled in kernel config files), turned on with tunefs(8) on a per-filesystem basis. mount_mfs(8) can also turn quotas on.
See http://mail-index.netbsd.org/tech-kern/2011/02/19/msg010025.html for details.
|
1.33 | 02-Jul-2010 |
rmind | branches: 1.33.2; 1.33.4; Slightly clean-up layerfs and nullfs: update the big description more to the reality (remove duplicate one in nullfs, merge some differences from it), KNF, improve and update some comments, add few KASSERT()s, remove unused declarations, avoid double inclusion of headers, misc.
No functional changes.
|
1.32 | 08-Jan-2010 |
pooka | branches: 1.32.2; 1.32.4; The VATTR_NULL/VREF/VHOLD/HOLDRELE() macros lost their will to live years ago when the kernel was modified to not alter ABI based on DIAGNOSTIC, and now just call the respective function interfaces (in lowercase). Plenty of mix'n match upper/lowercase has creeped into the tree since then. Nuke the macros and convert all callsites to lowercase.
no functional change
|
1.31 | 14-Mar-2009 |
dsl | Change about 4500 of the K&R function definitions to ANSI ones. There are still about 1600 left, but they have ',' or /* ... */ in the actual variable definitions - which my awk script doesn't handle. There are also many that need () -> (void). (The script does handle misordered arguments.)
|
1.30 | 05-Dec-2008 |
ad | branches: 1.30.4; PR kern/40110: null, overlay and umap modules loading -> panic (layerfs symbols not there)
Add a layerfs module.
|
1.29 | 28-Jan-2008 |
dholland | branches: 1.29.6; 1.29.10; 1.29.16; 1.29.18; 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.28 | 08-Dec-2007 |
ad | Use kmem_alloc/free.
|
1.27 | 26-Nov-2007 |
pooka | branches: 1.27.2; 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.26 | 16-Nov-2006 |
christos | branches: 1.26.12; 1.26.22; 1.26.24; 1.26.30; __unused removal on arguments; approved by core.
|
1.25 | 12-Oct-2006 |
christos | - sprinkle __unused on function decls. - fix a couple of unused bugs - no more -Wno-unused for i386
|
1.24 | 13-Jul-2006 |
martin | branches: 1.24.4; 1.24.6; Fix alignement problems for fhandle_t, exposed by gcc4.1.
While touching all vptofh/fhtovp functions, get rid of VFS_MAXFIDSIZ, version the getfh(2) syscall and explicitly pass the size available in the filehandle from userland.
Discussed on tech-kern, with lots of help from yamt (thanks!).
|
1.23 | 14-May-2006 |
elad | branches: 1.23.4; integrate kauth.
|
1.22 | 11-Dec-2005 |
christos | branches: 1.22.4; 1.22.6; 1.22.8; 1.22.10; 1.22.12; merge ktrace-lwp.
|
1.21 | 23-Sep-2005 |
jmmv | Apply the NFS exports list rototill patch:
- Remove all NFS related stuff from file system specific code. - Drop the vfs_checkexp hook and generalize it in the new nfs_check_export function, thus removing redundancy from all file systems. - Move all NFS export-related stuff from kern/vfs_subr.c to the new file sys/nfs/nfs_export.c. The former was becoming large and its code is always compiled, regardless of the build options. Using the latter, the code is only compiled in when NFSSERVER is enabled. While doing this, also make some functions in nfs_subs.c conditional to NFSSERVER. - Add a new command in nfssvc(2), called NFSSVC_SETEXPORTSLIST, that takes a path and a set of export entries. At the moment it can only clear the exports list or append entries, one by one, but it is done in a way that allows setting the whole set of entries atomically in the future (see the comment in mountd_set_exports_list or in doc/TODO). - Change mountd(8) to use the nfssvc(2) system call instead of mount(2) so that it becomes file system agnostic. In fact, all this whole thing was done to remove a 'XXX' block from this utility! - Change the mount*, newfs and fsck* userland utilities to not deal with NFS exports initialization; done internally by the kernel when initializing the NFS support for each file system. - Implement an interface for VFS (called VFS hooks) so that several kernel subsystems can run arbitrary code upon receipt of specific VFS events. At the moment, this only provides support for unmount and is used to destroy NFS exports lists from the file systems being unmounted, though it has room for extension.
Thanks go to yamt@, chs@, thorpej@, wrstuden@ and others for their comments and advice in the development of this patch.
|
1.20 | 24-Jul-2005 |
erh | Provide a sysctl (vfs.layerfs.debug) to control verbose output when LAYERFS_DIAGNOSTIC is turned on.
|
1.19 | 29-May-2004 |
wrstuden | branches: 1.19.12; Add layerfs_snapshot() as a handler routine for VFS_SNAPSHOT() calls through a layered file system.
Note: we don't actually support snapshots through a layered file system, and this routine returns an error. However we: 1) have clearly documented what needs fixing (which isn't trivial to fix) and 2) if we do fix this, all layered file systems can take advantage of it at once.
|
1.18 | 25-May-2004 |
atatat | Sysctl descriptions under vfs subtree
|
1.17 | 22-May-2004 |
christos | Unfortunately, we need to allocate space here. Pointed out by Juan RP.
|
1.16 | 22-May-2004 |
christos | we are copying all the infomation from statvfs here; we don't need an intermediate copy on the stack.
|
1.15 | 27-Apr-2004 |
jrf | First pass for some caddr_t removal and changes to get rid of it where we no longer use and/or need it
- removed casts from unionfs, deadfs and fdesc (there are more to hunt down still) - changed vfs_quotactl args argumet from caddr_t to void * - changed vfs_quotactl structures/callers to reflect the api change
Compiled fine and ran for about a day. Approved/reviewed by christos@netbsd.org and gimpy@netbsd.org.
|
1.14 | 21-Apr-2004 |
christos | Replace the statfs() family of system calls with statvfs(). Retain binary compatibility.
|
1.13 | 24-Mar-2004 |
atatat | branches: 1.13.2; Tango on sysctl_createv() and flags. The flags have all been renamed, and sysctl_createv() now uses more arguments.
|
1.12 | 17-Jan-2004 |
atatat | Rename sysctl setup function to match "reality"
|
1.11 | 04-Dec-2003 |
atatat | Dynamic sysctl.
Gone are the old kern_sysctl(), cpu_sysctl(), hw_sysctl(), vfs_sysctl(), etc, routines, along with sysctl_int() et al. Now all nodes are registered with the tree, and nodes can be added (or removed) easily, and I/O to and from the tree is handled generically.
Since the nodes are registered with the tree, the mapping from name to number (and back again) can now be discovered, instead of having to be hard coded. Adding new nodes to the tree is likewise much simpler -- the new infrastructure handles almost all the work for simple types, and just about anything else can be done with a small helper function.
All existing nodes are where they were before (numerically speaking), so all existing consumers of sysctl information should notice no difference.
PS - I'm sorry, but there's a distinct lack of documentation at the moment. I'm working on sysctl(3/8/9) right now, and I promise to watch out for buses.
|
1.10 | 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.9 | 29-Jun-2003 |
fvdl | branches: 1.9.2; Back out the lwp/ktrace changes. They contained a lot of colateral damage, and need to be examined and discussed more.
|
1.8 | 29-Jun-2003 |
thorpej | Undo part of the ktrace/lwp changes. In particular: * Remove the "lwp *" argument that was added to vget(). Turns out that nothing actually used it! * Remove the "lwp *" arguments that were added to VFS_ROOT(), VFS_VGET(), and VFS_FHTOVP(); all they did was pass it to vget() (which, as noted above, didn't use it). * Remove all of the "lwp *" arguments to internal functions that were added just to appease the above.
|
1.7 | 28-Jun-2003 |
darrenr | Pass lwp pointers throughtout the kernel, as required, so that the lwpid can be inserted into ktrace records. The general change has been to replace "struct proc *" with "struct lwp *" in various function prototypes, pass the lwp through and use l_proc to get the process pointer when needed.
Bump the kernel rev up to 1.6V
|
1.6 | 16-Apr-2003 |
christos | PR/1796: John Kohl: statfs misbehaves under chrooted environments.
- Under chroot it displays only the visible filesystems with appropriate paths. - The statfs f_mntonname gets adjusted to contain the real path from root. - While was there, fixed a bug in ext2fs, locking problems with vfs_getfsstat(), and factored out some of the vfsop statfs() code to copy_statfs_info(). This fixes the problem where some filesystems forgot to set fsid. - Made coda look more like a normal fs.
|
1.5 | 15-Nov-2001 |
lukem | don't need <sys/types.h> when including <sys/param.h>
|
1.4 | 10-Nov-2001 |
lukem | add RCSIDs
|
1.3 | 07-Jun-2001 |
wiz | branches: 1.3.2; 1.3.6; Typos in comments (misc/13133 by Michael K. Sanders)
|
1.2 | 13-Mar-2000 |
soren | branches: 1.2.6; Fix doubled 'the's in comments.
|
1.1 | 08-Jul-1999 |
wrstuden | branches: 1.1.2; 1.1.4; Introduce layer library in genfs. This set of files abstracts most of the functionality of nullfs. The latter is now just a mount & unmount routine, and a few tables. umapfs borrow most of this infrastructure.
Both fs's are now nfs-exportable.
All layered fs's share a common format to private mount & private vnode structs (which a particular fs can extend).
Also add genfs_noerr_rele(), a vnode op which will vrele/vput operand vnodes appropriately.
|
1.1.4.1 | 20-Nov-2000 |
bouyer | Update thorpej_scsipi to -current as of a month ago
|
1.1.2.2 | 02-Aug-1999 |
thorpej | Update from trunk.
|
1.1.2.1 | 08-Jul-1999 |
thorpej | file layer_vfsops.c was added on branch chs-ubc2 on 1999-08-02 22:27:34 +0000
|
1.2.6.3 | 08-Jan-2002 |
nathanw | Catch up to -current.
|
1.2.6.2 | 14-Nov-2001 |
nathanw | Catch up to -current.
|
1.2.6.1 | 21-Jun-2001 |
nathanw | Catch up to -current.
|
1.3.6.1 | 12-Nov-2001 |
thorpej | Sync the thorpej-mips-cache branch with -current.
|
1.3.2.1 | 10-Jan-2002 |
thorpej | Sync kqueue branch with -current.
|
1.9.2.6 | 10-Nov-2005 |
skrll | Sync with HEAD. Here we go again...
|
1.9.2.5 | 21-Sep-2004 |
skrll | Fix the sync with head I botched.
|
1.9.2.4 | 18-Sep-2004 |
skrll | Sync with HEAD.
|
1.9.2.3 | 24-Aug-2004 |
skrll | Undo part of the ktrace/lwp changes. In particular: * Remove the "lwp *" argument that was added to vget(). Turns out that nothing actually used it! * Remove the "lwp *" arguments that were added to VFS_ROOT(), VFS_VGET(), and VFS_FHTOVP(); all they did was pass it to vget() (which, as noted above, didn't use it). * Remove all of the "lwp *" arguments to internal functions that were added just to appease the above.
|
1.9.2.2 | 03-Aug-2004 |
skrll | Sync with HEAD
|
1.9.2.1 | 02-Jul-2003 |
darrenr | Apply the aborted ktrace-lwp changes to a specific branch. This is just for others to review, I'm concerned that patch fuziness may have resulted in some errant code being generated but I'll look at that later by comparing the diff from the base to the branch with the file I attempt to apply to it. This will, at the very least, put the changes in a better context for others to review them and attempt to tinker with removing passing of 'struct lwp' through the kernel.
|
1.13.2.1 | 29-May-2004 |
tron | Pull up revision 1.18 (requested by atatat in ticket #393): Sysctl descriptions under vfs subtree
|
1.19.12.5 | 04-Feb-2008 |
yamt | sync with head.
|
1.19.12.4 | 21-Jan-2008 |
yamt | sync with head
|
1.19.12.3 | 07-Dec-2007 |
yamt | sync with head
|
1.19.12.2 | 30-Dec-2006 |
yamt | sync with head.
|
1.19.12.1 | 21-Jun-2006 |
yamt | sync with head.
|
1.22.12.1 | 24-May-2006 |
tron | Merge 2006-05-24 NetBSD-current into the "peter-altq" branch.
|
1.22.10.2 | 06-May-2006 |
christos | - Move kauth_cred_t declaration to <sys/types.h> - Cleanup struct ucred; forward declarations that are unused. - Don't include <sys/kauth.h> in any header, but include it in the c files that need it.
Approved by core.
|
1.22.10.1 | 08-Mar-2006 |
elad | Adapt to kernel authorization KPI.
|
1.22.8.2 | 11-Aug-2006 |
yamt | sync with head
|
1.22.8.1 | 24-May-2006 |
yamt | sync with head.
|
1.22.6.1 | 01-Jun-2006 |
kardel | Sync with head.
|
1.22.4.1 | 09-Sep-2006 |
rpaulo | sync with head
|
1.23.4.1 | 13-Jul-2006 |
gdamore | Merge from HEAD.
|
1.24.6.2 | 10-Dec-2006 |
yamt | sync with head.
|
1.24.6.1 | 22-Oct-2006 |
yamt | sync with head
|
1.24.4.1 | 18-Nov-2006 |
ad | Sync with head.
|
1.26.30.3 | 18-Feb-2008 |
mjf | Sync with HEAD.
|
1.26.30.2 | 27-Dec-2007 |
mjf | Sync with HEAD.
|
1.26.30.1 | 08-Dec-2007 |
mjf | Sync with HEAD.
|
1.26.24.2 | 23-Mar-2008 |
matt | sync with HEAD
|
1.26.24.1 | 09-Jan-2008 |
matt | sync with HEAD
|
1.26.22.2 | 09-Dec-2007 |
jmcneill | Sync with HEAD.
|
1.26.22.1 | 27-Nov-2007 |
joerg | Sync with HEAD. amd64 Xen support needs testing.
|
1.26.12.1 | 09-Dec-2007 |
reinoud | Pullup to HEAD
|
1.27.2.2 | 08-Dec-2007 |
ad | Sync with head.
|
1.27.2.1 | 06-Dec-2007 |
ad | - layer_node_find: fix a race. - Use kmem_alloc/free.
|
1.29.18.2 | 28-Apr-2009 |
skrll | Sync with HEAD.
|
1.29.18.1 | 19-Jan-2009 |
skrll | Sync with HEAD.
|
1.29.16.1 | 13-Dec-2008 |
haad | Update haad-dm branch to haad-dm-base2.
|
1.29.10.3 | 11-Aug-2010 |
yamt | sync with head.
|
1.29.10.2 | 11-Mar-2010 |
yamt | sync with head
|
1.29.10.1 | 04-May-2009 |
yamt | sync with head.
|
1.29.6.1 | 17-Jan-2009 |
mjf | Sync with HEAD.
|
1.30.4.1 | 13-May-2009 |
jym | Sync with HEAD.
Commit is split, to avoid a "too many arguments" protocol error.
|
1.32.4.2 | 21-Apr-2011 |
rmind | sync with head
|
1.32.4.1 | 03-Jul-2010 |
rmind | sync with head
|
1.32.2.1 | 17-Aug-2010 |
uebayasi | Sync with HEAD.
|
1.33.4.1 | 20-Jan-2011 |
bouyer | Snapshot of work in progress on a modernised disk quota system: - new quotactl syscall (versionned for backward compat), which takes as parameter a path to a mount point, and a prop_dictionary (in plistref format) describing commands and arguments. For each command, status and data are returned as a prop_dictionary. quota commands features will be added to take advantage of this, exporting quota data or getting quota commands as plists.
- new on disk-format storage (all 64bit wide), integrated to metadata for ffs (and playing nicely with wapbl). Quotas are enabled on a ffs filesystem via superblock flags. tunefs(8) can enable or disable quotas. On a quota-enabled filesystem, fsck_ffs(8) will track per-uid/gid block and inode usages, and will check and update quotas in Pass 6. quota usage and limits are stored in unliked files (one for users, one for groups)l fsck_ffs(8) will create the files if needed, or free them if needed. This means that after enabling or disabling quotas on a filesystem; a fsck_ffs(8) run is required. quotacheck(8) is not needed any more, on a unclean shutdown fsck or journal replay will take care of fixing quotas. newfs(8) can create a ready-to-mount quota-enabled filesystem (superblock flags are set and quota inodes are created). Other new features or semantic changes: - default quota datas, applied to users or groups which don't already have a quota entry - per-user/group grace time (instead of a filesystem global one) - 0 really means "nothing allowed at all", not "no limit". If you want "no limit", set the limit to UQUAD_MAX (tools will understand "unlimited" and "-")
A quota file is structured as follow: it starts with a header, containing a few per-filesystem values, and the default quota limits. Quota entries are linked together as a simple list, each entry has a pointer (as an offset withing the file) to the next. The header has a pointer to a list of free quota entries, and a hash table of in-use entries. The size of the hash table depends on the filesystem block size (header+hash table should fit in the first block). The file is not sparse and is a multiple of filesystem block size (when the free quota entry list is empty a new filesystem block is allocated). quota entries to not cross filesystem block boundaries.
In memory, the kernel keeps a cache of recently used quota entries as a reference to the block number, and offset withing the block. The quota entry itself is keept in the buf cache.
fsck_ffs(8), tunefs(8) and newfs(8) supports are completed (with related atf tests :) The kernel can update disk usage and report it via quotactl(2).
Todo: enforce quotas limits (limits are not checked by kernel yet) update repquota, edquota and rpc.rquotad to the new world implement compat_50_quotactl ioctl. update quotactl(2) man page
fsck_ffs required fixes so that allocating new blocks or inodes will properly update the superblock and cg sumaries. This was not an issue up to now because superblock and cg sumaries check happened last, but now allocations or frees can happen in pass 6.
|
1.33.2.1 | 06-Jun-2011 |
jruoho | Sync with HEAD.
|
1.34.8.2 | 02-Jun-2012 |
mrg | sync to latest -current.
|
1.34.8.1 | 18-Feb-2012 |
mrg | merge to -current.
|
1.34.4.3 | 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.34.4.2 | 30-Oct-2012 |
yamt | sync with head
|
1.34.4.1 | 17-Apr-2012 |
yamt | sync with head
|
1.41.4.1 | 18-May-2014 |
rmind | sync with head
|
1.41.2.2 | 03-Dec-2017 |
jdolecek | update from HEAD
|
1.41.2.1 | 20-Aug-2014 |
tls | Rebase to HEAD as of a few days ago.
|
1.43.2.1 | 10-Aug-2014 |
tls | Rebase.
|
1.44.2.1 | 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.45.2.2 | 28-Aug-2017 |
skrll | Sync with HEAD
|
1.45.2.1 | 06-Jun-2015 |
skrll | Sync with HEAD
|
1.46.4.1 | 21-Apr-2017 |
bouyer | Sync with HEAD
|
1.46.2.2 | 26-Apr-2017 |
pgoyette | Sync with HEAD
|
1.46.2.1 | 20-Mar-2017 |
pgoyette | Sync with HEAD
|
1.50.2.1 | 04-Jun-2017 |
bouyer | pullup the following revisions, requested by hannken in ticket #2: src/share/man/man9/fstrans.9 1.25 src/sys/kern/vfs_mount.c 1.66 src/sys/kern/vfs_subr.c 1.468 src/sys/kern/vfs_trans.c 1.46 src/sys/kern/vfs_vnode.c 1.94, 1.95, 1.96 src/sys/kern/vnode_if.c 1.105, 1.106 src/sys/kern/vnode_if.sh 1.65, 1.66 src/sys/kern/vnode_if.src 1.76 src/sys/miscfs/genfs/genfs_io.c 1.69 src/sys/miscfs/genfs/genfs_vnops.c 1.196, 1.197 src/sys/miscfs/genfs/layer_extern.h 1.40 src/sys/miscfs/genfs/layer_vfsops.c 1.51 src/sys/miscfs/genfs/layer_vnops.c 1.67 src/sys/miscfs/nullfs/null_vnops.c 1.42 src/sys/miscfs/overlay/overlay_vnops.c 1.24 src/sys/miscfs/umapfs/umap_vnops.c 1.60 src/sys/rump/include/rump/rumpvnode_if.h 1.29, 1.30 src/sys/rump/librump/rumpkern/emul.c 1.182 src/sys/rump/librump/rumpvfs/rumpvnode_if.c 1.29, 1.30 src/sys/sys/fstrans.h 1.11 src/sys/sys/vnode.h 1.278 src/sys/sys/vnode_if.h 1.100, 1.101 src/sys/sys/vnode_impl.h 1.14, 1.15 src/sys/ufs/lfs/lfs_pages.c 1.12
Vnode state, lock and fstrans cleanup: - Rename vnode state "VS_ACTIVE" to "VS_LOADED" and add synthetic state "VS_ACTIVE" to assert a loaded vnode with usecount > 0.
- Redo FSTRANS in vnode_if.c and use it for VOP_LOCK and VOP_UNLOCK.
- Cleanup the genfs lock operations.
- Make "struct vnode_impl" member "vi_lock" a krwlock_t again.
- Remove the lock type argument from fstrans_start and fstrans_start_nowait, remove now unused FSTRANS state "FSTRANS_SUSPENDING".
|
1.51.6.2 | 13-Apr-2020 |
martin | Mostly merge changes from HEAD upto 20200411
|
1.51.6.1 | 08-Apr-2020 |
martin | Merge changes from current as of 20200406
|
1.52.2.2 | 29-Feb-2020 |
ad | Sync with head.
|
1.52.2.1 | 17-Jan-2020 |
ad | Sync with head.
|
1.72 | 20-Oct-2021 |
thorpej | 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.
|
1.71 | 16-May-2020 |
christos | Add ACL support for FFS. From FreeBSD.
|
1.70 | 13-Apr-2020 |
ad | 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.
|
1.69 | 04-Apr-2020 |
ad | branches: 1.69.2; Merge the remaining changes from the ad-namecache branch, affecting namei() and getcwd():
- push vnode locking back as far as possible. - do most lookups directly in the namecache, avoiding vnode locks & refs. - don't block new refs to vnodes across VOP_INACTIVE(). - get shared locks for VOP_LOOKUP() if the file system supports it. - correct lock types for VOP_ACCESS() / VOP_GETATTR() in a few places.
Possible future enhancements:
- make the lookups lockless. - support dotdot lookups by being lockless and inferring absence of chroot. - maybe make it work for layered file systems. - avoid vnode references at the root & cwd.
|
1.68 | 23-Feb-2020 |
ad | 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.
|
1.67 | 04-Jun-2017 |
hannken | branches: 1.67.6; 1.67.12; Operations fstrans_start() and fstrans_start_nowait() now always use FSTRANS_SHARED as lock type so remove the lock type argument.
File system state FSTRANS_SUSPENDING is now unused so remove it.
Regen vnode_if files.
Ride 8.99.1 less than a hour ago.
|
1.66 | 26-May-2017 |
riastradh | branches: 1.66.2; Make VOP_RECLAIM do the last unlock of the vnode.
VOP_RECLAIM naturally has exclusive access to the vnode, so having it locked on entry is not strictly necessary -- but it means if there are any final operations that must be done on the vnode, such as ffs_update, requiring exclusive access to it, we can now kassert that the vnode is locked in those operations.
We can't just have the caller release the last lock because some file systems don't use genfs_lock, and require the vnode to remain valid for VOP_UNLOCK to work, notably unionfs.
|
1.65 | 24-May-2017 |
hannken | Protect layer_getpages against vnodes disappearing during a forced unmount.
|
1.64 | 07-May-2017 |
hannken | Move v_writecount adjustment from revoke to reclaim.
|
1.63 | 26-Apr-2017 |
riastradh | branches: 1.63.2; Change VOP_REMOVE and VOP_RMDIR to preserve lock/ref on dvp.
No change to vp -- the plan is to replace the node by the componentname in the vop parameters, and let all directory vops do lookups internally.
Proposed on tech-kern with no objections: https://mail-index.netbsd.org/tech-kern/2017/04/17/msg021825.html
|
1.62 | 11-Apr-2017 |
riastradh | Make VOP_INACTIVE preserve vnode lock on return.
Discussed on tech-kern: https://mail-index.netbsd.org/tech-kern/2017/04/01/msg021751.html
Ride 7.99.68, a bumpy bus of incremental vfs improvements!
|
1.61 | 30-Mar-2017 |
hannken | Locking a layer vnode is racy as it may become reclaimed before calling the operation on the lower vnode.
Replace vi_lock with a rw_obj and change layered file systems to share the lock with the lower vnode.
Layered file systems now use genfs_lock()/_unlock/_islocked().
Welcome to 7.99.67
|
1.60 | 27-Jan-2017 |
hannken | Handle v_writecount from layer_open(), layer_close() and layer_revoke() so lower file system vnodes get marked as open for writing.
|
1.59 | 20-Aug-2016 |
hannken | branches: 1.59.2; Remove now obsolete operation vcache_remove().
Welcome to 7.99.36
|
1.58 | 25-May-2014 |
hannken | branches: 1.58.4; 1.58.8; Change layerfs from hashlist to vcache. Make VI_LOCKSHARE public again.
Ride 6.99.43
|
1.57 | 24-Mar-2014 |
hannken | branches: 1.57.2; - Make VI_XLOCK, VI_CLEAN and VI_LOCKSHARE private to kern/vfs_*.c. - Make vwait() static. - Add vdead_check() to check a vnode for being or becoming dead.
Discussed on tech-kern.
Welcome to 6.99.38
|
1.56 | 12-Mar-2014 |
hannken | Restructure layer_lock() to always lock before testing for dead node. Use ISSET() to test flags, add assertions.
|
1.55 | 27-Feb-2014 |
hannken | The current implementation of vn_lock() is racy. Modification of the vnode operations vector for active vnodes is unsafe because it is not known whether deadfs or the original file system will be called.
- Pass down LK_RETRY to the lock operation (hint for deadfs only).
- Change deadfs lock operation to return ENOENT if LK_RETRY is unset.
- Change all other lock operations to check for dead vnode once the vnode is locked and unlock and return ENOENT in this case.
With these changes in place vnode lock operations will never succeed after vclean() has marked the vnode as VI_XLOCK and before vclean() has changed the operations vector.
Adresses PR kern/37706 (Forced unmount of file systems is unsafe)
Discussed on tech-kern.
Welcome to 6.99.33
|
1.54 | 07-Feb-2014 |
hannken | Change vnode operation lookup to return the resulting vnode *vpp unlocked. Change cache_lookup() to return an unlocked vnode.
Discussed on tech-kern@
Welcome to 6.99.31
|
1.53 | 29-Jan-2014 |
hannken | Allow layer_node_create() with unlocked lower node and change layer_bypass() to enter nodes from creation operations unlocked.
|
1.52 | 23-Jan-2014 |
hannken | Change vnode operations create, mknod, mkdir and symlink to return the resulting vnode *vpp unlocked.
Discussed on tech-kern@
Welcome to 6.99.30
|
1.51 | 10-Oct-2012 |
dholland | branches: 1.51.2; In layer_lookup(), clear *vpp before returning EROFS, as otherwise a stale value can be returned and this causes a diagnostic panic in namei.
In relookup(), clear *vpp before calling VOP_LOOKUP, as is done in lookup_once(), as an additional precautionary measure.
(in theory both of these fixes are not required together)
Should fix PR 47040.
|
1.50 | 11-Jul-2011 |
hannken | branches: 1.50.2; 1.50.8; 1.50.12; Layer_fsync(): when syncing a device node call spec_fsync() to clean the layer node before descending to the lower file system.
Adresses PR kern/38762 panic: vwakeup: neg numoutput
|
1.49 | 11-Jul-2011 |
hannken | Change VOP_BWRITE() to take a vnode as its first argument like all other VOPs do. Layered file systems no longer have to modify bp->b_vp and run into trouble when an async VOP_BWRITE() uses the wrong vnode.
- change all occurences of VOP_BWRITE(bp) to VOP_BWRITE(bp->b_vp, bp). - remove layer_bwrite(). - welcome to 5.99.55
Adresses PR kern/38762 panic: vwakeup: neg numoutput
No objections from tech-kern@.
|
1.48 | 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.47 | 03-Apr-2011 |
rmind | branches: 1.47.2; - Use offsetof() in VOPARG_OFFSETOF() instead of re-implementing it. - Remove VDESC_NOMAP_VPP and VDESC_VPP_WILLRELE. - Remove VRELEL_NOINACTIVE and VRELEL_ONHEAD.
|
1.46 | 13-Jan-2011 |
hannken | branches: 1.46.2; Layer_revoke(): change previous to always take an extra reference on the lower vnode before passing down the VOP_REVOKE(). This way VOP_REVOKE() on a layered file system always inactivates and closes the lower vnode.
Should finally fix PR kern/43456.
|
1.45 | 10-Jan-2011 |
hannken | Add layer_revoke() that adjusts the lower vnode use count to be at least as high as the upper vnode count before passing down the VOP_REVOKE().
This way vclean() check for active (vp->v_usecount > 1) vnodes gets it right.
Should fix PR kern/43456.
|
1.44 | 02-Jan-2011 |
hannken | layer_inactive: With specnodes introduced during vmlocking2 it is safe to cache device nodes.
Tested with nullfs only as unionfs with device nodes panics.
|
1.43 | 02-Jul-2010 |
hannken | LK_INTERLOCK is no longer a valid flag for VOP_LOCK(). This makes layer_*lock*() obsolete. Remove them and handle lock operations with the generic bypass function.
Ride 5.99.34.
|
1.42 | 02-Jul-2010 |
rmind | Slightly clean-up layerfs and nullfs: update the big description more to the reality (remove duplicate one in nullfs, merge some differences from it), KNF, improve and update some comments, add few KASSERT()s, remove unused declarations, avoid double inclusion of headers, misc.
No functional changes.
|
1.41 | 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.40 | 06-Jun-2010 |
hannken | Change layered file systems to always pass the locking VOP's down to the leaf file system. Remove now unused member v_vnlock from struct vnode. Welcome to 5.99.30
Discussed on tech-kern.
|
1.39 | 08-Jan-2010 |
pooka | branches: 1.39.2; 1.39.4; The VATTR_NULL/VREF/VHOLD/HOLDRELE() macros lost their will to live years ago when the kernel was modified to not alter ABI based on DIAGNOSTIC, and now just call the respective function interfaces (in lowercase). Plenty of mix'n match upper/lowercase has creeped into the tree since then. Nuke the macros and convert all callsites to lowercase.
no functional change
|
1.38 | 14-Mar-2009 |
dsl | ANSIfy another 1261 function definitions. The only ones left in sys are beyond by sed script! (or in sys/dist or sys/external) Mostly they have function pointer parameters.
|
1.37 | 14-Feb-2009 |
plunky | consistency checks made inside #ifdef SAFETY should really be #ifdef DIAGNOSTIC
|
1.36 | 03-Jan-2009 |
dholland | branches: 1.36.2; Clarify a comment
|
1.35 | 30-Jan-2008 |
ad | branches: 1.35.6; 1.35.10; 1.35.18; 1.35.20; Replace struct lock on vnodes with a simpler lock object built on krwlock_t. This is a step towards removing lockmgr and simplifying vnode locking. Discussed on tech-kern.
|
1.34 | 02-Jan-2008 |
ad | Merge vmlocking2 to head.
|
1.33 | 22-Dec-2007 |
dyoung | Bug fix: at the top of layer_bypass(), save a pointer to the mount point for re-use at the bottom, instead of trying to re-read the mount point from a potentially vrele()'d vnode.
|
1.32 | 10-Oct-2007 |
ad | branches: 1.32.4; 1.32.6; 1.32.10; 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.31 | 16-Apr-2007 |
enami | branches: 1.31.6; 1.31.8; 1.31.10; Don't expand RCS id of ancestor file. The id itself is actually copied from null_vnops.c since the log message of rev. 1.1 implies the copy.
|
1.30 | 16-Apr-2007 |
chs | define a pager flag PGO_RECLAIM, similar to FSYNC_RECLAIM, and use it to skip unnecessary flushing when layered file system vnodes are recycled. this also prevents a deadlock with the dodgy LFS putpages routine. fixes the non-LFS part of PR 36150.
|
1.29 | 09-Dec-2006 |
chs | branches: 1.29.2; 1.29.6; 1.29.8; 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.28 | 25-Nov-2006 |
elad | branches: 1.28.2; Part of PR/33280: Christian Ehrhardt: If LK_INTERLOCK is set vp->v_interlock may be unlocked twice: Once explicitly and a second time implicilty by lockmgr. LK_INTERLOCK is cleared from the variable flags but not from ap->a_flags which is used with lockmgr. This is not so much of a problem because there seems to be no call site that actually uses LK_INTERLOCK with layer_unlock or VOP_UNLOCK.
okay martin@
|
1.27 | 14-May-2006 |
elad | branches: 1.27.8; 1.27.10; integrate kauth.
|
1.26 | 11-Dec-2005 |
christos | branches: 1.26.4; 1.26.6; 1.26.8; 1.26.10; 1.26.12; merge ktrace-lwp.
|
1.25 | 30-Aug-2005 |
xtraeme | Remove __P()
|
1.24 | 26-Feb-2005 |
perry | branches: 1.24.4; nuke trailing whitespace
|
1.23 | 30-Jun-2004 |
hannken | branches: 1.23.4; 1.23.6; Do LAYERFS_REMOVED for vop_rmdir.
Reviewed by: Bill Studenmund <wrstuden@netbsd.org>
|
1.22 | 19-Jun-2004 |
yamt | layer_islocked: check a status of the lower vnode as well.
|
1.21 | 16-Jun-2004 |
wrstuden | Make sure we actually locked the parent vnode before we clear PDIRUNLOCK. The whole reason we have the flag is to note (rare) cases where we are supposed to have the parent directory locked but don't. Permits error handling code to know what to do with the parrent vnode (vrele() vs vput()).
|
1.20 | 16-Jun-2004 |
yamt | - eliminate gratuitous differences between umap_bypass() and layer_bypass(). - fix a typo in a comment. no functional changes are intended.
|
1.19 | 16-Jun-2004 |
yamt | missing error recover from layer_node_create failure.
|
1.18 | 11-Jun-2004 |
yamt | umap_lookup/layer_lookup: NULL out *ap->a_vpp after calling underlying filesystem because some caller including lookup() assume that *vpp is NULL on error.
|
1.17 | 07-Jun-2004 |
yamt | do a LAYERFS_REMOVED hack for vop_rename as well.
|
1.16 | 28-May-2004 |
wrstuden | Since VOP_UPCALL() has been a long time in coming, add this partial fix for layered-file-removal. It will work for the case of accessing and deleting a file through the layered file system. Accessing via the layer and deleting on the underlying still won't work, nor will accessing via complicated structures (like two umap layers over a given file systems).
We still need VOP_UPCALL(), but this is better than things were before.
This patch has been discussed off & on for a while. This incarnation was tested by hannken at netbsd dot org.
|
1.15 | 21-Apr-2004 |
christos | Replace the statfs() family of system calls with statvfs(). Retain binary compatibility.
|
1.14 | 25-Jan-2004 |
hannken | branches: 1.14.2; Make VOP_STRATEGY(bp) a real VOP as discussed on tech-kern.
VOP_STRATEGY(bp) is replaced by one of two new functions:
- VOP_STRATEGY(vp, bp) Call the strategy routine of vp for bp. - DEV_STRATEGY(bp) Call the d_strategy routine of bp->b_dev for bp.
DEV_STRATEGY(bp) is used only for block-to-block device situations.
|
1.13 | 30-Nov-2003 |
wiz | Typo fixes in comments from jmc@openbsd.
|
1.12 | 17-Nov-2003 |
wiz | Various typo fixes from Jonathon Gray via jmc@openbsd.
|
1.11 | 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.10 | 06-Dec-2001 |
chs | branches: 1.10.16; add VOP_GETPAGES and VOP_PUTPAGES methods for layered filesystems. drop the interlock on the upper layer, acquire the interlock on the lower layer.
|
1.9 | 15-Nov-2001 |
lukem | don't need <sys/types.h> when including <sys/param.h>
|
1.8 | 10-Nov-2001 |
lukem | add RCSIDs
|
1.7 | 24-Jul-2001 |
assar | branches: 1.7.4; change vop_symlink and vop_mknod to return vpp (the created node) refed, so that the caller can actually use it. update callers and file systems that implement these vnode operations
|
1.6 | 07-Jun-2001 |
wiz | branches: 1.6.2; Typos in comments (misc/13133 by Michael K. Sanders)
|
1.5 | 21-Dec-2000 |
enami | branches: 1.5.2; Don't cache a device vnode in a layer node cache once the layer node is inactivated. Otherwise, the device won't closed.
|
1.4 | 19-Sep-2000 |
fvdl | Adapt for VOP_FSYNC parameter change.
|
1.3 | 30-Mar-2000 |
augustss | branches: 1.3.4; Register, begone!
|
1.2 | 13-Mar-2000 |
soren | Fix doubled 'the's in comments.
|
1.1 | 08-Jul-1999 |
wrstuden | branches: 1.1.2; 1.1.4; Introduce layer library in genfs. This set of files abstracts most of the functionality of nullfs. The latter is now just a mount & unmount routine, and a few tables. umapfs borrow most of this infrastructure.
Both fs's are now nfs-exportable.
All layered fs's share a common format to private mount & private vnode structs (which a particular fs can extend).
Also add genfs_noerr_rele(), a vnode op which will vrele/vput operand vnodes appropriately.
|
1.1.4.2 | 05-Jan-2001 |
bouyer | Sync with HEAD
|
1.1.4.1 | 20-Nov-2000 |
bouyer | Update thorpej_scsipi to -current as of a month ago
|
1.1.2.2 | 02-Aug-1999 |
thorpej | Update from trunk.
|
1.1.2.1 | 08-Jul-1999 |
thorpej | file layer_vnops.c was added on branch chs-ubc2 on 1999-08-02 22:27:34 +0000
|
1.3.4.1 | 14-Dec-2000 |
he | Pull up revision 1.4 (requested by fvdl): Improve NFS performance, possibly with as much as 100% in throughput. Please note: this implies a kernel interface change, VOP_FSYNC gains two arguments.
|
1.5.2.4 | 08-Jan-2002 |
nathanw | Catch up to -current.
|
1.5.2.3 | 14-Nov-2001 |
nathanw | Catch up to -current.
|
1.5.2.2 | 24-Aug-2001 |
nathanw | Catch up with -current.
|
1.5.2.1 | 21-Jun-2001 |
nathanw | Catch up to -current.
|
1.6.2.2 | 10-Jan-2002 |
thorpej | Sync kqueue branch with -current.
|
1.6.2.1 | 03-Aug-2001 |
lukem | update to -current
|
1.7.4.1 | 12-Nov-2001 |
thorpej | Sync the thorpej-mips-cache branch with -current.
|
1.10.16.6 | 10-Nov-2005 |
skrll | Sync with HEAD. Here we go again...
|
1.10.16.5 | 04-Mar-2005 |
skrll | Sync with HEAD.
Hi Perry!
|
1.10.16.4 | 27-Oct-2004 |
skrll | Fix various comments that describe the argument structures
|
1.10.16.3 | 21-Sep-2004 |
skrll | Fix the sync with head I botched.
|
1.10.16.2 | 18-Sep-2004 |
skrll | Sync with HEAD.
|
1.10.16.1 | 03-Aug-2004 |
skrll | Sync with HEAD
|
1.14.2.4 | 02-Jul-2004 |
he | Pull up revision 1.23 (requested by hannken in ticket #575): Do LAYERFS_REMOVED for vop_rmdir.
|
1.14.2.3 | 21-Jun-2004 |
tron | Pull up revision 1.18 (requested by yamt in ticket #514): umap_lookup/layer_lookup: NULL out *ap->a_vpp after calling underlying filesystem because some caller including lookup() assume that *vpp is NULL on error.
|
1.14.2.2 | 21-Jun-2004 |
tron | Pull up revision 1.17 (requested by yamt in ticket #512): do a LAYERFS_REMOVED hack for vop_rename as well.
|
1.14.2.1 | 30-May-2004 |
tron | Pull up revision 1.16 (requested by wrstuden in ticket #424): Since VOP_UPCALL() has been a long time in coming, add this partial fix for layered-file-removal. It will work for the case of accessing and deleting a file through the layered file system. Accessing via the layer and deleting on the underlying still won't work, nor will accessing via complicated structures (like two umap layers over a given file systems). We still need VOP_UPCALL(), but this is better than things were before. This patch has been discussed off & on for a while. This incarnation was tested by hannken at netbsd dot org.
|
1.23.6.1 | 19-Mar-2005 |
yamt | sync with head. xen and whitespace. xen part is not finished.
|
1.23.4.1 | 29-Apr-2005 |
kent | sync with -current
|
1.24.4.6 | 04-Feb-2008 |
yamt | sync with head.
|
1.24.4.5 | 21-Jan-2008 |
yamt | sync with head
|
1.24.4.4 | 27-Oct-2007 |
yamt | sync with head.
|
1.24.4.3 | 03-Sep-2007 |
yamt | sync with head.
|
1.24.4.2 | 30-Dec-2006 |
yamt | sync with head.
|
1.24.4.1 | 21-Jun-2006 |
yamt | sync with head.
|
1.26.12.1 | 24-May-2006 |
tron | Merge 2006-05-24 NetBSD-current into the "peter-altq" branch.
|
1.26.10.2 | 06-May-2006 |
christos | - Move kauth_cred_t declaration to <sys/types.h> - Cleanup struct ucred; forward declarations that are unused. - Don't include <sys/kauth.h> in any header, but include it in the c files that need it.
Approved by core.
|
1.26.10.1 | 08-Mar-2006 |
elad | Adapt to kernel authorization KPI.
|
1.26.8.1 | 24-May-2006 |
yamt | sync with head.
|
1.26.6.1 | 01-Jun-2006 |
kardel | Sync with head.
|
1.26.4.1 | 09-Sep-2006 |
rpaulo | sync with head
|
1.27.10.1 | 10-Dec-2006 |
yamt | sync with head.
|
1.27.8.1 | 12-Jan-2007 |
ad | Sync with head.
|
1.28.2.3 | 14-Nov-2012 |
riz | Pull up following revision(s) (requested by dholland in ticket #1466): sys/kern/vfs_lookup.c: revision 1.195 sys/miscfs/genfs/layer_vnops.c: revision 1.51 In layer_lookup(), clear *vpp before returning EROFS, as otherwise a stale value can be returned and this causes a diagnostic panic in namei. In relookup(), clear *vpp before calling VOP_LOOKUP, as is done in lookup_once(), as an additional precautionary measure. (in theory both of these fixes are not required together) Should fix PR 47040.
|
1.28.2.2 | 16-Apr-2007 |
bouyer | branches: 1.28.2.2.6; Pull up following revision(s) (requested by chs in ticket #577): sys/kern/vfs_subr.c: revision 1.287 sys/fs/union/union_vnops.c: revision 1.20 sys/miscfs/genfs/layer_vnops.c: revision 1.30 sys/uvm/uvm_pager.h: revision 1.35 define a pager flag PGO_RECLAIM, similar to FSYNC_RECLAIM, and use it to skip unnecessary flushing when layered file system vnodes are recycled. this also prevents a deadlock with the dodgy LFS putpages routine. fixes the non-LFS part of PR 36150.
|
1.28.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.28.2.2.6.1 | 14-Nov-2012 |
riz | Pull up following revision(s) (requested by dholland in ticket #1466): sys/kern/vfs_lookup.c: revision 1.195 sys/miscfs/genfs/layer_vnops.c: revision 1.51 In layer_lookup(), clear *vpp before returning EROFS, as otherwise a stale value can be returned and this causes a diagnostic panic in namei. In relookup(), clear *vpp before calling VOP_LOOKUP, as is done in lookup_once(), as an additional precautionary measure. (in theory both of these fixes are not required together) Should fix PR 47040.
|
1.29.8.1 | 11-Jul-2007 |
mjf | Sync with head.
|
1.29.6.4 | 16-Sep-2007 |
ad | Checkpoint work in progress on the vnode lifecycle and reference counting stuff. This makes it work properly without kernel_lock and fixes a few quite old bugs. See vfs_subr.c 1.283.2.17 for details.
|
1.29.6.3 | 15-Jul-2007 |
ad | Sync with head.
|
1.29.6.2 | 08-Jun-2007 |
ad | Sync with head.
|
1.29.6.1 | 13-Mar-2007 |
ad | Pull in the initial set of changes for the vmlocking branch.
|
1.29.2.1 | 07-May-2007 |
yamt | sync with head.
|
1.31.10.1 | 14-Oct-2007 |
yamt | sync with head.
|
1.31.8.3 | 23-Mar-2008 |
matt | sync with HEAD
|
1.31.8.2 | 09-Jan-2008 |
matt | sync with HEAD
|
1.31.8.1 | 06-Nov-2007 |
matt | sync with HEAD
|
1.31.6.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.32.10.1 | 02-Jan-2008 |
bouyer | Sync with HEAD
|
1.32.6.5 | 26-Dec-2007 |
ad | Sync with head.
|
1.32.6.4 | 12-Dec-2007 |
ad | Correct a comment.
|
1.32.6.3 | 10-Dec-2007 |
ad | - Don't drain the vnode lock in vclean(); reference counting and XLOCK should be enough. - LK_SETRECURSE is gone.
|
1.32.6.2 | 06-Dec-2007 |
ad | - layer_node_find: fix a race. - Use kmem_alloc/free.
|
1.32.6.1 | 04-Dec-2007 |
ad | Pull the vmlocking changes into a new branch.
|
1.32.4.1 | 18-Feb-2008 |
mjf | Sync with HEAD.
|
1.35.20.1 | 06-Nov-2012 |
riz | Pull up following revision(s) (requested by dholland in ticket #1814): sys/kern/vfs_lookup.c: revision 1.195 sys/miscfs/genfs/layer_vnops.c: revision 1.51 In layer_lookup(), clear *vpp before returning EROFS, as otherwise a stale value can be returned and this causes a diagnostic panic in namei. In relookup(), clear *vpp before calling VOP_LOOKUP, as is done in lookup_once(), as an additional precautionary measure. (in theory both of these fixes are not required together) Should fix PR 47040.
|
1.35.18.3 | 28-Apr-2009 |
skrll | Sync with HEAD.
|
1.35.18.2 | 03-Mar-2009 |
skrll | Sync with HEAD.
|
1.35.18.1 | 19-Jan-2009 |
skrll | Sync with HEAD.
|
1.35.10.3 | 11-Aug-2010 |
yamt | sync with head.
|
1.35.10.2 | 11-Mar-2010 |
yamt | sync with head
|
1.35.10.1 | 04-May-2009 |
yamt | sync with head.
|
1.35.6.1 | 17-Jan-2009 |
mjf | Sync with HEAD.
|
1.36.2.1 | 13-May-2009 |
jym | Sync with HEAD.
Commit is split, to avoid a "too many arguments" protocol error.
|
1.39.4.5 | 19-May-2011 |
rmind | Implement sharing of vnode_t::v_interlock amongst vnodes: - Lock is shared amongst UVM objects using uvm_obj_setlock() or getnewvnode(). - Adjust vnode cache to handle unsharing, add VI_LOCKSHARE flag for that. - Use sharing in tmpfs and layerfs for underlying object. - Simplify locking in ubc_fault(). - Sprinkle some asserts.
Discussed with ad@.
|
1.39.4.4 | 21-Apr-2011 |
rmind | sync with head
|
1.39.4.3 | 05-Mar-2011 |
rmind | sync with head
|
1.39.4.2 | 03-Jul-2010 |
rmind | sync with head
|
1.39.4.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.39.2.1 | 17-Aug-2010 |
uebayasi | Sync with HEAD.
|
1.46.2.1 | 06-Jun-2011 |
jruoho | Sync with HEAD.
|
1.47.2.1 | 23-Jun-2011 |
cherry | Catchup with rmind-uvmplock merge.
|
1.50.12.3 | 03-Dec-2017 |
jdolecek | update from HEAD
|
1.50.12.2 | 20-Aug-2014 |
tls | Rebase to HEAD as of a few days ago.
|
1.50.12.1 | 20-Nov-2012 |
tls | Resync to 2012-11-19 00:00:00 UTC
|
1.50.8.1 | 18-Nov-2012 |
msaitoh | Pull up following revision(s) (requested by dholland in ticket #664): sys/kern/vfs_lookup.c: revision 1.195 sys/miscfs/genfs/layer_vnops.c: revision 1.51 In layer_lookup(), clear *vpp before returning EROFS, as otherwise a stale value can be returned and this causes a diagnostic panic in namei. In relookup(), clear *vpp before calling VOP_LOOKUP, as is done in lookup_once(), as an additional precautionary measure. (in theory both of these fixes are not required together) Should fix PR 47040.
|
1.50.2.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.50.2.1 | 30-Oct-2012 |
yamt | sync with head
|
1.51.2.1 | 18-May-2014 |
rmind | sync with head
|
1.57.2.1 | 10-Aug-2014 |
tls | Rebase.
|
1.58.8.2 | 26-Apr-2017 |
pgoyette | Sync with HEAD
|
1.58.8.1 | 20-Mar-2017 |
pgoyette | Sync with HEAD
|
1.58.4.3 | 28-Aug-2017 |
skrll | Sync with HEAD
|
1.58.4.2 | 05-Feb-2017 |
skrll | Sync with HEAD
|
1.58.4.1 | 05-Oct-2016 |
skrll | Sync with HEAD
|
1.59.2.1 | 21-Apr-2017 |
bouyer | Sync with HEAD
|
1.63.2.1 | 11-May-2017 |
pgoyette | Sync with HEAD
|
1.66.2.1 | 04-Jun-2017 |
bouyer | pullup the following revisions, requested by hannken in ticket #2: src/share/man/man9/fstrans.9 1.25 src/sys/kern/vfs_mount.c 1.66 src/sys/kern/vfs_subr.c 1.468 src/sys/kern/vfs_trans.c 1.46 src/sys/kern/vfs_vnode.c 1.94, 1.95, 1.96 src/sys/kern/vnode_if.c 1.105, 1.106 src/sys/kern/vnode_if.sh 1.65, 1.66 src/sys/kern/vnode_if.src 1.76 src/sys/miscfs/genfs/genfs_io.c 1.69 src/sys/miscfs/genfs/genfs_vnops.c 1.196, 1.197 src/sys/miscfs/genfs/layer_extern.h 1.40 src/sys/miscfs/genfs/layer_vfsops.c 1.51 src/sys/miscfs/genfs/layer_vnops.c 1.67 src/sys/miscfs/nullfs/null_vnops.c 1.42 src/sys/miscfs/overlay/overlay_vnops.c 1.24 src/sys/miscfs/umapfs/umap_vnops.c 1.60 src/sys/rump/include/rump/rumpvnode_if.h 1.29, 1.30 src/sys/rump/librump/rumpkern/emul.c 1.182 src/sys/rump/librump/rumpvfs/rumpvnode_if.c 1.29, 1.30 src/sys/sys/fstrans.h 1.11 src/sys/sys/vnode.h 1.278 src/sys/sys/vnode_if.h 1.100, 1.101 src/sys/sys/vnode_impl.h 1.14, 1.15 src/sys/ufs/lfs/lfs_pages.c 1.12
Vnode state, lock and fstrans cleanup: - Rename vnode state "VS_ACTIVE" to "VS_LOADED" and add synthetic state "VS_ACTIVE" to assert a loaded vnode with usecount > 0.
- Redo FSTRANS in vnode_if.c and use it for VOP_LOCK and VOP_UNLOCK.
- Cleanup the genfs lock operations.
- Make "struct vnode_impl" member "vi_lock" a krwlock_t again.
- Remove the lock type argument from fstrans_start and fstrans_start_nowait, remove now unused FSTRANS state "FSTRANS_SUSPENDING".
|
1.67.12.2 | 29-Feb-2020 |
ad | Sync with head.
|
1.67.12.1 | 19-Jan-2020 |
ad | Set IMNT_SHRLOOKUP and use it for the in-cache case. Need to check what more can be done with tmpfs though, it can probably do the whole lookup.
|
1.67.6.2 | 21-Apr-2020 |
martin | Sync with HEAD
|
1.67.6.1 | 08-Apr-2020 |
martin | Merge changes from current as of 20200406
|
1.69.2.1 | 20-Apr-2020 |
bouyer | Sync with HEAD
|