git: 30ad8440b468 - main - VFS: require locked vnode for fsync()
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 24 Sep 2026 18:39:32 UTC
The branch main has been updated by kib:
URL: https://cgit.FreeBSD.org/src/commit/?id=30ad8440b46838b050360ed87e6165a067f1cf8a
commit 30ad8440b46838b050360ed87e6165a067f1cf8a
Author: Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2026-09-20 03:22:39 +0000
Commit: Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2026-09-24 18:38:33 +0000
VFS: require locked vnode for fsync()
Stop exempting devfs nodes.
Reviewed by: markj
Tested by: pho
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D59932
---
sys/kern/vfs_subr.c | 20 ++++++++------------
sys/kern/vnode_if.src | 2 +-
2 files changed, 9 insertions(+), 13 deletions(-)
diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c
index f324e02e44d7..34f7b32de1b9 100644
--- a/sys/kern/vfs_subr.c
+++ b/sys/kern/vfs_subr.c
@@ -5962,8 +5962,6 @@ vop_fsync_debugprepost(struct vnode *vp, const char *name)
{
struct mount *mp;
- if (vp->v_type == VCHR)
- ;
/*
* The shared vs. exclusive locking policy for fsync()
* is actually determined by vp's write mount as indicated
@@ -5979,16 +5977,14 @@ vop_fsync_debugprepost(struct vnode *vp, const char *name)
* should still be caught when the stacked filesystem
* invokes VOP_FSYNC() on the underlying filesystem.
*/
- else {
- mp = NULL;
- VOP_GETWRITEMOUNT(vp, &mp);
- if (vn_lktype_write(mp, vp) == LK_SHARED)
- ASSERT_VOP_LOCKED(vp, name);
- else
- ASSERT_VOP_ELOCKED(vp, name);
- if (mp != NULL)
- vfs_rel(mp);
- }
+ mp = NULL;
+ VOP_GETWRITEMOUNT(vp, &mp);
+ if (vn_lktype_write(mp, vp) == LK_SHARED)
+ ASSERT_VOP_LOCKED(vp, name);
+ else
+ ASSERT_VOP_ELOCKED(vp, name);
+ if (mp != NULL)
+ vfs_rel(mp);
}
void
diff --git a/sys/kern/vnode_if.src b/sys/kern/vnode_if.src
index d20ff39b314e..96e826ec86b6 100644
--- a/sys/kern/vnode_if.src
+++ b/sys/kern/vnode_if.src
@@ -292,7 +292,7 @@ vop_revoke {
};
-%% fsync vp - - -
+%% fsync vp L L L
%! fsync pre vop_fsync_debugpre
%! fsync post vop_fsync_debugpost