Gordon Bergling
c9b04ee4f8
kern: Fix two typos in source code comments
...
- s/accomodate/accommodate/
MFC after: 3 days
2022-04-02 14:52:49 +02:00
Mateusz Guzik
0c805718cb
vfs: fix memory leak on lookup with fds with ioctl caps
...
Reviewed by: markj
PR: 262515
Noted by: firk@cantconnect.ru
Differential Revision: https://reviews.freebsd.org/D34667
2022-04-02 12:09:07 +00:00
Mateusz Guzik
bb92cd7bcd
vfs: NDFREE(&nd, NDF_ONLY_PNBUF) -> NDFREE_PNBUF(&nd)
2022-03-24 10:20:51 +00:00
Mateusz Guzik
6ff3e8a316
cache: add a comment about a realpath bug
2022-03-19 15:11:25 +00:00
Mateusz Guzik
02fc4e319c
cache: use flexible array member
...
... instead of 0-sizing the array
2022-03-13 14:43:35 +00:00
Mateusz Guzik
afb08a6d07
cache: hide hash stats behind DEBUG_CACHE
...
They take a long time to dump and hinder sysctl -a when used with
DIAGNOSTIC.
2022-03-03 17:21:58 +00:00
Mateusz Guzik
1d65a9b47e
cache: improve vnode vs name assertion in cache_enter_time
2022-02-11 12:29:26 +00:00
Mateusz Guzik
611470a515
cache: remove NOCACHE handling from cache_fplookup_noentry
...
It was copy-pasted from locked lookup. As LOOKUP operation cannot have
the flag set it was always ending up setting MAKEENTRY.
2022-02-11 12:29:26 +00:00
Mateusz Guzik
7e1d3eefd4
vfs: remove the unused thread argument from NDINIT*
...
See b4a58fbf64
("vfs: remove cn_thread")
Bump __FreeBSD_version to 1400043.
2021-11-25 22:50:42 +00:00
Mateusz Guzik
7e9680d3be
cache: whack "set but not used" warnings
2021-11-14 16:57:43 +00:00
Konstantin Belousov
9a0bee9f6a
Make vn_fullpath_hardlink() externally callable
...
Reviewed by: markj
Tested by: pho
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D32611
2021-10-28 20:49:26 +03:00
Mateusz Guzik
628c3b307f
cache: only let non-dir descriptors through when doing EMPTYPATH lookups
...
Otherwise things like realpath against a file and '.' end up with an
illegal state of having a regular vnode for the parent.
Reported by: syzbot+9aa5439dd9c708aeb1a8@syzkaller.appspotmail.com
2021-10-27 18:27:47 +00:00
Mateusz Guzik
1045352f15
cache: only assert on flags when dealing with EMPTYPATH
...
Reported by: syzbot+bd48ee0843206a09e6b8@syzkaller.appspotmail.com
Fixes: 7dd419cabc
("cache: add empty path support")
2021-10-17 08:42:47 +00:00
Mateusz Guzik
7dd419cabc
cache: add empty path support
...
This avoids spurious drop offs as EMPTY is passed regardless of the
actual path name.
Pushign the work inside the lookup instead of just ignorign the flag
allows avoid checking for empty pathname for all other lookups.
2021-10-16 20:08:37 +00:00
Mateusz Guzik
b4a58fbf64
vfs: remove cn_thread
...
It is always curthread.
Reviewed by: kib
Differential Revision: https://reviews.freebsd.org/D32453
2021-10-11 13:21:47 +00:00
Mateusz Guzik
a2cb65b8fe
cache: count vnodes in cache_purgevfs
2021-09-18 10:16:50 +00:00
Mateusz Guzik
b65ad70195
cache: retire cache_fast_revlookup sysctl
...
Sponsored by: Rubicon Communications, LLC ("Netgate")
2021-08-23 15:31:44 +02:00
Mateusz Guzik
b30e7cb7fa
cache: add OPENREAD and OPENWRITE to fast path lookup
2021-08-07 13:02:38 +02:00
Mateusz Guzik
844aa31c6d
cache: add cache_enter_time_flags
2021-07-12 07:03:14 +02:00
Mateusz Guzik
12288bd999
cache: fix lockless absolute symlink traversal to non-fp mounts
...
Said lookups would incorrectly fail with EOPNOTSUP.
Reported by: kib
2021-05-11 04:30:12 +00:00
Mark Johnston
c8bbb1272c
vfs: Fix error handling in vn_fullpath_hardlink()
...
vn_fullpath_any_smr() will return a positive error number if the
caller-supplied buffer isn't big enough. In this case the error must be
propagated up, otherwise we may copy out uninitialized bytes.
Reported by: syzkaller+KMSAN
Reviewed by: mjg, kib
MFC aftr: 3 days
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D30198
2021-05-10 20:22:27 -04:00
Mateusz Guzik
074abaccfa
cache: remove incomplete lockless lockout support during resize
...
This is already properly handled thanks to 2 step hash replacement.
2021-04-28 19:53:25 +00:00
Mateusz Guzik
4f0279e064
cache: extend mismatch vnode assert print to include the name
2021-04-15 07:55:43 +00:00
Mateusz Guzik
72b3b5a941
vfs: replace vfs_smr_quiesce with vfs_smr_synchronize
...
This ends up using a smr specific method.
Suggested by: markj
Tested by: pho
2021-04-08 11:14:45 +00:00
Mateusz Guzik
13b3862ee8
cache: update an assert on CACHE_FPL_STATUS_ABORTED
...
Since symlink support it can get upgraded to CACHE_FPL_STATUS_DESTROYED.
Reported by: bdrewery
2021-04-06 22:31:58 +02:00
Mateusz Guzik
f79bd71def
cache: add high level overview
...
Differential Revision: https://reviews.freebsd.org/D28675
2021-04-02 05:11:05 +02:00
Mateusz Guzik
dc532884d5
cache: fix resizing in face of lockless lookup
...
Reported by: pho
Tested by: pho
2021-04-02 05:11:05 +02:00
Mateusz Guzik
1239a72221
cache: temporarily drop the assert that dvp != vp when adding an entry
...
Historically it was allowed for any names, but arguably should never be
even attempted. Allow it again since there is a release pending and
allowing it is bug-compatible with previous behavior.
Reported by: otis
2021-02-27 22:29:50 +00:00
Mateusz Guzik
39e0c3f686
cache: assorted comment fixups
2021-02-09 17:09:44 +01:00
Mateusz Guzik
2f8a844635
cache: remove the largely obsolete general description
...
Examples of inconsistencies with the current state:
- references LRU of all entries, removed years ago
- references a non-existent lock (neglist)
- claims negative entries have a NULL target
It will be replaced with a more accurate and more informative
description.
In the meantime take it out so it stops misleading.
2021-02-06 00:28:40 +01:00
Mateusz Guzik
0e1594e60e
cache: fix vfs:namecache:lookup:miss probe call sites
2021-02-06 00:28:40 +01:00
Mateusz Guzik
2e96132a7d
cache: drop spurious arg from panic in cache_validate
...
vp is already reported when noting mismatch
2021-02-06 00:28:39 +01:00
Mateusz Guzik
b54ed778fe
cache: comment on FNV
2021-02-06 00:13:57 +01:00
Mateusz Guzik
45456abc4c
cache: fix trailing slash support in face of permission problems
...
Reported by: Johan Hendriks <joh.hendriks gmail.com>
Tested by: kevans
2021-02-02 18:13:51 +00:00
Mateusz Guzik
6f19dc2124
cache: add delayed degenerate path handling
2021-02-01 04:53:23 +00:00
Mateusz Guzik
bbfb1edd70
cache: move hash computation into the parsing loop
2021-02-01 04:36:45 +00:00
Mateusz Guzik
e027e24bfa
cache: add trailing slash support
...
Tested by: pho
2021-01-31 12:02:46 +00:00
Mateusz Guzik
8cbd164a17
cache: handle NOFOLLOW requests for symlinks
...
Tested by: pho
2021-01-31 12:02:46 +00:00
Mateusz Guzik
5c325977b1
cache: add missing MNT_NOSYMFOLLOW check to symlink traversal
2021-01-27 15:08:38 +00:00
Mateusz Guzik
5fc384d181
cache: fallback when encountering a mount point during .. lookup
...
The current abort is overzealous.
2021-01-27 16:00:31 +01:00
Mateusz Guzik
a098a831a1
cache: tidy up handling of foo/bar lookups where foo is not a directory
...
The code was performing an avoidable check for doomed state to account
for foo being a VDIR but turning VBAD. Now that dooming puts a vnode
in a permanent "modify" state this is no longer necessary as the final
status check will catch it.
2021-01-26 20:42:53 +00:00
Mateusz Guzik
a51eca7936
cache: stop referring to removing entries as invalidating them
...
Said use is a remnant from the old code and clashes with the NCF_INVALID
flag.
2021-01-26 20:42:53 +00:00
Mateusz Guzik
6943671b48
cache: convert cache_fplookup_parse to void now that it always succeeds
2021-01-26 13:24:03 +01:00
Mateusz Guzik
e7cf562a40
cache: change ->v_cache_dd synchronisation rules
...
Instead of resorting to seqc modification take advantage of immutability
of entries and check if the entry still matches after everything got
prepared.
2021-01-25 22:41:13 +00:00
Mateusz Guzik
6f08427649
cache: make ->v_cache_dd accesses atomic-clean for lockless usage
2021-01-25 22:41:13 +00:00
Mateusz Guzik
6ef8fede86
cache: make ->nc_flag accesses atomic-clean for lockless usage
2021-01-25 22:41:13 +00:00
Mateusz Guzik
ffcf8f97f8
cache: store vnodes in local vars in cache_zap_locked
2021-01-25 22:41:13 +00:00
Mateusz Guzik
868643e722
cache: assorted cleanups
2021-01-25 19:45:24 +00:00
Mateusz Guzik
1c7a65adb0
cache: track calls to cache_symlink_alloc with unsupported size
...
While here assert on size passed to free.
2021-01-25 19:45:23 +00:00
Mateusz Guzik
02ec31bdf6
cache: add back target entry on rename
2021-01-23 18:10:16 +00:00