git: 7782d7167190 - stable/13 - syncer VOP_FSYNC(): unlock syncer vnode around call to VFS_SYNC()
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 07 Feb 2022 09:50:52 UTC
The branch stable/13 has been updated by kib:
URL: https://cgit.FreeBSD.org/src/commit/?id=7782d71671908886b88a4d1d50732ab8bc95385e
commit 7782d71671908886b88a4d1d50732ab8bc95385e
Author: Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2022-01-21 15:42:28 +0000
Commit: Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2022-02-07 09:38:50 +0000
syncer VOP_FSYNC(): unlock syncer vnode around call to VFS_SYNC()
(cherry picked from commit 3d68c4e17578684cfdfd002fb6ab8554df525963)
---
sys/kern/vfs_subr.c | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c
index f56bedecaf15..a7a432d31a55 100644
--- a/sys/kern/vfs_subr.c
+++ b/sys/kern/vfs_subr.c
@@ -5107,10 +5107,7 @@ sync_fsync(struct vop_fsync_args *ap)
*/
if (vfs_busy(mp, MBF_NOWAIT) != 0)
return (0);
- if (vn_start_write(NULL, &mp, V_NOWAIT) != 0) {
- vfs_unbusy(mp);
- return (0);
- }
+ VOP_UNLOCK(syncvp);
save = curthread_pflags_set(TDP_SYNCIO);
/*
* The filesystem at hand may be idle with free vnodes stored in the
@@ -5119,7 +5116,7 @@ sync_fsync(struct vop_fsync_args *ap)
vfs_periodic(mp, MNT_NOWAIT);
error = VFS_SYNC(mp, MNT_LAZY);
curthread_pflags_restore(save);
- vn_finished_write(mp);
+ vn_lock(syncvp, LK_EXCLUSIVE | LK_RETRY);
vfs_unbusy(mp);
return (error);
}