git: 9ca9a79ea67e - main - Revert erronously pushed series of commits, which should not be.
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sun, 03 May 2026 20:12:32 UTC
The branch main has been updated by kib:
URL: https://cgit.FreeBSD.org/src/commit/?id=9ca9a79ea67e8569c31ecc328e001b35908f491c
commit 9ca9a79ea67e8569c31ecc328e001b35908f491c
Author: Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2026-05-03 20:10:06 +0000
Commit: Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2026-05-03 20:12:03 +0000
Revert erronously pushed series of commits, which should not be.
Sorry for the mess.
Revert "sys/vnode.h: remove stale comment"
This reverts commit f193f5a749b696e6c05fa2c47c24522b1624b1a7.
Revert "vfs: convert VFS_OPs from macros to static inlines"
This reverts commit 48bf024f2ef5afeba3500bd92a04283370479edf.
Revert "vnode: add VIRF_KNOTE flag"
This reverts commit 7fe74a02764e5899b10cdc45ab34182b961d5d19.
Revert "vfs: convert vfs_op_thread_* macros to static inlines"
This reverts commit a61a696e78a967b149a6e39b1f98ada26217a6bb.
Revert "struct vnode: assign v_rl.resv1 as v_vrflag"
This reverts commit d990e8f0e9478194569ba28c366b0c0c0f414e7b.
Revert "sys/rangelock.h: explicitly enumerate padding at the end of the structure"
This reverts commit a770638ecf16515d8922111c3fdd417aba6c045e.
Revert "bufspace_wait(): only try to help bufdaemon if there is a chance to help"
This reverts commit 067cfac2e7bd9dc857fb6cc504c01b0249bcd1b7.
Revert "Add O_SYMLINK emulation"
This reverts commit f9458655e78f6532e962a13d28d6a6086b4156de.
Revert "libc: add freadlink(3)"
This reverts commit ae6a13deb8e33a52188643e09171207e1d7171e8.
Revert "Add O_SYMLINK emulation"
This reverts commit 2213820b6f4cd22bbfdc0f45741c3e7d17ae82c0.
---
include/unistd.h | 1 -
lib/libc/gen/Makefile.inc | 1 -
lib/libc/gen/Symbol.map | 1 -
lib/libc/gen/freadlink.c | 16 --
lib/libc/include/libc_private.h | 3 -
lib/libc/sys/Symbol.map | 4 -
lib/libc/sys/open.c | 4 +-
lib/libc/sys/openat.c | 44 +-----
lib/libthr/thread/thr_syscalls.c | 5 +-
sys/kern/vfs_bio.c | 3 +-
sys/kern/vfs_cache.c | 4 +-
sys/kern/vfs_mount.c | 6 +-
sys/kern/vfs_subr.c | 57 +++----
sys/kern/vfs_vnops.c | 4 +-
sys/sys/fcntl.h | 7 -
sys/sys/mount.h | 323 +++++++++++++++++----------------------
sys/sys/rangelock.h | 6 -
sys/sys/vnode.h | 28 ++--
18 files changed, 188 insertions(+), 329 deletions(-)
diff --git a/include/unistd.h b/include/unistd.h
index 290bcce6a0b3..797eac4c364d 100644
--- a/include/unistd.h
+++ b/include/unistd.h
@@ -518,7 +518,6 @@ int execvpe(const char *, char * const *, char * const *);
int feature_present(const char *);
int fchroot(int);
char *fflagstostr(u_long);
-ssize_t freadlink(int fd, char *buf, size_t bufsize);
int getdomainname(char *, int);
int getentropy(void *, size_t);
int getgrouplist(const char *, gid_t, gid_t *, int *);
diff --git a/lib/libc/gen/Makefile.inc b/lib/libc/gen/Makefile.inc
index 18a68902f50a..c31f789fd1d1 100644
--- a/lib/libc/gen/Makefile.inc
+++ b/lib/libc/gen/Makefile.inc
@@ -56,7 +56,6 @@ SRCS+= \
fmtmsg.c \
fnmatch.c \
fpclassify.c \
- freadlink.c \
frexp.c \
fstab.c \
ftok.c \
diff --git a/lib/libc/gen/Symbol.map b/lib/libc/gen/Symbol.map
index 4d22251f7ec5..60f34b3a1923 100644
--- a/lib/libc/gen/Symbol.map
+++ b/lib/libc/gen/Symbol.map
@@ -475,7 +475,6 @@ FBSD_1.8 {
};
FBSD_1.9 {
- freadlink;
posix_spawn_file_actions_addchdir;
posix_spawn_file_actions_addfchdir;
posix_spawnattr_getexecfd_np;
diff --git a/lib/libc/gen/freadlink.c b/lib/libc/gen/freadlink.c
deleted file mode 100644
index e1ed7aba6c06..000000000000
--- a/lib/libc/gen/freadlink.c
+++ /dev/null
@@ -1,16 +0,0 @@
-/*-
- * SPDX-License-Identifier: BSD-2-Clause
- *
- * Copyright 2026 The FreeBSD Foundation
- *
- * This software were developed by Konstantin Belousov <kib@FreeBSD.org>
- * under sponsorship from the FreeBSD Foundation.
- */
-
-#include <unistd.h>
-
-ssize_t
-freadlink(int fd, char *buf, size_t bufsize)
-{
- return (readlinkat(fd, "", buf, bufsize));
-}
diff --git a/lib/libc/include/libc_private.h b/lib/libc/include/libc_private.h
index ef490e1a66ef..299629fce2ad 100644
--- a/lib/libc/include/libc_private.h
+++ b/lib/libc/include/libc_private.h
@@ -384,7 +384,4 @@ struct uexterror;
int __uexterr_format(const struct uexterror *ue, char *buf, size_t bufsz);
int __libc_uexterr_gettext(char *buf, size_t bufsz);
-int __impl_openat(int fd, const char *path, int flags, ...);
-int __openat_symlink(int fd, const char *path, int flags, int interposed);
-
#endif /* _LIBC_PRIVATE_H_ */
diff --git a/lib/libc/sys/Symbol.map b/lib/libc/sys/Symbol.map
index 1bae1fb78538..8acffcfd714e 100644
--- a/lib/libc/sys/Symbol.map
+++ b/lib/libc/sys/Symbol.map
@@ -75,7 +75,3 @@ FBSD_1.7 {
FBSD_1.9 {
pdwait;
};
-
-FBSDprivate_1.0 {
- __openat_symlink;
-};
diff --git a/lib/libc/sys/open.c b/lib/libc/sys/open.c
index d58a81f60b18..dd7bedebf141 100644
--- a/lib/libc/sys/open.c
+++ b/lib/libc/sys/open.c
@@ -29,11 +29,9 @@
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#include "namespace.h"
#include <sys/types.h>
#include <sys/fcntl.h>
#include <stdarg.h>
-#include "un-namespace.h"
#include "libc_private.h"
#pragma weak open
@@ -50,5 +48,5 @@ open(const char *path, int flags, ...)
} else {
mode = 0;
}
- return (__impl_openat(AT_FDCWD, path, flags, mode));
+ return (INTERPOS_SYS(openat, AT_FDCWD, path, flags, mode));
}
diff --git a/lib/libc/sys/openat.c b/lib/libc/sys/openat.c
index f4223be8aad7..ba937cae3a3e 100644
--- a/lib/libc/sys/openat.c
+++ b/lib/libc/sys/openat.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2014, 2026 The FreeBSD Foundation.
+ * Copyright (c) 2014 The FreeBSD Foundation.
*
* Portions of this software were developed by Konstantin Belousov
* under sponsorship from the FreeBSD Foundation.
@@ -29,46 +29,11 @@
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#include "namespace.h"
#include <sys/types.h>
#include <sys/fcntl.h>
-#include <sys/stat.h>
-#include <errno.h>
#include <stdarg.h>
-#include <unistd.h>
-#include "un-namespace.h"
#include "libc_private.h"
-static int
-do_openat(int fd, const char *path, int flags, int interposed)
-{
- if (interposed)
- return (__sys_openat(fd, path, flags | O_PATH, 0));
- return (INTERPOS_SYS(openat, fd, path, flags | O_PATH, 0));
-}
-
-int
-__openat_symlink(int fd, const char *path, int flags, int interposed)
-{
- struct stat st;
- int rfd, xfd, saved_errno;
-
- flags &= ~O_SYMLINK;
- rfd = do_openat(fd, path, flags | O_PATH | O_NOFOLLOW, interposed);
- if (rfd != -1 && _fstat(rfd, &st) != -1 && !S_ISLNK(st.st_mode)) {
- xfd = do_openat(rfd, "", flags | O_EMPTY_PATH, interposed);
- saved_errno = errno;
- /* dup to rfd to guarantee lowest fd number value */
- if (_dup2(xfd, rfd) == -1) {
- _close(rfd);
- rfd = -1;
- }
- _close(xfd);
- errno = saved_errno;
- }
- return (rfd);
-}
-
__sym_compat(openat, __impl_openat, FBSD_1.1);
__weak_reference(openat, __impl_openat);
__sym_default(openat, openat, FBSD_1.2);
@@ -80,19 +45,12 @@ openat(int fd, const char *path, int flags, ...)
va_list ap;
int mode;
- if (__predict_false((flags & (O_SYMLINK | O_CREAT)) ==
- (O_SYMLINK | O_CREAT))) {
- errno = EINVAL;
- return (-1);
- }
if ((flags & O_CREAT) != 0) {
va_start(ap, flags);
mode = va_arg(ap, int);
va_end(ap);
} else {
mode = 0;
- if (__predict_false((flags & O_SYMLINK) == O_SYMLINK))
- return (__openat_symlink(fd, path, flags, 0));
}
return (INTERPOS_SYS(openat, fd, path, flags, mode));
}
diff --git a/lib/libthr/thread/thr_syscalls.c b/lib/libthr/thread/thr_syscalls.c
index 8168185188ea..bff2d0624aee 100644
--- a/lib/libthr/thread/thr_syscalls.c
+++ b/lib/libthr/thread/thr_syscalls.c
@@ -298,10 +298,7 @@ __thr_openat(int fd, const char *path, int flags, int mode)
curthread = _get_curthread();
_thr_cancel_enter(curthread);
- if (__predict_false((flags & O_SYMLINK) == O_SYMLINK))
- ret = __openat_symlink(fd, path, flags, 1);
- else
- ret = __sys_openat(fd, path, flags, mode);
+ ret = __sys_openat(fd, path, flags, mode);
_thr_cancel_leave(curthread, ret == -1);
return (ret);
diff --git a/sys/kern/vfs_bio.c b/sys/kern/vfs_bio.c
index 675f6fb4e526..8f47a7abbc5e 100644
--- a/sys/kern/vfs_bio.c
+++ b/sys/kern/vfs_bio.c
@@ -727,8 +727,7 @@ bufspace_wait(struct bufdomain *bd, struct vnode *vp, int gbflags,
BD_LOCK(bd);
while (bd->bd_wanted) {
if (vp != NULL && vp->v_type != VCHR &&
- (td->td_pflags & TDP_BUFNEED) == 0 &&
- vp->v_bufobj.bo_dirty.bv_cnt > 0) {
+ (td->td_pflags & TDP_BUFNEED) == 0) {
BD_UNLOCK(bd);
/*
* getblk() is called with a vnode locked, and
diff --git a/sys/kern/vfs_cache.c b/sys/kern/vfs_cache.c
index 66210bf58a7c..3f8591bd0ba7 100644
--- a/sys/kern/vfs_cache.c
+++ b/sys/kern/vfs_cache.c
@@ -5737,7 +5737,7 @@ cache_fplookup_climb_mount(struct cache_fpl *fpl)
prev_mp = NULL;
for (;;) {
- if (!vfs_op_thread_enter_crit(mp, &mpcpu)) {
+ if (!vfs_op_thread_enter_crit(mp, mpcpu)) {
if (prev_mp != NULL)
vfs_op_thread_exit_crit(prev_mp, prev_mpcpu);
return (cache_fpl_partial(fpl));
@@ -5792,7 +5792,7 @@ cache_fplookup_cross_mount(struct cache_fpl *fpl)
return (0);
}
- if (!vfs_op_thread_enter_crit(mp, &mpcpu)) {
+ if (!vfs_op_thread_enter_crit(mp, mpcpu)) {
return (cache_fpl_partial(fpl));
}
if (!vn_seqc_consistent(vp, vp_seqc)) {
diff --git a/sys/kern/vfs_mount.c b/sys/kern/vfs_mount.c
index fff05a627162..ddc5a1b70887 100644
--- a/sys/kern/vfs_mount.c
+++ b/sys/kern/vfs_mount.c
@@ -500,7 +500,7 @@ vfs_ref_from_vp(struct vnode *vp)
if (__predict_false(mp == NULL)) {
return (mp);
}
- if (vfs_op_thread_enter(mp, &mpcpu)) {
+ if (vfs_op_thread_enter(mp, mpcpu)) {
if (__predict_true(mp == vp->v_mount)) {
vfs_mp_count_add_pcpu(mpcpu, ref, 1);
vfs_op_thread_exit(mp, mpcpu);
@@ -527,7 +527,7 @@ vfs_ref(struct mount *mp)
struct mount_pcpu *mpcpu;
CTR2(KTR_VFS, "%s: mp %p", __func__, mp);
- if (vfs_op_thread_enter(mp, &mpcpu)) {
+ if (vfs_op_thread_enter(mp, mpcpu)) {
vfs_mp_count_add_pcpu(mpcpu, ref, 1);
vfs_op_thread_exit(mp, mpcpu);
return;
@@ -645,7 +645,7 @@ vfs_rel(struct mount *mp)
struct mount_pcpu *mpcpu;
CTR2(KTR_VFS, "%s: mp %p", __func__, mp);
- if (vfs_op_thread_enter(mp, &mpcpu)) {
+ if (vfs_op_thread_enter(mp, mpcpu)) {
vfs_mp_count_sub_pcpu(mpcpu, ref, 1);
vfs_op_thread_exit(mp, mpcpu);
return;
diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c
index 57de07ffaa12..58975f7ac932 100644
--- a/sys/kern/vfs_subr.c
+++ b/sys/kern/vfs_subr.c
@@ -879,7 +879,7 @@ vfs_busy(struct mount *mp, int flags)
MPASS((flags & ~MBF_MASK) == 0);
CTR3(KTR_VFS, "%s: mp %p with flags %d", __func__, mp, flags);
- if (vfs_op_thread_enter(mp, &mpcpu)) {
+ if (vfs_op_thread_enter(mp, mpcpu)) {
MPASS((mp->mnt_kern_flag & MNTK_DRAINING) == 0);
MPASS((mp->mnt_kern_flag & MNTK_UNMOUNT) == 0);
MPASS((mp->mnt_kern_flag & MNTK_REFEXPIRE) == 0);
@@ -942,7 +942,7 @@ vfs_unbusy(struct mount *mp)
CTR2(KTR_VFS, "%s: mp %p", __func__, mp);
- if (vfs_op_thread_enter(mp, &mpcpu)) {
+ if (vfs_op_thread_enter(mp, mpcpu)) {
MPASS((mp->mnt_kern_flag & MNTK_DRAINING) == 0);
vfs_mp_count_sub_pcpu(mpcpu, lockref, 1);
vfs_mp_count_sub_pcpu(mpcpu, ref, 1);
@@ -5817,15 +5817,6 @@ assert_vop_elocked(struct vnode *vp, const char *str)
}
#endif /* INVARIANTS */
-static bool
-vop_check_pollinfo(struct vnode *vp, int rc)
-{
- return (rc == 0 &&
- (vn_irflag_read(vp) & (VIRF_KNOTE | VIRF_INOTIFY)) != 0);
-}
-#define vop_check_pollinfo(vp, rc) \
- __predict_false((vop_check_pollinfo)((vp), (rc)))
-
void
vop_rename_fail(struct vop_rename_args *ap)
{
@@ -6102,7 +6093,7 @@ vop_create_post(void *ap, int rc)
a = ap;
dvp = a->a_dvp;
vn_seqc_write_end(dvp);
- if (rc == 0) {
+ if (!rc) {
VFS_KNOTE_LOCKED(dvp, NOTE_WRITE);
INOTIFY_NAME(*a->a_vpp, dvp, a->a_cnp, IN_CREATE);
}
@@ -6160,7 +6151,7 @@ vop_deleteextattr_post(void *ap, int rc)
a = ap;
vp = a->a_vp;
vn_seqc_write_end(vp);
- if (vop_check_pollinfo(vp, rc)) {
+ if (!rc) {
VFS_KNOTE_LOCKED(a->a_vp, NOTE_ATTRIB);
INOTIFY(vp, IN_ATTRIB);
}
@@ -6190,7 +6181,7 @@ vop_link_post(void *ap, int rc)
tdvp = a->a_tdvp;
vn_seqc_write_end(vp);
vn_seqc_write_end(tdvp);
- if (rc == 0) {
+ if (!rc) {
VFS_KNOTE_LOCKED(vp, NOTE_LINK);
VFS_KNOTE_LOCKED(tdvp, NOTE_WRITE);
INOTIFY_NAME(vp, tdvp, a->a_cnp, _IN_ATTRIB_LINKCOUNT);
@@ -6218,7 +6209,7 @@ vop_mkdir_post(void *ap, int rc)
a = ap;
dvp = a->a_dvp;
vn_seqc_write_end(dvp);
- if (rc == 0) {
+ if (!rc) {
VFS_KNOTE_LOCKED(dvp, NOTE_WRITE | NOTE_LINK);
INOTIFY_NAME(*a->a_vpp, dvp, a->a_cnp, IN_CREATE);
}
@@ -6256,7 +6247,7 @@ vop_mknod_post(void *ap, int rc)
a = ap;
dvp = a->a_dvp;
vn_seqc_write_end(dvp);
- if (rc == 0) {
+ if (!rc) {
VFS_KNOTE_LOCKED(dvp, NOTE_WRITE);
INOTIFY_NAME(*a->a_vpp, dvp, a->a_cnp, IN_CREATE);
}
@@ -6271,8 +6262,7 @@ vop_reclaim_post(void *ap, int rc)
a = ap;
vp = a->a_vp;
ASSERT_VOP_IN_SEQC(vp);
-
- if (vop_check_pollinfo(vp, rc)) {
+ if (!rc) {
VFS_KNOTE_LOCKED(vp, NOTE_REVOKE);
INOTIFY_REVOKE(vp);
}
@@ -6303,7 +6293,7 @@ vop_remove_post(void *ap, int rc)
vp = a->a_vp;
vn_seqc_write_end(dvp);
vn_seqc_write_end(vp);
- if (rc == 0) {
+ if (!rc) {
VFS_KNOTE_LOCKED(dvp, NOTE_WRITE);
VFS_KNOTE_LOCKED(vp, NOTE_DELETE);
INOTIFY_NAME(vp, dvp, a->a_cnp, _IN_ATTRIB_LINKCOUNT);
@@ -6376,7 +6366,7 @@ vop_rmdir_post(void *ap, int rc)
vp = a->a_vp;
vn_seqc_write_end(dvp);
vn_seqc_write_end(vp);
- if (rc == 0) {
+ if (!rc) {
vp->v_vflag |= VV_UNLINKED;
VFS_KNOTE_LOCKED(dvp, NOTE_WRITE | NOTE_LINK);
VFS_KNOTE_LOCKED(vp, NOTE_DELETE);
@@ -6404,7 +6394,7 @@ vop_setattr_post(void *ap, int rc)
a = ap;
vp = a->a_vp;
vn_seqc_write_end(vp);
- if (vop_check_pollinfo(vp, rc)) {
+ if (!rc) {
VFS_KNOTE_LOCKED(vp, NOTE_ATTRIB);
INOTIFY(vp, IN_ATTRIB);
}
@@ -6452,7 +6442,7 @@ vop_setextattr_post(void *ap, int rc)
a = ap;
vp = a->a_vp;
vn_seqc_write_end(vp);
- if (vop_check_pollinfo(vp, rc)) {
+ if (!rc) {
VFS_KNOTE_LOCKED(vp, NOTE_ATTRIB);
INOTIFY(vp, IN_ATTRIB);
}
@@ -6478,7 +6468,7 @@ vop_symlink_post(void *ap, int rc)
a = ap;
dvp = a->a_dvp;
vn_seqc_write_end(dvp);
- if (rc == 0) {
+ if (!rc) {
VFS_KNOTE_LOCKED(dvp, NOTE_WRITE);
INOTIFY_NAME(*a->a_vpp, dvp, a->a_cnp, IN_CREATE);
}
@@ -6489,7 +6479,7 @@ vop_open_post(void *ap, int rc)
{
struct vop_open_args *a = ap;
- if (vop_check_pollinfo(a->a_vp, rc)) {
+ if (!rc) {
VFS_KNOTE_LOCKED(a->a_vp, NOTE_OPEN);
INOTIFY(a->a_vp, IN_OPEN);
}
@@ -6500,9 +6490,8 @@ vop_close_post(void *ap, int rc)
{
struct vop_close_args *a = ap;
- if (rc == 0 && (a->a_cred != NOCRED || /* filter out revokes */
- !VN_IS_DOOMED(a->a_vp)) &&
- vop_check_pollinfo(a->a_vp, rc)) {
+ if (!rc && (a->a_cred != NOCRED || /* filter out revokes */
+ !VN_IS_DOOMED(a->a_vp))) {
VFS_KNOTE_LOCKED(a->a_vp, (a->a_fflag & FWRITE) != 0 ?
NOTE_CLOSE_WRITE : NOTE_CLOSE);
INOTIFY(a->a_vp, (a->a_fflag & FWRITE) != 0 ?
@@ -6515,7 +6504,7 @@ vop_read_post(void *ap, int rc)
{
struct vop_read_args *a = ap;
- if (vop_check_pollinfo(a->a_vp, rc)) {
+ if (!rc) {
VFS_KNOTE_LOCKED(a->a_vp, NOTE_READ);
INOTIFY(a->a_vp, IN_ACCESS);
}
@@ -6526,7 +6515,7 @@ vop_read_pgcache_post(void *ap, int rc)
{
struct vop_read_pgcache_args *a = ap;
- if (rc == 0)
+ if (!rc)
VFS_KNOTE_UNLOCKED(a->a_vp, NOTE_READ);
}
@@ -6673,8 +6662,6 @@ vfs_knlunlock(void *arg)
{
struct vnode *vp = arg;
- if (KNLIST_EMPTY(&vp->v_pollinfo->vpi_selinfo.si_note))
- vn_irflag_unset(vp, VIRF_KNOTE);
VOP_UNLOCK(vp);
}
@@ -6722,11 +6709,7 @@ vfs_kqfilter(struct vop_kqfilter_args *ap)
return (ENOMEM);
knl = &vp->v_pollinfo->vpi_selinfo.si_note;
vhold(vp);
- vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
- knlist_add(knl, kn, 1);
- if ((vn_irflag_read(vp) & VIRF_KNOTE) == 0)
- vn_irflag_set(vp, VIRF_KNOTE);
- VOP_UNLOCK(vp);
+ knlist_add(knl, kn, 0);
return (0);
}
@@ -7005,7 +6988,7 @@ vfs_cache_root(struct mount *mp, int flags, struct vnode **vpp)
struct vnode *vp;
int error;
- if (!vfs_op_thread_enter(mp, &mpcpu))
+ if (!vfs_op_thread_enter(mp, mpcpu))
return (vfs_cache_root_fallback(mp, flags, vpp));
vp = atomic_load_ptr(&mp->mnt_rootvnode);
if (vp == NULL || VN_IS_DOOMED(vp)) {
diff --git a/sys/kern/vfs_vnops.c b/sys/kern/vfs_vnops.c
index 15704634ff62..4061b2272193 100644
--- a/sys/kern/vfs_vnops.c
+++ b/sys/kern/vfs_vnops.c
@@ -2083,7 +2083,7 @@ vn_start_write_refed(struct mount *mp, int flags)
struct mount_pcpu *mpcpu;
int error, mflags;
- if ((flags & V_XSLEEP) == 0 && vfs_op_thread_enter(mp, &mpcpu)) {
+ if ((flags & V_XSLEEP) == 0 && vfs_op_thread_enter(mp, mpcpu)) {
MPASS((mp->mnt_kern_flag & MNTK_SUSPEND) == 0);
vfs_mp_count_add_pcpu(mpcpu, writeopcount, 1);
vfs_op_thread_exit(mp, mpcpu);
@@ -2252,7 +2252,7 @@ vn_finished_write(struct mount *mp)
if (mp == NULL)
return;
- if (vfs_op_thread_enter(mp, &mpcpu)) {
+ if (vfs_op_thread_enter(mp, mpcpu)) {
vfs_mp_count_sub_pcpu(mpcpu, writeopcount, 1);
vfs_mp_count_sub_pcpu(mpcpu, ref, 1);
vfs_op_thread_exit(mp, mpcpu);
diff --git a/sys/sys/fcntl.h b/sys/sys/fcntl.h
index bf64d06f2a4d..0b13241f0ee3 100644
--- a/sys/sys/fcntl.h
+++ b/sys/sys/fcntl.h
@@ -142,13 +142,6 @@ typedef __pid_t pid_t;
#define O_EMPTY_PATH 0x02000000
#define O_NAMEDATTR 0x04000000 /* NFSv4 named attributes */
#define O_XATTR O_NAMEDATTR /* Solaris compatibility */
-
-/*
- * Emulate MacOSX compatibility flag without consuming a flags bit.
- * Selected bits set does not define a useful open request and is
- * unlikely to be specified by reasonable code.
- */
-#define O_SYMLINK (O_PATH | O_DSYNC | O_DIRECT)
#endif
#if __POSIX_VISIBLE >= 202405
diff --git a/sys/sys/mount.h b/sys/sys/mount.h
index c96ce7d7b080..18f85192f6c3 100644
--- a/sys/sys/mount.h
+++ b/sys/sys/mount.h
@@ -36,10 +36,8 @@
#include <sys/ucred.h>
#include <sys/queue.h>
#ifdef _KERNEL
-#include <sys/systm.h>
#include <sys/lock.h>
#include <sys/lockmgr.h>
-#include <sys/proc.h>
#include <sys/tslog.h>
#include <sys/_mutex.h>
#include <sys/_sx.h>
@@ -853,134 +851,114 @@ struct vfsops {
vfs_statfs_t __vfs_statfs;
-static inline int
-VFS_MOUNT(struct mount *mp)
-{
- int rc;
-
- TSRAW(curthread, TS_ENTER, "VFS_MOUNT", mp->mnt_vfc->vfc_name);
- rc = mp->mnt_op->vfs_mount(mp);
- TSRAW(curthread, TS_EXIT, "VFS_MOUNT", mp->mnt_vfc->vfc_name);
- return (rc);
-}
-
-static inline int
-VFS_UNMOUNT(struct mount *mp, int force)
-{
- return (mp->mnt_op->vfs_unmount(mp, force));
-}
-
-static inline int
-VFS_ROOT(struct mount *mp, int flags, struct vnode **vpp)
-{
- return (mp->mnt_op->vfs_root(mp, flags, vpp));
-}
-
-static inline int
-VFS_CACHEDROOT(struct mount *mp, int flags, struct vnode **vpp)
-{
- return (mp->mnt_op->vfs_cachedroot(mp, flags, vpp));
-}
-
-static inline int
-VFS_QUOTACTL(struct mount *mp, int cmds, uid_t uid, void *arg, bool *mp_busy)
-{
- return (mp->mnt_op->vfs_quotactl(mp, cmds, uid, arg, mp_busy));
-}
-
-static inline int
-VFS_STATFS(struct mount *mp, struct statfs *sbp)
-{
- return (__vfs_statfs(mp, sbp));
-}
-
-static inline int
-VFS_SYNC(struct mount *mp, int waitfor)
-{
- return (mp->mnt_op->vfs_sync(mp, waitfor));
-}
-
-static inline int
-VFS_VGET(struct mount *mp, ino_t ino, int flags, struct vnode **vpp)
-{
- return (mp->mnt_op->vfs_vget(mp, ino, flags, vpp));
-}
-
-static inline int
-VFS_FHTOVP(struct mount *mp, struct fid *fidp, int flags, struct vnode **vpp)
-{
- return (mp->mnt_op->vfs_fhtovp(mp, fidp, flags, vpp));
-}
-
-static inline int
-VFS_CHECKEXP(struct mount *mp, struct sockaddr *nam, uint64_t *extflagsp,
- struct ucred **credanonp, int *numsecflavors, int *secflavors)
-{
- return (mp->mnt_op->vfs_checkexp(mp, nam, extflagsp, credanonp,
- numsecflavors, secflavors));
-}
-
-static inline int
-VFS_EXTATTRCTL(struct mount *mp, int cmd, struct vnode *filename_vp,
- int attrnamespace, const char *attrname)
-{
- return (mp->mnt_op->vfs_extattrctl(mp, cmd, filename_vp,
- attrnamespace, attrname));
-}
-
-static inline int
-VFS_SYSCTL(struct mount *mp, fsctlop_t op, struct sysctl_req *req)
-{
- return (mp->mnt_op->vfs_sysctl(mp, op, req));
-}
-
-static inline void
-VFS_SUSP_CLEAN(struct mount *mp)
-{
- if (mp->mnt_op->vfs_susp_clean != NULL)
- mp->mnt_op->vfs_susp_clean(mp);
-}
-
-static inline void
-VFS_RECLAIM_LOWERVP(struct mount *mp, struct vnode *vp)
-{
- if (mp->mnt_op->vfs_reclaim_lowervp != NULL)
- mp->mnt_op->vfs_reclaim_lowervp(mp, vp);
-}
+#define VFS_MOUNT(MP) ({ \
+ int _rc; \
+ \
+ TSRAW(curthread, TS_ENTER, "VFS_MOUNT", (MP)->mnt_vfc->vfc_name);\
+ _rc = (*(MP)->mnt_op->vfs_mount)(MP); \
+ TSRAW(curthread, TS_EXIT, "VFS_MOUNT", (MP)->mnt_vfc->vfc_name);\
+ _rc; })
+
+#define VFS_UNMOUNT(MP, FORCE) ({ \
+ int _rc; \
+ \
+ _rc = (*(MP)->mnt_op->vfs_unmount)(MP, FORCE); \
+ _rc; })
+
+#define VFS_ROOT(MP, FLAGS, VPP) ({ \
+ int _rc; \
+ \
+ _rc = (*(MP)->mnt_op->vfs_root)(MP, FLAGS, VPP); \
+ _rc; })
+
+#define VFS_CACHEDROOT(MP, FLAGS, VPP) ({ \
+ int _rc; \
+ \
+ _rc = (*(MP)->mnt_op->vfs_cachedroot)(MP, FLAGS, VPP); \
+ _rc; })
+
+#define VFS_QUOTACTL(MP, C, U, A, MP_BUSY) ({ \
+ int _rc; \
+ \
+ _rc = (*(MP)->mnt_op->vfs_quotactl)(MP, C, U, A, MP_BUSY); \
+ _rc; })
+
+#define VFS_STATFS(MP, SBP) ({ \
+ int _rc; \
+ \
+ _rc = __vfs_statfs((MP), (SBP)); \
+ _rc; })
+
+#define VFS_SYNC(MP, WAIT) ({ \
+ int _rc; \
+ \
+ _rc = (*(MP)->mnt_op->vfs_sync)(MP, WAIT); \
+ _rc; })
+
+#define VFS_VGET(MP, INO, FLAGS, VPP) ({ \
+ int _rc; \
+ \
+ _rc = (*(MP)->mnt_op->vfs_vget)(MP, INO, FLAGS, VPP); \
+ _rc; })
+
+#define VFS_FHTOVP(MP, FIDP, FLAGS, VPP) ({ \
+ int _rc; \
+ \
+ _rc = (*(MP)->mnt_op->vfs_fhtovp)(MP, FIDP, FLAGS, VPP); \
+ _rc; })
+
+#define VFS_CHECKEXP(MP, NAM, EXFLG, CRED, NUMSEC, SEC) ({ \
+ int _rc; \
+ \
+ _rc = (*(MP)->mnt_op->vfs_checkexp)(MP, NAM, EXFLG, CRED, NUMSEC,\
+ SEC); \
+ _rc; })
+
+#define VFS_EXTATTRCTL(MP, C, FN, NS, N) ({ \
+ int _rc; \
+ \
+ _rc = (*(MP)->mnt_op->vfs_extattrctl)(MP, C, FN, NS, N); \
+ _rc; })
+
+#define VFS_SYSCTL(MP, OP, REQ) ({ \
+ int _rc; \
+ \
+ _rc = (*(MP)->mnt_op->vfs_sysctl)(MP, OP, REQ); \
+ _rc; })
+
+#define VFS_SUSP_CLEAN(MP) do { \
+ if (*(MP)->mnt_op->vfs_susp_clean != NULL) { \
+ (*(MP)->mnt_op->vfs_susp_clean)(MP); \
+ } \
+} while (0)
-static inline void
-VFS_UNLINK_LOWERVP(struct mount *mp, struct vnode *vp)
-{
- if (mp->mnt_op->vfs_unlink_lowervp != NULL)
- mp->mnt_op->vfs_unlink_lowervp(mp, vp);
-}
+#define VFS_RECLAIM_LOWERVP(MP, VP) do { \
+ if (*(MP)->mnt_op->vfs_reclaim_lowervp != NULL) { \
+ (*(MP)->mnt_op->vfs_reclaim_lowervp)((MP), (VP)); \
+ } \
+} while (0)
-static inline void
-VFS_PURGE(struct mount *mp)
-{
- if (mp->mnt_op->vfs_purge != NULL)
- mp->mnt_op->vfs_purge(mp);
-}
+#define VFS_UNLINK_LOWERVP(MP, VP) do { \
+ if (*(MP)->mnt_op->vfs_unlink_lowervp != NULL) { \
+ (*(MP)->mnt_op->vfs_unlink_lowervp)((MP), (VP)); \
+ } \
+} while (0)
-#include <sys/vnode.h>
+#define VFS_PURGE(MP) do { \
+ if (*(MP)->mnt_op->vfs_purge != NULL) { \
+ (*(MP)->mnt_op->vfs_purge)(MP); \
+ } \
+} while (0)
-static inline void
-VFS_KNOTE_LOCKED(struct vnode *vp, int hint)
-{
- if ((vn_irflag_read(vp) & VIRF_KNOTE) != 0) {
- KNOTE_LOCKED(&vp->v_pollinfo->vpi_selinfo.si_note,
- hint);
- }
-}
+#define VFS_KNOTE_LOCKED(vp, hint) do \
+{ \
+ VN_KNOTE((vp), (hint), KNF_LISTLOCKED); \
+} while (0)
-static inline void
-VFS_KNOTE_UNLOCKED(struct vnode *vp, int hint)
-{
- if ((vn_irflag_read(vp) & VIRF_KNOTE) != 0) {
- KNOTE_UNLOCKED(&vp->v_pollinfo->vpi_selinfo.si_note,
- hint);
- }
-}
+#define VFS_KNOTE_UNLOCKED(vp, hint) do \
+{ \
+ VN_KNOTE((vp), (hint), 0); \
+} while (0)
#include <sys/module.h>
@@ -1160,64 +1138,47 @@ void resume_all_fs(void);
*/
#define vfs_mount_pcpu(mp) zpcpu_get(mp->mnt_pcpu)
#define vfs_mount_pcpu_remote(mp, cpu) zpcpu_get_cpu(mp->mnt_pcpu, cpu)
-static void vfs_op_thread_exit_crit(struct mount *mp, struct mount_pcpu *mpcpu);
-
-static inline bool
-vfs_op_thread_entered(struct mount *mp)
-{
- struct mount_pcpu *mpcpu = vfs_mount_pcpu(mp);
-
- MPASS(curthread->td_critnest > 0);
- return (mpcpu->mntp_thread_in_ops == 1);
-}
-
-static inline bool
-vfs_op_thread_enter_crit(struct mount *mp, struct mount_pcpu **mpcpup)
-{
- struct mount_pcpu *mpcpu;
- bool retval_crit = true;
-
- MPASS(curthread->td_critnest > 0);
- mpcpu = vfs_mount_pcpu(mp);
- MPASS(mpcpu->mntp_thread_in_ops == 0);
- mpcpu->mntp_thread_in_ops = 1;
- atomic_interrupt_fence();
- if (__predict_false(mp->mnt_vfs_ops > 0)) {
- vfs_op_thread_exit_crit(mp, mpcpu);
- retval_crit = false;
- }
- *mpcpup = mpcpu;
- return (retval_crit);
-}
-
-static inline bool
-vfs_op_thread_enter(struct mount *mp, struct mount_pcpu **mpcpup)
-{
- bool retval;
- critical_enter();
- retval = vfs_op_thread_enter_crit(mp, mpcpup);
- if (__predict_false(!retval))
- critical_exit();
- return (retval);
-}
-
-static inline void
-vfs_op_thread_exit_crit(struct mount *mp, struct mount_pcpu *mpcpu)
-{
- MPASS(mpcpu == vfs_mount_pcpu(mp));
- MPASS(mpcpu->mntp_thread_in_ops == 1);
-
- atomic_interrupt_fence();
- mpcpu->mntp_thread_in_ops = 0;
-}
+#define vfs_op_thread_entered(mp) ({ \
+ MPASS(curthread->td_critnest > 0); \
+ struct mount_pcpu *_mpcpu = vfs_mount_pcpu(mp); \
+ _mpcpu->mntp_thread_in_ops == 1; \
+})
+
+#define vfs_op_thread_enter_crit(mp, _mpcpu) ({ \
+ bool _retval_crit = true; \
+ MPASS(curthread->td_critnest > 0); \
+ _mpcpu = vfs_mount_pcpu(mp); \
+ MPASS(mpcpu->mntp_thread_in_ops == 0); \
+ _mpcpu->mntp_thread_in_ops = 1; \
+ atomic_interrupt_fence(); \
+ if (__predict_false(mp->mnt_vfs_ops > 0)) { \
+ vfs_op_thread_exit_crit(mp, _mpcpu); \
+ _retval_crit = false; \
+ } \
+ _retval_crit; \
+})
+
+#define vfs_op_thread_enter(mp, _mpcpu) ({ \
+ bool _retval; \
+ critical_enter(); \
+ _retval = vfs_op_thread_enter_crit(mp, _mpcpu); \
+ if (__predict_false(!_retval)) \
+ critical_exit(); \
+ _retval; \
+})
+
+#define vfs_op_thread_exit_crit(mp, _mpcpu) do { \
+ MPASS(_mpcpu == vfs_mount_pcpu(mp)); \
+ MPASS(_mpcpu->mntp_thread_in_ops == 1); \
+ atomic_interrupt_fence(); \
+ _mpcpu->mntp_thread_in_ops = 0; \
+} while (0)
-static inline void
-vfs_op_thread_exit(struct mount *mp, struct mount_pcpu *mpcpu)
-{
- vfs_op_thread_exit_crit(mp, mpcpu);
- critical_exit();
-}
+#define vfs_op_thread_exit(mp, _mpcpu) do { \
+ vfs_op_thread_exit_crit(mp, _mpcpu); \
+ critical_exit(); \
+} while (0)
#define vfs_mp_count_add_pcpu(_mpcpu, count, val) do { \
MPASS(_mpcpu->mntp_thread_in_ops == 1); \
diff --git a/sys/sys/rangelock.h b/sys/sys/rangelock.h
index 00fe7eee851e..32ccf3427b49 100644
--- a/sys/sys/rangelock.h
+++ b/sys/sys/rangelock.h
@@ -46,16 +46,10 @@ struct rl_q_entry;
* all existing lock owners are compatible with the request. Two lock
* owners are compatible if their ranges do not overlap, or both
* owners are for read.
- *
- * The resvX fields can be used by consumers. For instance, struct
- * vnode uses resv1 as v_vrflag.
*/
struct rangelock {
uintptr_t head;
bool sleepers;
- uint8_t resv0;
- uint16_t resv1;
- uint32_t resv2;
};
#ifdef _KERNEL
diff --git a/sys/sys/vnode.h b/sys/sys/vnode.h
index 70340faca1b4..3fd2c770cda1 100644
--- a/sys/sys/vnode.h
+++ b/sys/sys/vnode.h
@@ -203,7 +203,6 @@ struct vnode {
(negative) text users */
int v_seqc_users; /* i modifications pending */
};
-#define v_vrflag v_rl.resv1
#define VN_ISDEV(vp) VTYPE_ISDEV((vp)->v_type)
@@ -222,17 +221,21 @@ _Static_assert(sizeof(struct vnode) <= 448, "vnode size crosses 448 bytes");
#define bo2vnode(bo) __containerof((bo), struct vnode, v_bufobj)
+/* XXX: These are temporary to avoid a source sweep at this time */
#define v_object v_bufobj.bo_object
-#define VN_KNOTE(vp, b, a) \
-do { \
- if ((vn_irflag_read(vp) & VIRF_KNOTE) != 0) { \
- KNOTE(&vp->v_pollinfo->vpi_selinfo.si_note, (b), \
- (a) | KNF_NOKQLOCK); \
- } \
-} while (0)
-#define VN_KNOTE_LOCKED(vp, b) VN_KNOTE(vp, b, KNF_LISTLOCKED)
-#define VN_KNOTE_UNLOCKED(vp, b) VN_KNOTE(vp, b, 0)
+/* We don't need to lock the knlist */
+#define VN_KNLIST_EMPTY(vp) ((vp)->v_pollinfo == NULL || \
+ KNLIST_EMPTY(&(vp)->v_pollinfo->vpi_selinfo.si_note))
*** 38 LINES SKIPPED ***