From owner-freebsd-bugs Thu Jul 2 19:01:19 1998 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id TAA17676 for freebsd-bugs-outgoing; Thu, 2 Jul 1998 19:01:19 -0700 (PDT) (envelope-from owner-freebsd-bugs@FreeBSD.ORG) Received: from freefall.freebsd.org (freefall.FreeBSD.ORG [204.216.27.21]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id TAA17671 for ; Thu, 2 Jul 1998 19:01:18 -0700 (PDT) (envelope-from gnats@FreeBSD.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.8.8/8.8.5) id TAA29327; Thu, 2 Jul 1998 19:00:01 -0700 (PDT) Date: Thu, 2 Jul 1998 19:00:01 -0700 (PDT) Message-Id: <199807030200.TAA29327@freefall.freebsd.org> To: freebsd-bugs@FreeBSD.ORG From: Paul Saab Subject: Re: kern/7147: fix for PR7089 Reply-To: Paul Saab Sender: owner-freebsd-bugs@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org The following reply was made to PR kern/7147; it has been noted by GNATS. From: Paul Saab To: freebsd-gnats-submit@FreeBSD.ORG Cc: Subject: Re: kern/7147: fix for PR7089 Date: Thu, 2 Jul 1998 20:53:10 -0500 here is a patch for stable Index: vfs_syscalls.c =================================================================== RCS file: /usr/cvs/src/sys/kern/vfs_syscalls.c,v retrieving revision 1.51.2.6 diff -u -r1.51.2.6 vfs_syscalls.c --- vfs_syscalls.c 1997/10/23 18:04:55 1.51.2.6 +++ vfs_syscalls.c 1998/07/02 17:04:41 @@ -291,6 +291,7 @@ { struct vnode *coveredvp; int error; + int async_flag; coveredvp = mp->mnt_vnodecovered; if (vfs_busy(mp)) @@ -303,6 +304,7 @@ return (error); } + async_flag = mp->mnt_flag & MNT_ASYNC; mp->mnt_flag &=~ MNT_ASYNC; vfs_msync(mp, MNT_NOWAIT); vnode_pager_umount(mp); /* release cached vnodes */ @@ -311,6 +313,7 @@ (flags & MNT_FORCE)) error = VFS_UNMOUNT(mp, flags, p); mp->mnt_flag &= ~MNT_UNMOUNT; + mp->mnt_flag |= async_flag; vfs_unbusy(mp); if (error) { vfs_unlock(mp); paul@mu.org (paul@mu.org) wrote: > > >Number: 7147 > >Category: kern > >Synopsis: fix for PR7089 > >Confidential: no > >Severity: serious > >Priority: medium > >Responsible: freebsd-bugs > >State: open > >Quarter: > >Keywords: > >Date-Required: > >Class: sw-bug > >Submitter-Id: current-users > >Arrival-Date: Thu Jul 2 09:50:01 PDT 1998 > >Last-Modified: > >Originator: Paul Saab > >Organization: > >Release: current > >Environment: > FreeBSD yoda.yogurt.org 3.0-980621-SNAP FreeBSD 3.0-980621-SNAP #2: Thu Jul 2 11:26:15 MDT 1998 root@yoda.yogurt.org:/usr/src/sys/compile/LOCAL i386 > >Description: > > >How-To-Repeat: > > >Fix: > Index: vfs_syscalls.c > =================================================================== > RCS file: /usr/cvs/src/sys/kern/vfs_syscalls.c,v > retrieving revision 1.103 > diff -u -r1.103 vfs_syscalls.c > --- vfs_syscalls.c 1998/06/08 18:18:28 1.103 > +++ vfs_syscalls.c 1998/07/02 16:42:56 > @@ -435,6 +435,7 @@ > { > struct vnode *coveredvp; > int error; > + int async_flag; > > simple_lock(&mountlist_slock); > mp->mnt_kern_flag |= MNTK_UNMOUNT; > @@ -444,6 +445,7 @@ > vfs_setpublicfs(NULL, NULL, NULL); > > vfs_msync(mp, MNT_WAIT); > + async_flag = mp->mnt_flag & MNT_ASYNC; > mp->mnt_flag &=~ MNT_ASYNC; > cache_purgevfs(mp); /* remove cache entries for this file sys */ > if (mp->mnt_syncer != NULL) > @@ -457,6 +459,7 @@ > if ((mp->mnt_flag & MNT_RDONLY) == 0 && mp->mnt_syncer == NULL) > (void) vfs_allocate_syncvnode(mp); > mp->mnt_kern_flag &= ~MNTK_UNMOUNT; > + mp->mnt_flag |= async_flag; > lockmgr(&mp->mnt_lock, LK_RELEASE | LK_INTERLOCK | LK_REENABLE, > &mountlist_slock, p); > return (error); > >Audit-Trail: > >Unformatted: > > To Unsubscribe: send mail to majordomo@FreeBSD.org > with "unsubscribe freebsd-bugs" in the body of the message To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message