summaryrefslogtreecommitdiffstats
path: root/sys/ufs/ffs/ffs_vfsops.c
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2010-12-01 21:19:11 +0000
committerkib <kib@FreeBSD.org>2010-12-01 21:19:11 +0000
commite3e1ae2c87e9c90fc1af144567e491f3f049512d (patch)
treefadf63f4d3be867955c620edc930caf7ea5ee4e1 /sys/ufs/ffs/ffs_vfsops.c
parent0a3bc2b1b96399af7fd4120eb826e426ede43530 (diff)
downloadFreeBSD-src-e3e1ae2c87e9c90fc1af144567e491f3f049512d.zip
FreeBSD-src-e3e1ae2c87e9c90fc1af144567e491f3f049512d.tar.gz
Journal start looks up .sujournal file by doing lookup on the root dvp.
As result, failed softdep_mount() might leave up to two vnodes on the mp mountlist, preventing mnt_ref from going to zero. Call ffs_flushfiles() after failed softdep_mount() to clean mountlist. Initial report by: Garrett Cooper Reproduced and tested by: pho
Diffstat (limited to 'sys/ufs/ffs/ffs_vfsops.c')
-rw-r--r--sys/ufs/ffs/ffs_vfsops.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/ufs/ffs/ffs_vfsops.c b/sys/ufs/ffs/ffs_vfsops.c
index 94951e4..72f40da 100644
--- a/sys/ufs/ffs/ffs_vfsops.c
+++ b/sys/ufs/ffs/ffs_vfsops.c
@@ -928,6 +928,7 @@ ffs_mountfs(devvp, mp, td)
if ((fs->fs_flags & FS_DOSOFTDEP) &&
(error = softdep_mount(devvp, mp, fs, cred)) != 0) {
free(fs->fs_csp, M_UFSMNT);
+ ffs_flushfiles(mp, FORCECLOSE, td);
goto out;
}
if (fs->fs_snapinum[0] != 0)
OpenPOWER on IntegriCloud