Home | History | Annotate | Download | only in kern
History log of /src/sys/kern/vnode_if.c
RevisionDateAuthorComments
 1.119  15-Jun-2023  hannken Regen.
 1.118  18-Jul-2022  thorpej branches: 1.118.4;
Regen for:

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.117  03-May-2022  hannken Regen.
 1.116  03-May-2022  hannken Regen.
 1.115  20-Oct-2021  thorpej Regen for:

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.114  02-Jul-2021  dholland Regen.
 1.113  29-Jun-2021  dholland Regen.
 1.112  18-May-2020  hannken branches: 1.112.6;
Regen.
 1.111  16-May-2020  christos Add ACL support for FFS. From FreeBSD.
 1.110  23-Feb-2020  ad Regen.
 1.109  01-Dec-2019  ad branches: 1.109.2;
Regen for VOP_LOCK & LK_UPGRADE/LK_DOWNGRADE.
 1.108  11-Oct-2019  hannken Regen.
 1.107  12-Jul-2017  hannken branches: 1.107.6; 1.107.10;
Regen.
 1.106  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.105  04-Jun-2017  hannken Regen.
 1.104  26-May-2017  riastradh branches: 1.104.2;
regen
 1.103  26-Apr-2017  riastradh regen
 1.102  16-Apr-2017  riastradh regen to confirm no functional change
 1.101  16-Apr-2017  riastradh regen
 1.100  15-Apr-2017  riastradh regen to confirm no functional change
 1.99  11-Apr-2017  riastradh regen to confirm no functional change
 1.98  11-Apr-2017  riastradh regen
 1.97  22-Feb-2017  hannken Regen.
 1.96  26-Jan-2016  pooka branches: 1.96.2; 1.96.4;
regen vnode interfaces
 1.95  20-Apr-2015  riastradh regen for good measure (no functional change)
 1.94  20-Apr-2015  riastradh Make VOP_LINK return directory still locked and referenced.

Ride 7.99.10 bump.
 1.93  25-Jul-2014  dholland branches: 1.93.4;
Regen for VOP_FALLOCATE/VOP_FDISCARD.
 1.92  07-Feb-2014  hannken branches: 1.92.2;
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.91  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.90  17-Jan-2014  hannken Change vnode operations create, mknod, mkdir and symlink to keep the
directory node dvp locked on return.

Discussed on tech-kern@

Welcome to 6.99.29
 1.89  17-Jul-2013  pooka regen
 1.88  11-Jul-2011  hannken branches: 1.88.2; 1.88.12; 1.88.16; 1.88.24;
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.87  04-Jul-2011  manu Add a flag to VOP_LISTEXTATTR(9) so that the vnode interface can tell the
filesystem in which format extended attribute shall be listed.

There are currently two formats:
- NUL-terminated strings, used for listxattr(2), this is the default.
- one byte length-pprefixed, non NUL-terminated strings, used for
extattr_list_file(2), which is obtanined by setting the
EXTATTR_LIST_PREFIXLEN flag to VOP_LISTEXTATTR(9)

This approach avoid the need for converting the list back and forth, except
in libperfuse, since FUSE uses NUL-terminated strings, and the kernel may
have requested EXTATTR_LIST_PREFIXLEN.
 1.86  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.85  24-Jun-2010  hannken branches: 1.85.2; 1.85.4;
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.84  14-Apr-2010  pooka regen: rump vnodeif went on a diet
 1.83  14-Apr-2010  pooka regenefactor for comment and whitespace changes
 1.82  10-Apr-2010  pooka regen: remove unused vdesc_transports
 1.81  29-Sep-2009  pooka branches: 1.81.2; 1.81.4;
regen: remove VNODE_LOCKDEBUG
 1.80  17-Nov-2008  pooka reregen to get those most important rcsids right
 1.79  17-Nov-2008  pooka regen
 1.78  31-Jul-2008  simonb branches: 1.78.2; 1.78.4;
