History log of /src/sys/ufs/chfs/chfs_vnops.c |
Revision | | Date | Author | Comments |
1.48 |
| 27-Mar-2022 |
christos | add a kauth vnode check for creating links
|
1.47 |
| 07-Dec-2021 |
andvar | fix various typos, mainly in comments.
|
1.46 |
| 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.45 |
| 18-Jul-2021 |
dholland | Use macros for the canned parts of device and fifo vnode op tables.
Add GENFS_SPECOP_ENTRIES and GENFS_FIFOOP_ENTRIES macros that contain the portion of the vnode ops table declaration that is (conservatively) the same in every fs. Use these in every fs that supports devices and/or fifos with separate ops tables.
Note that ptyfs works differently (it has one type of vnode with open-coded dispatch to the specfs code, which I haven't changed in this commit) and rump/librump/rumpvfs/rumpfs.c has an indirect dynamic dispatch that already does more or less the same thing, which I also haven't changed.
Also note that this anticipates a few bits in the next changeset here and there, and adds missing but unreachable calls in some cases (e.g. most fses weren't defining whiteout on devices and fifos, but it isn't reachable there), and it changes parsepath on devices and fifos to genfs_badop from genfs_parsepath (but it's not reachable there either).
It appears that devices in kernfs were missing kqfilter, so it's possible that if you try to use kqueue on /kern/rootdev that it'll explode.
And finally note that the ops declaration tables aren't order-dependent. (Other than vop_default_desc has to come first.) Otherwise this wouldn't work.
|
1.44 |
| 05-Jul-2021 |
dholland | whitespace
|
1.43 |
| 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.42 |
| 05-Sep-2020 |
riastradh | branches: 1.42.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.41 |
| 23-May-2020 |
ad | Move proc_lock into the data segment. It was dynamically allocated because at the time we had mutex_obj_alloc() but not __cacheline_aligned.
|
1.40 |
| 20-May-2020 |
christos | fix accessx confusion (thanks hannken@)
|
1.39 |
| 16-May-2020 |
christos | Add ACL support for FFS. From FreeBSD.
|
1.38 |
| 23-Apr-2020 |
ad | PR kern/54759 (vm.ubc_direct deadlock when read()/write() into mapping of itself)
- Add new flag UBC_ISMAPPED which tells ubc_uiomove() the object is mmap()ed somewhere. Use it to decide whether to do direct-mapped copy, rather than poking around directly in the vnode in ubc_uiomove(), which is ugly and doesn't work for tmpfs. It would be nicer to contain all this in UVM but the filesystem provides the needed locking here (VV_MAPPED) and to reinvent that would suck more.
- Rename UBC_UNMAP_FLAG() to UBC_VNODE_FLAGS(). Pass in UBC_ISMAPPED where appropriate.
|
1.37 |
| 04-Apr-2020 |
ad | branches: 1.37.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.36 |
| 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.35 |
| 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.34 |
| 17-Jun-2019 |
ryoon | branches: 1.34.4; Fix build without DIAGNOSTIC
|
1.33 |
| 26-May-2017 |
riastradh | branches: 1.33.10; 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.32 |
| 26-Apr-2017 |
riastradh | 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.31 |
| 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.30 |
| 30-Mar-2017 |
hannken | Remove now redundant calls to fstrans_start()/fstrans_done().
|
1.29 |
| 20-Aug-2016 |
hannken | branches: 1.29.2; Remove now obsolete operation vcache_remove().
Welcome to 7.99.36
|
1.28 |
| 20-Apr-2015 |
riastradh | branches: 1.28.2; Make VOP_LINK return directory still locked and referenced.
Ride 7.99.10 bump.
|
1.27 |
| 28-Mar-2015 |
maxv | Remove the 'cred' argument from bread(). Remove a now unused var in ffs_snapshot.c. Update the man page accordingly.
ok hannken@
|
1.26 |
| 28-Mar-2015 |
maxv | Remove the 'cred' argument from breadn(), and update the man page accordingly.
ok hannken@
|
1.25 |
| 27-Mar-2015 |
riastradh | Disentangle buffer-cached I/O from page-cached I/O in UFS.
Page-cached I/O is used for regular files, and is initiated by VFS users such as userland and NFS.
Buffer-cached I/O is used for directories and symlinks, and is issued only internally by UFS.
New UFS routine ufs_bufio replaces vn_rdwr for internal use. ufs_bufio is implemented by new UFS operations uo_bufrd/uo_bufwr, which sit in ufs_readwrite.c alongside the VOP_READ/VOP_WRITE implementations.
I preserved the code as much as possible and will leave further simplification for future commits. I kept the ulfs_readwrite.c copypasta close to ufs_readwrite.c in case we ever want to merge them back; likewise ext2fs_readwrite.c.
No externally visible semantic change. All atf fs tests still pass.
|
1.24 |
| 11-Jan-2015 |
hannken | Change chfs from hashlist to vcache.
|
1.23 |
| 11-Jan-2015 |
hannken | Return immediately from successfull cache_lookup(). No need to unlock an unlocked vnode.
|
1.22 |
| 25-Jul-2014 |
dholland | branches: 1.22.4; Add VOP_FALLOCATE and VOP_FDISCARD to every vnode ops table I can find.
The filesystem ones all call genfs_eopnotsupp - right now I am only implementing the plumbing and we can implement fallocate and/or fdiscard for files later.
The device ones call spec_fallocate (which is also genfs_eopnotsupp) and spec_fdiscard, which dispatches to the device-level op.
The fifo ones all call vn_fifo_bypass, which also ends up being EOPNOTSUPP.
|
1.21 |
| 07-Feb-2014 |
hannken | branches: 1.21.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.20 |
| 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.19 |
| 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.18 |
| 20-Oct-2013 |
christos | remove unused
|
1.17 |
| 23-Jun-2013 |
dholland | branches: 1.17.2; Stick ffs_, ext2_, chfs_, filecore_, cd9660_, or mfs_ in front of the following symbols so as to disambiguate fully. (Christos already did the lfs ones.)
lblkno lblktosize lfragtosize numfrags blkroundup fragroundup
|
1.16 |
| 19-Jun-2013 |
dholland | blkoff -> chfs_blkoff blksize -> chfs_blksize
|
1.15 |
| 18-Mar-2013 |
plunky | C99 section 6.7.2.3 (Tags) Note 3 states that:
A type specifier of the form
enum identifier
without an enumerator list shall only appear after the type it specifies is complete.
which means that we cannot pass an "enum vtype" argument to kauth_access_action() without fully specifying the type first. Unfortunately there is a complicated include file loop which makes that difficult, so convert this minimal function into a macro (and capitalize it).
(ok elad@)
|
1.14 |
| 22-Jan-2013 |
dholland | Stuff UFS_ in front of a few of ufs's symbols to reduce namespace pollution. Specifically: ROOTINO -> UFS_ROOTINO WINO -> UFS_WINO NXADDR -> UFS_NXADDR NDADDR -> UFS_NDADDR NIADDR -> UFS_NIADDR MAXSYMLINKLEN -> UFS_MAXSYMLINKLEN MAXSYMLINKLEN_UFS[12] -> UFS[12]_MAXSYMLINKLEN (for consistency)
Sort out ext2fs's misuse of NDADDR and NIADDR; fortunately, these have the same values in ext2fs and ffs.
No functional change intended.
|
1.13 |
| 05-Nov-2012 |
dholland | Excise struct componentname from the namecache.
This uglifies the interface, because several operations need to be passed the namei flags and cache_lookup also needs for the time being to be passed cnp->cn_nameiop. Nonetheless, it's a net benefit.
The glop should be able to go away eventually but requires structural cleanup elsewhere first.
This change requires a kernel bump.
|
1.12 |
| 05-Nov-2012 |
dholland | Disentangle the namecache from the internals of namei.
- Move the namecache's hash computation to inside the namecache code, instead of being spread out all over the place. Remove cn_hash from struct componentname and delete all uses of it.
- It is no longer necessary (if it ever was) for cache_lookup and cache_lookup_raw to clear MAKEENTRY from cnp->cn_flags for the cases that cache_enter already checks for.
- Rearrange the interface of cache_lookup (and cache_lookup_raw) to make it somewhat simpler, to exclude certain nonexistent error conditions, and (most importantly) to make it not require write access to cnp->cn_flags.
This change requires a kernel bump.
|
1.11 |
| 19-Oct-2012 |
ttoth | CHFS comments
|
1.10 |
| 23-Aug-2012 |
ttoth | branches: 1.10.2; chfs: uappnd flag patch
|
1.9 |
| 10-Aug-2012 |
ttoth | chfs bugfix [node was obsoleted twice]
|
1.8 |
| 22-Jul-2012 |
rmind | Move some the test for MAKEENTRY into the cache_enter(9). Make some variables in vfs_cache.c static, __read_mostly, etc.
No objection on tech-kern@.
|
1.7 |
| 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.6 |
| 18-Apr-2012 |
joerg | Don't depend on implicit enum casts, be explicit.
|
1.5 |
| 17-Apr-2012 |
christos | it is not an error if the kernel needs to clear the setuid/ setgid bit on write/chown/chgrp
|
1.4 |
| 12-Apr-2012 |
ttoth | branches: 1.4.2; using chtype on media instead of vtype debug.c deleted
|
1.3 |
| 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.2 |
| 24-Nov-2011 |
agc | branches: 1.2.2; 1.2.4; quick workaround to make this compile, with thanks to Hisashi Fujinaka for the nudge.
|
1.1 |
| 24-Nov-2011 |
ahoka | Import CHFS, which was formerly known as ChewieFS.
CHFS is a file system for flash devices developed by the Software Engineering Department at University of Szeged, Hungary.
http://chewiefs.sed.hu/
Thanks for all who made it possible.
|
1.2.4.2 |
| 12-Aug-2012 |
martin | Pull up following revision(s) (requested by manu in ticket #484): sys/fs/nilfs/nilfs_vnops.c: revision 1.18 sys/ufs/ufs/ufs_lookup.c: revision 1.117 sys/nfs/nfs_vnops.c: revision 1.295 sys/ufs/chfs/chfs_vnops.c: revision 1.8 sys/ufs/ext2fs/ext2fs_lookup.c: revision 1.70 sys/fs/unionfs/unionfs_vnops.c: revision 1.6 sys/kern/vfs_cache.c: revision 1.89 sys/fs/efs/efs_vnops.c: revision 1.26 sys/fs/hfs/hfs_vnops.c: revision 1.26 sys/fs/adosfs/adlookup.c: revision 1.16 sys/fs/puffs/puffs_vnops.c: revision 1.168 sys/fs/tmpfs/tmpfs_vnops.c: revision 1.98 sys/fs/ntfs/ntfs_vnops.c: revision 1.52 sys/fs/cd9660/cd9660_lookup.c: revision 1.20 sys/fs/msdosfs/msdosfs_lookup.c: revision 1.24 sys/fs/smbfs/smbfs_vnops.c: revision 1.80 sys/fs/udf/udf_vnops.c: revision 1.72 sys/fs/filecorefs/filecore_lookup.c: revision 1.14 sys/fs/puffs/puffs_node.c: revision 1.25 Move some the test for MAKEENTRY into the cache_enter(9). Make some variables in vfs_cache.c static, __read_mostly, etc. No objection on tech-kern@.
|
1.2.4.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.2.2.3 |
| 02-Jun-2012 |
mrg | sync to latest -current.
|
1.2.2.2 |
| 29-Apr-2012 |
mrg | sync to latest -current.
|
1.2.2.1 |
| 05-Apr-2012 |
mrg | sync to latest -current.
|
1.4.2.7 |
| 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.4.2.6 |
| 23-Jan-2013 |
yamt | sync with head
|
1.4.2.5 |
| 16-Jan-2013 |
yamt | sync with (a bit old) head
|
1.4.2.4 |
| 30-Oct-2012 |
yamt | sync with head
|
1.4.2.3 |
| 23-May-2012 |
yamt | sync with head.
|
1.4.2.2 |
| 17-Apr-2012 |
yamt | sync with head
|
1.4.2.1 |
| 12-Apr-2012 |
yamt | file chfs_vnops.c was added on branch yamt-pagecache on 2012-04-17 00:08:55 +0000
|
1.10.2.5 |
| 03-Dec-2017 |
jdolecek | update from HEAD
|
1.10.2.4 |
| 20-Aug-2014 |
tls | Rebase to HEAD as of a few days ago.
|
1.10.2.3 |
| 23-Jun-2013 |
tls | resync from head
|
1.10.2.2 |
| 25-Feb-2013 |
tls | resync with head
|
1.10.2.1 |
| 20-Nov-2012 |
tls | Resync to 2012-11-19 00:00:00 UTC
|
1.17.2.1 |
| 18-May-2014 |
rmind | sync with head
|
1.21.2.1 |
| 10-Aug-2014 |
tls | Rebase.
|
1.22.4.4 |
| 28-Aug-2017 |
skrll | Sync with HEAD
|
1.22.4.3 |
| 05-Oct-2016 |
skrll | Sync with HEAD
|
1.22.4.2 |
| 06-Jun-2015 |
skrll | Sync with HEAD
|
1.22.4.1 |
| 06-Apr-2015 |
skrll | Sync with HEAD
|
1.28.2.1 |
| 26-Apr-2017 |
pgoyette | Sync with HEAD
|
1.29.2.1 |
| 21-Apr-2017 |
bouyer | Sync with HEAD
|
1.33.10.2 |
| 13-Apr-2020 |
martin | Mostly merge changes from HEAD upto 20200411
|
1.33.10.1 |
| 08-Apr-2020 |
martin | Merge changes from current as of 20200406
|
1.34.4.3 |
| 29-Feb-2020 |
ad | Sync with head.
|
1.34.4.2 |
| 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.34.4.1 |
| 17-Jan-2020 |
ad | Sync with head.
|
1.37.2.1 |
| 25-Apr-2020 |
bouyer | Sync with bouyer-xenpvh-base2 (HEAD)
|
1.42.6.1 |
| 01-Aug-2021 |
thorpej | Sync with HEAD.
|