From: Kirk McKusick Date: Mon, 24 Jan 1994 16:08:42 +0000 (-0800) Subject: disable MNT_ASYNC when doing sync and unmount X-Git-Tag: BSD-4_4_Lite1-Snapshot-Development~696 X-Git-Url: https://git.subgeniuskitty.com/unix-history/.git/commitdiff_plain/1c295f6f4ccac15eaa4b9bfebc814b8bee1cbedb?hp=55c106c7533a9e5f3fbe85fff994bf7062fef14c disable MNT_ASYNC when doing sync and unmount SCCS-vsn: sys/kern/vfs_syscalls.c 8.8 --- diff --git a/usr/src/sys/kern/vfs_syscalls.c b/usr/src/sys/kern/vfs_syscalls.c index 4ef48290f1..86e644c2dd 100644 --- a/usr/src/sys/kern/vfs_syscalls.c +++ b/usr/src/sys/kern/vfs_syscalls.c @@ -238,6 +238,7 @@ dounmount(mp, flags, p) if (error = vfs_lock(mp)) return (error); + mp->mnt_flag &=~ MNT_ASYNC; vnode_pager_umount(mp); /* release cached vnodes */ cache_purgevfs(mp); /* remove cache entries for this file sys */ if ((error = VFS_SYNC(mp, MNT_WAIT, p->p_ucred, p)) == 0 || @@ -277,6 +278,7 @@ sync(p, uap, retval) int *retval; { register struct mount *mp, *nmp; + int asyncflag; for (mp = mountlist.tqh_first; mp != NULL; mp = nmp) { nmp = mp->mnt_list.tqe_next; @@ -286,7 +288,11 @@ sync(p, uap, retval) */ if ((mp->mnt_flag & (MNT_MLOCK|MNT_RDONLY|MNT_MPBUSY)) == 0 && !vfs_busy(mp)) { + asyncflag = mp->mnt_flag & MNT_ASYNC; + mp->mnt_flag &= ~MNT_ASYNC; VFS_SYNC(mp, MNT_NOWAIT, p->p_ucred, p); + if (asyncflag) + mp->mnt_flag |= MNT_ASYNC; vfs_unbusy(mp); } }