Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 27 Feb 1998 17:07:05 +0100
From:      Poul-Henning Kamp <phk@critter.freebsd.dk>
To:        Eivind Eklund <eivind@yes.no>
Cc:        fs@FreeBSD.ORG
Subject:   Re: syncer / SMP question 
Message-ID:  <3416.888595625@critter.freebsd.dk>
In-Reply-To: Your message of "Fri, 27 Feb 1998 16:48:59 %2B0100." <19980227164859.25557@follo.net> 

next in thread | previous in thread | raw e-mail | index | archive | help

Uhm, this is part&parcel of Kirks softupdate code,
so I wouldn't bother if I were you...

Poul-Henning

In message <19980227164859.25557@follo.net>, Eivind Eklund writes:
>I was looking at implementing an incremental syncer for UFS, as a sort
>of "let's get to know the FS-code" project, and noticed something that
>looked like really strange code in the sync() syscall.  Is there any
>reason why the below wouldn't be a benign change?  The extra
>simplelock-call looks especially weird - it looks like either the lock
>is released somewhere else, or we'll have the mountlist locked many
>times.
>
>If it looks like a benign change, what would I do to test it properly?
>I can allocate a scratch machine to do this if there is no need for
>really long-running tests.  I can probably even do a scratchable
>SMP-box.
>
>cvs diff: Diffing .
>Index: vfs_syscalls.c
>===================================================================
>RCS file: /home/ncvs/src/sys/kern/vfs_syscalls.c,v
>retrieving revision 1.93
>diff -u -u -5 -r1.93 vfs_syscalls.c
>--- vfs_syscalls.c      1998/02/15 04:17:09     1.93
>+++ vfs_syscalls.c      1998/02/27 15:37:16
>@@ -480,24 +480,21 @@
>        register struct mount *mp, *nmp;
>        int asyncflag;
> 
>        simple_lock(&mountlist_slock);
>        for (mp = mountlist.cqh_first; mp != (void *)&mountlist; mp = nmp) {
>+               nmp = mp->mnt_list.cqe_next;
>                if (vfs_busy(mp, LK_NOWAIT, &mountlist_slock, p)) {
>-                       nmp = mp->mnt_list.cqe_next;
>                        continue;
>                }
>                if ((mp->mnt_flag & MNT_RDONLY) == 0) {
>                        asyncflag = mp->mnt_flag & MNT_ASYNC;
>                        mp->mnt_flag &= ~MNT_ASYNC;
>                        vfs_msync(mp, MNT_NOWAIT);
>                        VFS_SYNC(mp, MNT_NOWAIT, p != NULL ? p->p_ucred : NOC
>RED, p);
>-                       if (asyncflag)
>-                               mp->mnt_flag |= MNT_ASYNC;
>+                       mp->mnt_flag |= asyncflag;
>                }
>-               simple_lock(&mountlist_slock);
>-               nmp = mp->mnt_list.cqe_next;
>                vfs_unbusy(mp, p);
>        }
>        simple_unlock(&mountlist_slock);
> #if 0
> /*
>
>Eivind.

>To Unsubscribe: send mail to majordomo@FreeBSD.org
>with "unsubscribe freebsd-fs" in the body of the message
>

--
Poul-Henning Kamp             FreeBSD coreteam member
phk@FreeBSD.ORG               "Real hackers run -current on their laptop."
"Drink MONO-tonic, it goes down but it will NEVER come back up!"

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-fs" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3416.888595625>