diff options
author | Grigoriy Orlov <gluk@cvs.openbsd.org> | 2001-03-13 18:17:26 +0000 |
---|---|---|
committer | Grigoriy Orlov <gluk@cvs.openbsd.org> | 2001-03-13 18:17:26 +0000 |
commit | dea6593d6c5edb11052948c458e94a8408c78ecf (patch) | |
tree | e1729524478c55b1253a911a04de4641ca54ef55 /sys/ufs/ffs/ffs_vfsops.c | |
parent | 62dd2ca3ab0015cbc9da641a7853828cdef86035 (diff) |
correct softdep integration error, add missed lock;
Diffstat (limited to 'sys/ufs/ffs/ffs_vfsops.c')
-rw-r--r-- | sys/ufs/ffs/ffs_vfsops.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/sys/ufs/ffs/ffs_vfsops.c b/sys/ufs/ffs/ffs_vfsops.c index e50422b6862..d6af1f605ca 100644 --- a/sys/ufs/ffs/ffs_vfsops.c +++ b/sys/ufs/ffs/ffs_vfsops.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ffs_vfsops.c,v 1.30 2001/02/21 23:24:31 csapuntz Exp $ */ +/* $OpenBSD: ffs_vfsops.c,v 1.31 2001/03/13 18:17:25 gluk Exp $ */ /* $NetBSD: ffs_vfsops.c,v 1.19 1996/02/09 22:22:26 christos Exp $ */ /* @@ -924,11 +924,13 @@ loop: * Force stale file system control information to be flushed. */ if ((ump->um_mountp->mnt_flag & MNT_SOFTDEP) && waitfor == MNT_WAIT) { - if ((error == softdep_flushworklist(ump->um_mountp, &count, p)) - != 0) + if ((error = softdep_flushworklist(ump->um_mountp, &count, p))) allerror = error; - if (count) + /* Flushed work items may create new vnodes to clean */ + if (count) { + simple_lock(&mntvnode_slock); goto loop; + } } if (waitfor != MNT_LAZY) { if (ump->um_mountp->mnt_flag & MNT_SOFTDEP) |