svn commit: r188501 - head/sys/ufs/ffs
John Baldwin
jhb at FreeBSD.org
Wed Feb 11 14:19:56 PST 2009
Author: jhb
Date: Wed Feb 11 22:19:54 2009
New Revision: 188501
URL: http://svn.freebsd.org/changeset/base/188501
Log:
- If the g_access() call for the initial root mount fails, then fully
cleanup. Before the GEOM consumer would not have been closed.
- Bump the reference on the character device being mounted while the
associated devfs vnode is locked.
Reviewed by: kib
Modified:
head/sys/ufs/ffs/ffs_vfsops.c
Modified: head/sys/ufs/ffs/ffs_vfsops.c
==============================================================================
--- head/sys/ufs/ffs/ffs_vfsops.c Wed Feb 11 22:18:03 2009 (r188500)
+++ head/sys/ufs/ffs/ffs_vfsops.c Wed Feb 11 22:19:54 2009 (r188501)
@@ -622,10 +622,13 @@ ffs_mountfs(devvp, mp, td)
struct g_consumer *cp;
struct mount *nmp;
- dev = devvp->v_rdev;
+ bp = NULL;
+ ump = NULL;
cred = td ? td->td_ucred : NOCRED;
-
ronly = (mp->mnt_flag & MNT_RDONLY) != 0;
+
+ dev = devvp->v_rdev;
+ dev_ref(dev);
DROP_GIANT();
g_topology_lock();
error = g_vfs_open(devvp, &cp, "ffs", ronly ? 0 : 1);
@@ -640,8 +643,7 @@ ffs_mountfs(devvp, mp, td)
PICKUP_GIANT();
VOP_UNLOCK(devvp, 0);
if (error)
- return (error);
- dev_ref(dev);
+ goto out;
if (devvp->v_rdev->si_iosize_max != 0)
mp->mnt_iosize_max = devvp->v_rdev->si_iosize_max;
if (mp->mnt_iosize_max > MAXPHYS)
@@ -650,8 +652,6 @@ ffs_mountfs(devvp, mp, td)
devvp->v_bufobj.bo_private = cp;
devvp->v_bufobj.bo_ops = &ffs_ops;
- bp = NULL;
- ump = NULL;
fs = NULL;
sblockloc = 0;
/*
More information about the svn-src-head
mailing list