Date: Fri, 27 Feb 1998 16:48:59 +0100 From: Eivind Eklund <eivind@yes.no> To: fs@FreeBSD.ORG Subject: syncer / SMP question Message-ID: <19980227164859.25557@follo.net>
next in thread | raw e-mail | index | archive | help
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 : NOCRED, 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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19980227164859.25557>
