History log of /src/sys/rump/librump/rumpvfs/rumpvnode_if.c |
Revision | | Date | Author | Comments |
1.41 |
| 15-Jun-2023 |
hannken | Regen.
|
1.40 |
| 18-Jul-2022 |
thorpej | branches: 1.40.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.39 |
| 03-May-2022 |
hannken | Regen.
|
1.38 |
| 03-May-2022 |
hannken | Regen.
|
1.37 |
| 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.36 |
| 02-Jul-2021 |
dholland | Regen.
|
1.35 |
| 29-Jun-2021 |
dholland | Regen.
|
1.34 |
| 16-May-2020 |
christos | branches: 1.34.6; Add ACL support for FFS. From FreeBSD.
|
1.33 |
| 23-Feb-2020 |
ad | Regen.
|
1.32 |
| 01-Dec-2019 |
ad | branches: 1.32.2; Regen for VOP_LOCK & LK_UPGRADE/LK_DOWNGRADE.
|
1.31 |
| 12-Jul-2017 |
hannken | branches: 1.31.6; Regen.
|
1.30 |
| 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.29 |
| 04-Jun-2017 |
hannken | Regen.
|
1.28 |
| 26-May-2017 |
riastradh | branches: 1.28.2; regen
|
1.27 |
| 26-Apr-2017 |
riastradh | regen
|
1.26 |
| 16-Apr-2017 |
riastradh | regen to confirm no functional change
|
1.25 |
| 16-Apr-2017 |
riastradh | regen
|
1.24 |
| 15-Apr-2017 |
riastradh | regen to confirm no functional change
|
1.23 |
| 11-Apr-2017 |
riastradh | regen to confirm no functional change
|
1.22 |
| 11-Apr-2017 |
riastradh | regen
|
1.21 |
| 22-Feb-2017 |
hannken | Regen.
|
1.20 |
| 26-Jan-2016 |
pooka | branches: 1.20.2; 1.20.4; regen vnode interfaces
|
1.19 |
| 26-Jan-2016 |
pooka | Put the kernelside rump kernel headers into <rump-sys> instead of sprinkling them around the faction directories. Avoids having to add a CPPFLAGS (or several) to pretty much every component Makefile.
Leave compat headers around in the old locations.
The commit changes some autogenerated files, but I'll fix the generators shortly and regen.
|
1.18 |
| 20-Apr-2015 |
riastradh | regen for good measure (no functional change)
|
1.17 |
| 20-Apr-2015 |
riastradh | Make VOP_LINK return directory still locked and referenced.
Ride 7.99.10 bump.
|
1.16 |
| 25-Jul-2014 |
dholland | branches: 1.16.4; Regen for VOP_FALLOCATE/VOP_FDISCARD.
|
1.15 |
| 07-Feb-2014 |
hannken | branches: 1.15.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.14 |
| 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.13 |
| 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.12 |
| 17-Jul-2013 |
pooka | regen
|
1.11 |
| 08-Aug-2011 |
manu | branches: 1.11.2; 1.11.12; 1.11.16; 1.11.24; regen
|
1.10 |
| 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.9 |
| 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.8 |
| 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.7 |
| 24-Jun-2010 |
hannken | branches: 1.7.2; 1.7.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.6 |
| 14-Apr-2010 |
pooka | regen: rump vnodeif went on a diet
|
1.5 |
| 14-Apr-2010 |
pooka | regenefactor for comment and whitespace changes
|
1.4 |
| 10-Apr-2010 |
pooka | regen: remove unused vdesc_transports
|
1.3 |
| 15-Oct-2009 |
pooka | branches: 1.3.2; 1.3.4; regen: scheduling points
|
1.2 |
| 29-Sep-2009 |
pooka | regen: remove VNODE_LOCKDEBUG
|
1.1 |
| 19-Nov-2008 |
pooka | branches: 1.1.4; 1.1.6; 1.1.10; Split vfs out of rumpkern into rumpvfs. Non-fs rumps no longer include the file system code. File system rumps explicitly need to include rumpvfs from now on.
|
1.1.10.4 |
| 11-Aug-2010 |
yamt | sync with head.
|
1.1.10.3 |
| 11-Mar-2010 |
yamt | sync with head
|
1.1.10.2 |
| 04-May-2009 |
yamt | sync with head.
|
1.1.10.1 |
| 19-Nov-2008 |
yamt | file rumpvnode_if.c was added on branch yamt-nfs-mp on 2009-05-04 08:14:31 +0000
|
1.1.6.2 |
| 19-Jan-2009 |
skrll | Sync with HEAD.
|
1.1.6.1 |
| 19-Nov-2008 |
skrll | file rumpvnode_if.c was added on branch nick-hppapmap on 2009-01-19 13:20:27 +0000
|
1.1.4.2 |
| 17-Jan-2009 |
mjf | Sync with HEAD.
|
1.1.4.1 |
| 19-Nov-2008 |
mjf | file rumpvnode_if.c was added on branch mjf-devfs2 on 2009-01-17 13:29:38 +0000
|
1.3.4.3 |
| 21-Apr-2011 |
rmind | sync with head
|
1.3.4.2 |
| 03-Jul-2010 |
rmind | sync with head
|
1.3.4.1 |
| 30-May-2010 |
rmind | sync with head
|
1.3.2.2 |
| 17-Aug-2010 |
uebayasi | Sync with HEAD.
|
1.3.2.1 |
| 30-Apr-2010 |
uebayasi | Sync with HEAD.
|
1.7.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.7.2.1 |
| 06-Jun-2011 |
jruoho | Sync with HEAD.
|
1.11.24.1 |
| 23-Jul-2013 |
riastradh | sync with HEAD
|
1.11.16.2 |
| 18-May-2014 |
rmind | sync with head
|
1.11.16.1 |
| 28-Aug-2013 |
rmind | sync with head
|
1.11.12.2 |
| 03-Dec-2017 |
jdolecek | update from HEAD
|
1.11.12.1 |
| 20-Aug-2014 |
tls | Rebase to HEAD as of a few days ago.
|
1.11.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.15.2.1 |
| 10-Aug-2014 |
tls | Rebase.
|
1.16.4.3 |
| 28-Aug-2017 |
skrll | Sync with HEAD
|
1.16.4.2 |
| 19-Mar-2016 |
skrll | Sync with HEAD
|
1.16.4.1 |
| 06-Jun-2015 |
skrll | Sync with HEAD
|
1.20.4.1 |
| 21-Apr-2017 |
bouyer | Sync with HEAD
|
1.20.2.2 |
| 26-Apr-2017 |
pgoyette | Sync with HEAD
|
1.20.2.1 |
| 20-Mar-2017 |
pgoyette | Sync with HEAD
|
1.28.2.2 |
| 25-Jul-2017 |
snj | regen for ticket 130
|
1.28.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.31.6.1 |
| 08-Apr-2020 |
martin | Merge changes from current as of 20200406
|
1.32.2.1 |
| 29-Feb-2020 |
ad | Sync with head.
|
1.34.6.1 |
| 01-Aug-2021 |
thorpej | Sync with HEAD.
|
1.40.4.1 |
| 21-Jun-2023 |
martin | Regen (ticket #197)
|