Module Name: src
Committed By: bad
Date: Sun Aug 11 13:09:58 UTC 2024
Modified Files:
src/sys/kern: vfs_mount.c vfs_syscalls.c
Log Message:
explain why MNT_ASYNC is temporarily cleared
related to PR kern/58564.
To generate a diff of this commit:
cvs rdiff -u -r1.106 -r1.107 src/sys/kern/vfs_mount.c
cvs rdiff -u -r1.566 -r1.567 src/sys/kern/vfs_syscalls.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/kern/vfs_mount.c
diff -u src/sys/kern/vfs_mount.c:1.106 src/sys/kern/vfs_mount.c:1.107
--- src/sys/kern/vfs_mount.c:1.106 Sun Aug 11 12:58:10 2024
+++ src/sys/kern/vfs_mount.c Sun Aug 11 13:09:58 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: vfs_mount.c,v 1.106 2024/08/11 12:58:10 bad Exp $ */
+/* $NetBSD: vfs_mount.c,v 1.107 2024/08/11 13:09:58 bad Exp $ */
/*-
* Copyright (c) 1997-2020 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vfs_mount.c,v 1.106 2024/08/11 12:58:10 bad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_mount.c,v 1.107 2024/08/11 13:09:58 bad Exp $");
#include "veriexec.h"
@@ -961,6 +961,10 @@ dounmount(struct mount *mp, int flags, s
mp->mnt_iflag |= IMNT_UNMOUNT;
mutex_enter(mp->mnt_updating);
+ /*
+ * Temporarily clear the MNT_ASYNC flags so that bwrite() doesn't
+ * convert the sync writes to delayed writes.
+ */
async = mp->mnt_flag & MNT_ASYNC;
mp->mnt_flag &= ~MNT_ASYNC;
cache_purgevfs(mp); /* remove cache entries for this file sys */
Index: src/sys/kern/vfs_syscalls.c
diff -u src/sys/kern/vfs_syscalls.c:1.566 src/sys/kern/vfs_syscalls.c:1.567
--- src/sys/kern/vfs_syscalls.c:1.566 Thu Jul 4 16:42:37 2024
+++ src/sys/kern/vfs_syscalls.c Sun Aug 11 13:09:58 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: vfs_syscalls.c,v 1.566 2024/07/04 16:42:37 christos Exp $ */
+/* $NetBSD: vfs_syscalls.c,v 1.567 2024/08/11 13:09:58 bad Exp $ */
/*-
* Copyright (c) 2008, 2009, 2019, 2020, 2023 The NetBSD Foundation, Inc.
@@ -70,7 +70,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vfs_syscalls.c,v 1.566 2024/07/04 16:42:37 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_syscalls.c,v 1.567 2024/08/11 13:09:58 bad Exp $");
#ifdef _KERNEL_OPT
#include "opt_fileassoc.h"
@@ -741,6 +741,11 @@ do_sys_sync(struct lwp *l)
while ((mp = mountlist_iterator_next(iter)) != NULL) {
mutex_enter(mp->mnt_updating);
if ((mp->mnt_flag & MNT_RDONLY) == 0) {
+ /*
+ * Temporarily clear the MNT_ASYNC flags so that
+ * bwrite() doesnt convert the sync writes to
+ * delayed writes.
+ */
asyncflag = mp->mnt_flag & MNT_ASYNC;
mp->mnt_flag &= ~MNT_ASYNC;
VFS_SYNC(mp, MNT_NOWAIT, l->l_cred);