Remove needless white-space change that crept in through wapbl branch
merge.
 1.77  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.76  25-Jan-2008  ad branches: 1.76.6; 1.76.10; 1.76.14; 1.76.16;
Regen.
 1.75  02-Jan-2008  ad Regen.
 1.74  26-Nov-2007  pooka branches: 1.74.2; 1.74.6;
regen: remove struct lwp as a parameter to VOPs
 1.73  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.72  06-Nov-2007  ad Regen.
 1.71  10-Oct-2007  ad branches: 1.71.2; 1.71.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.70  27-Jul-2007  pooka branches: 1.70.4; 1.70.6; 1.70.8; 1.70.10;
regen: VOP_MMAP fflags -> prot
 1.69  22-Jul-2007  pooka regen: assert that vnode creating operations set the size
 1.68  09-Apr-2007  gdt branches: 1.68.4;
regen
(changes in RCS Ids only)
 1.67  30-Nov-2006  pooka branches: 1.67.4; 1.67.8; 1.67.10;
regen for VOP_FOO_DESCOFFSET change in vnode_if.sh
 1.66  13-Jul-2006  martin branches: 1.66.4; 1.66.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.65  14-May-2006  elad branches: 1.65.4;
integrate kauth.
 1.64  04-May-2006  perseant Regen after making VOP_FCNTL take an unlocked vnode.
 1.63  30-Dec-2005  yamt branches: 1.63.4; 1.63.6; 1.63.8; 1.63.10; 1.63.12;
regen.
 1.62  11-Dec-2005  skrll Get correct Ids after ktrace-lwp merge.
 1.61  11-Dec-2005  christos merge ktrace-lwp.
 1.60  07-Dec-2005  thorpej Regen: Generate ANSI function decls.
 1.59  07-Dec-2005  thorpej Regen: VNODE_OP_NOINLINE is gone.
 1.58  29-Nov-2005  yamt regen to revert the previous.
 1.57  29-Nov-2005  yamt merge yamt-readahead branch.
 1.56  02-Nov-2005  yamt branches: 1.56.2;
regen.
 1.55  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.54  08-Oct-2005  isaki branches: 1.54.2;
regen.
 1.53  26-Feb-2005  perry branches: 1.53.4;
regen
 1.52  26-Feb-2005  perry regen
 1.51  02-Jan-2005  thorpej branches: 1.51.2; 1.51.4;
Regen for extended attribute VOPs.
 1.50  21-Sep-2004  thorpej Regenerate for VNODE_LOCKDEBUG changes.
 1.49  10-Sep-2004  yamt regen.
 1.48  27-May-2004  yamt regen.
 1.47  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.46  25-Jan-2004  hannken Make VOP_STRATEGY(bp) a real VOP as discussed on tech-kern.
 1.45  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.44  29-Jun-2003  fvdl branches: 1.44.2;
Back out the lwp/ktrace changes. They contained a lot of colateral damage,
and need to be examined and discussed more.
 1.43  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.42  10-Apr-2003  jdolecek regen:
'tvp' in vop_rename needs to be vput(), not vrele()d, so adjust the
definition here to match current reality
okayed by Bill Studenmund
 1.41  21-Mar-2003  dsl Use 'void *' instead of 'caddr_t' in prototypes of VOP_IOCTL, VOP_FCNTL
and VOP_ADVLOCK, delete casts from callers (and some to copyin/out).
 1.40  23-Oct-2002  jdolecek regen: kqueue branch merge, addition of VOP_KQFILTER()
 1.39  12-Nov-2001  lukem regen (for RCSID)
 1.38  15-Sep-2001  chs branches: 1.38.2;
regen
 1.37  24-Jul-2001  assar branches: 1.37.2;
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.36  26-May-2001  chs branches: 1.36.2;
regen.
 1.35  26-May-2001  chs replace vm_page_t with struct vm_page *.
 1.34  07-May-2001  lukem regen from vnode_if.sh rev 1.29
 1.33  22-Jan-2001  jdolecek branches: 1.33.2;
regen: *_desc are generated correctly, new VNODE_OPS_COUNT,
structures constified
 1.32  19-Jan-2001  martin Regen after de-const-ing.
 1.31  18-Jan-2001  jdolecek constify
 1.30  22-Dec-2000  fvdl Regen.
 1.29  22-Dec-2000  mrg regen
 1.28  22-Dec-2000  mrg regen
 1.27  22-Dec-2000  mrg avoid redefinition of VNODE_OP_NOINLINE
 1.26  27-Nov-2000  chs regen.
 1.25  19-Sep-2000  fvdl Regen.
 1.24  13-Sep-2000  thorpej Regen: VNODE_OP_NOINLINE vs. LKM.
 1.23  13-Sep-2000  thorpej Regen for VNODE_OP_NOINLINE.
 1.22  13-May-2000  perseant branches: 1.22.4;
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.21  07-Dec-1999  thorpej Regen.
 1.20  07-Dec-1999  wrstuden Regen.
 1.19  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.18  03-Aug-1999  wrstuden branches: 1.18.2; 1.18.4; 1.18.8;
Regen for revision: 1.19 of vnode_if.src.
 1.17  07-Jul-1999  wrstuden Regen to reflect WILLPUT & WILLUNLOCK syntax.
 1.16  21-Jun-1999  sommerfeld regen (no actual change, but comments in the master file changed)
 1.15  22-Mar-1999  sommerfe branches: 1.15.4;
Regen files based on changes to syscalls.master, vnode_if.src (latter
was changes to comments only, but..)
Build vfs_getcwd.c as standard part of kernel.
Add implementation of fchroot(), since two emulations already had it.
Call vn_isunder() in fchdir(), chroot(), and fchroot() to make it harder
to escape chroot().
 1.14  13-Sep-1998  christos branches: 1.14.2;
Regen
 1.13  30-Jul-1998  mycroft branches: 1.13.2;
Regen.
 1.12  05-Jun-1998  kleink Regen: fsync argument change.
 1.11  01-Mar-1998  fvdl Regen.
 1.10  01-Mar-1998  fvdl Merge with Lite2 + local changes
 1.9  09-Jan-1998  thorpej Regen.
 1.8  08-Jan-1998  thorpej Regen: Back out RCS ID related changes.
 1.7  05-Jan-1998  perry regened with RCSIDs in place
 1.6  10-Oct-1997  fvdl Regen.
 1.5  07-Jul-1997  cgd branches: 1.5.2;
update for new vnode_if.sh
 1.4  22-Jan-1997  mikel regen
 1.3  07-Sep-1996  mycroft Regen.
 1.2  11-May-1996  mycroft Regen.
 1.1  29-Feb-1996  cgd Do not build vnode_if.[ch] for each kernel. Build them once, like the
various syscall sources/headers, and just compile them. From PR 2142, OK'd
by mycroft. (These are now generated files.)
 1.5.2.1  14-Oct-1997  thorpej Update marc-pcmcia branch from trunk.
 1.13.2.2  30-Jul-1998  mycroft Regen.
 1.13.2.1  30-Jul-1998  mycroft file vnode_if.c was added on branch eeh-paddr_t on 1998-07-30 00:46:28 +0000
 1.14.2.1  09-Nov-1998  chs initial snapshot. lots left to do.
 1.15.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.15.4.5  02-Aug-1999  thorpej Regen.
 1.15.4.4  31-Jul-1999  chs VOP_BALLOC() now allocates a range instead of just one block.
 1.15.4.3  04-Jul-1999  chs add VOP_BALLOC().
 1.15.4.2  01-Jul-1999  thorpej Sync w/ -current.
 1.15.4.1  07-Jun-1999  chs merge everything from chs-ubc branch.
 1.18.8.1  27-Dec-1999  wrstuden Pull up to last week's -current.
 1.18.4.1  19-Oct-1999  fvdl Bring in Kirk McKusick's FFS softdep code on a branch.
 1.18.2.4  11-Feb-2001  bouyer Sync with HEAD.
 1.18.2.3  05-Jan-2001  bouyer Sync with HEAD
 1.18.2.2  08-Dec-2000  bouyer Sync with HEAD.
 1.18.2.1  20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
 1.22.4.1  14-Dec-2000  he Pull up regenerated files (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.33.2.5  11-Nov-2002  nathanw Catch up to -current
 1.33.2.4  14-Nov-2001  nathanw Catch up to -current.
 1.33.2.3  21-Sep-2001  nathanw Catch up to -current.
 1.33.2.2  24-Aug-2001  nathanw Catch up with -current.
 1.33.2.1  21-Jun-2001  nathanw Catch up to -current.
 1.36.2.2  10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.36.2.1  10-Jul-2001  lukem regen for vop_kqfilter
 1.37.2.3  01-Oct-2001  fvdl Catch up with -current.
 1.37.2.2  18-Sep-2001  fvdl Do that regen thang.
 1.37.2.1  18-Sep-2001  fvdl Various changes to make cloning devices possible:

* Add an extra argument (struct vnode **) to VOP_OPEN. If it is
not NULL, specfs will create a cloned (aliased) vnode during
the call, and return it there. The caller should release and
unlock the original vnode if a new vnode was returned. The
new vnode is returned locked.

* Add a flag field to the cdevsw and bdevsw structures.
DF_CLONING indicates that it wants a new vnode for each
open (XXX is there a better way? devprop?)

* If a device is cloning, always call the close entry
point for a VOP_CLOSE.


Also, rewrite cons.c to do the right thing with vnodes. Use VOPs
rather then direct device entry calls. Suggested by mycroft@

Light to moderate testing done an i386 system (arch doesn't matter
though, these are MI changes).
 1.38.2.1  12-Nov-2001  thorpej Sync the thorpej-mips-cache branch with -current.
 1.44.2.9  11-Dec-2005  christos Sync with head.
 1.44.2.8  10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.44.2.7  04-Mar-2005  skrll Sync with HEAD.

Hi Perry!
 1.44.2.6  17-Jan-2005  skrll Sync with HEAD.
 1.44.2.5  24-Sep-2004  skrll Sync with HEAD.
 1.44.2.4  21-Sep-2004  skrll Fix the sync with head I botched.
 1.44.2.3  18-Sep-2004  skrll Sync with HEAD.
 1.44.2.2  03-Aug-2004  skrll Sync with HEAD
 1.44.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.51.4.1  19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.51.2.1  29-Apr-2005  kent sync with -current
 1.53.4.8  04-Feb-2008  yamt sync with head.
 1.53.4.7  21-Jan-2008  yamt sync with head
 1.53.4.6  07-Dec-2007  yamt sync with head
 1.53.4.5  15-Nov-2007  yamt sync with head.
 1.53.4.4  27-Oct-2007  yamt sync with head.
 1.53.4.3  03-Sep-2007  yamt sync with head.
 1.53.4.2  30-Dec-2006  yamt sync with head.
 1.53.4.1  21-Jun-2006  yamt sync with head.
 1.54.2.1  20-Oct-2005  yamt regen.
 1.56.2.2  18-Nov-2005  yamt - associate read-ahead context to vnode, rather than file.
- revert VOP_READ prototype.
 1.56.2.1  15-Nov-2005  yamt regen.
 1.63.12.1  24-May-2006  tron Merge 2006-05-24 NetBSD-current into the "peter-altq" branch.
 1.63.10.2  11-May-2006  elad sync with head
 1.63.10.1  08-Mar-2006  elad Regen for kernel authorization KPI.
 1.63.8.2  11-Aug-2006  yamt sync with head
 1.63.8.1  24-May-2006  yamt sync with head.
 1.63.6.1  01-Jun-2006  kardel Sync with head.
 1.63.4.1  09-Sep-2006  rpaulo sync with head
 1.65.4.1  13-Jul-2006  gdamore Merge from HEAD.
 1.66.6.1  10-Dec-2006  yamt sync with head.
 1.66.4.1  12-Jan-2007  ad Sync with head.
 1.67.10.1  11-Jul-2007  mjf Sync with head.
 1.67.8.7  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.67.8.6  21-Aug-2007  ad Add a per-mount flag that specifies whether the underlying file system code
is MP safe, and populate a per-vnode flag from this at vnode creation time.
If the file system is MP safe, do not acquire kernel_lock in the VOP wrappers.
 1.67.8.5  20-Aug-2007  ad Sync with HEAD.
 1.67.8.4  15-Jul-2007  ad Revert unintentionally committed change.
 1.67.8.3  15-Jul-2007  ad Sync with head.
 1.67.8.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.67.8.1  21-Mar-2007  ad Acquire the kernel lock in the VOP_* wrappers and the socket ops.
 1.67.4.1  15-Apr-2007  yamt sync with head.
 1.68.4.1  15-Aug-2007  skrll Sync with HEAD.
 1.70.10.2  27-Jul-2007  pooka regen: VOP_MMAP fflags -> prot
 1.70.10.1  27-Jul-2007  pooka file vnode_if.c was added on branch matt-mips64 on 2007-07-27 08:27:39 +0000
 1.70.8.1  14-Oct-2007  yamt sync with head.
 1.70.6.4  23-Mar-2008  matt sync with HEAD
 1.70.6.3  09-Jan-2008  matt sync with HEAD
 1.70.6.2  08-Nov-2007  matt sync with -HEAD
 1.70.6.1  06-Nov-2007  matt sync with HEAD
 1.70.4.3  27-Nov-2007  joerg Sync with HEAD. amd64 Xen support needs testing.
 1.70.4.2  11-Nov-2007  joerg Sync with HEAD.
 1.70.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.71.4.3  18-Feb-2008  mjf Sync with HEAD.
 1.71.4.2  08-Dec-2007  mjf Sync with HEAD.
 1.71.4.1  19-Nov-2007  mjf Sync with HEAD.
 1.71.2.1  13-Nov-2007  bouyer Sync with HEAD
 1.74.6.1  02-Jan-2008  bouyer Sync with HEAD
 1.74.2.2  28-Dec-2007  ad Make rump build.
 1.74.2.1  04-Dec-2007  ad Pull the vmlocking changes into a new branch.
 1.76.16.2  13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.76.16.1  19-Oct-2008  haad Sync with HEAD.
 1.76.14.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.76.10.3  11-Aug-2010  yamt sync with head.
 1.76.10.2  11-Mar-2010  yamt sync with head
 1.76.10.1  04-May-2009  yamt sync with head.
 1.76.6.2  17-Jan-2009  mjf Sync with HEAD.
 1.76.6.1  02-Jul-2008  mjf Sync with HEAD.
 1.78.4.1  17-Jul-2011  riz Pull up following revision(s) (requested by manu in ticket #1645):
lib/libc/sys/Makefile.inc 1.207 via patch
lib/libc/sys/extattr_get_file.2 patch
lib/libpuffs/dispatcher.c 1.34,1.36 via patch
lib/libpuffs/puffs.c 1.107 via patch
lib/libpuffs/puffs.h 1.115,1.118 via patch
sys/fs/puffs/puffs_msgif.h 1.71,1.76 via patch
sys/fs/puffs/puffs_vfsops.c 1.88 via patch
sys/fs/puffs/puffs_vnops.c 1.145,1.154 via patch
sys/kern/vfs_xattr.c 1.24-1.27 via patch
sys/kern/vnode_if.c 1.87 via patch
sys/sys/Makefile 1.133 via patch
sys/sys/extattr.h 1.6 via patch
sys/sys/vnode_if.h 1.81 via patch
sys/ufs/ffs/ffs_vnops.c patch
sys/ufs/ufs/ufs_extattr.c 1.31,1.34 via patch

* support extended attributes
* bump major due to structure growth
* add some spare space
* remove ABI sillyness
Support extended attributes.
Fix multiple non compliances in our Linux-like extattr API, and make it
public so that it can be used.
Improve a bit listxattr(2). It attemps to list both system and user
extended attributes, and it faled if calling user did not have privilege
for reading system EA. Now we just lise user EA and skip system EA in
reading them is not allowed.
Fix bug introduced in previous commuit: Do not vrele() a vnode we did not
obtained.
Improve UFS1 extended attributes usability
- autocreate attribute backing file for new attributes
- autoload attributes when issuing extattrctl start
- when autoloading attributes, do not display garbage warning when looking
up entries that got ENOENT
Add a flag to VOP_LISTEXTATTR(9) so that the vnode interface can tell the
filesystem in which format extended attribute shall be listed.
There are currently two formats:
- NUL-terminated strings, used for listxattr(2), this is the default.
- one byte length-pprefixed, non NUL-terminated strings, used for
extattr_list_file(2), which is obtanined by setting the
EXTATTR_LIST_PREFIXLEN flag to VOP_LISTEXTATTR(9)
This approach avoid the need for converting the list back and forth, except
in libperfuse, since FUSE uses NUL-terminated strings, and the kernel may
have requested EXTATTR_LIST_PREFIXLEN.
 1.78.2.1  19-Jan-2009  skrll Sync with HEAD.
 1.81.4.3  21-Apr-2011  rmind sync with head
 1.81.4.2  03-Jul-2010  rmind sync with head
 1.81.4.1  30-May-2010  rmind sync with head
 1.81.2.2  17-Aug-2010  uebayasi Sync with HEAD.
 1.81.2.1  30-Apr-2010  uebayasi Sync with HEAD.
 1.85.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.85.2.1  06-Jun-2011  jruoho Sync with HEAD.
 1.88.24.1  23-Jul-2013  riastradh sync with HEAD
 1.88.16.2  18-May-2014  rmind sync with head
 1.88.16.1  28-Aug-2013  rmind sync with head
 1.88.12.2  03-Dec-2017  jdolecek update from HEAD
 1.88.12.1  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.88.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.92.2.1  10-Aug-2014  tls Rebase.
 1.93.4.2  28-Aug-2017  skrll Sync with HEAD
 1.93.4.1  06-Jun-2015  skrll Sync with HEAD
 1.96.4.1  21-Apr-2017  bouyer Sync with HEAD
 1.96.2.2  26-Apr-2017  pgoyette Sync with HEAD
 1.96.2.1  20-Mar-2017  pgoyette Sync with HEAD
 1.104.2.3  14-Oct-2019  martin regen (for ticket #1405)
 1.104.2.2  25-Jul-2017  snj regen for ticket 130
 1.104.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.107.10.2  19-May-2020  martin Pull up following revision(s) (requested by hannken in ticket #917):

sys/kern/vnode_if.src: revision 1.80
sys/kern/vnode_if.c: revision 1.112

VOP_STRATEGY() may still deadlock with devices.

Change FSTRANS from LAZY to NO.

Regen.
 1.107.10.1  15-Oct-2019  martin Regen (for ticket #307)
 1.107.6.2  13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.107.6.1  08-Apr-2020  martin Merge changes from current as of 20200406
 1.109.2.2  29-Feb-2020  ad Sync with head.
 1.109.2.1  18-Jan-2020  ad Regen.
 1.112.6.1  01-Aug-2021  thorpej Sync with HEAD.
 1.118.4.1  21-Jun-2023  martin Regen (ticket #197)

RSS XML Feed