Deleted Added
full compact
opensolaris_vfs.c (180652) opensolaris_vfs.c (182542)
1/*-
2 * Copyright (c) 2006-2007 Pawel Jakub Dawidek <pjd@FreeBSD.org>
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 11 unchanged lines hidden (view full) ---

20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 */
26
27#include <sys/cdefs.h>
1/*-
2 * Copyright (c) 2006-2007 Pawel Jakub Dawidek <pjd@FreeBSD.org>
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 11 unchanged lines hidden (view full) ---

20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 */
26
27#include <sys/cdefs.h>
28__FBSDID("$FreeBSD: head/sys/cddl/compat/opensolaris/kern/opensolaris_vfs.c 180652 2008-07-21 09:45:44Z pjd $");
28__FBSDID("$FreeBSD: head/sys/cddl/compat/opensolaris/kern/opensolaris_vfs.c 182542 2008-08-31 14:26:08Z attilio $");
29
30#include <sys/param.h>
31#include <sys/kernel.h>
32#include <sys/systm.h>
33#include <sys/mount.h>
34#include <sys/cred.h>
35#include <sys/vfs.h>
36#include <sys/priv.h>

--- 151 unchanged lines hidden (view full) ---

188 }
189 vp->v_iflag |= VI_MOUNT;
190 VI_UNLOCK(vp);
191
192 /*
193 * Allocate and initialize the filesystem.
194 */
195 vn_lock(vp, LK_SHARED | LK_RETRY);
29
30#include <sys/param.h>
31#include <sys/kernel.h>
32#include <sys/systm.h>
33#include <sys/mount.h>
34#include <sys/cred.h>
35#include <sys/vfs.h>
36#include <sys/priv.h>

--- 151 unchanged lines hidden (view full) ---

188 }
189 vp->v_iflag |= VI_MOUNT;
190 VI_UNLOCK(vp);
191
192 /*
193 * Allocate and initialize the filesystem.
194 */
195 vn_lock(vp, LK_SHARED | LK_RETRY);
196 mp = vfs_mount_alloc(vp, vfsp, fspath, td);
196 mp = vfs_mount_alloc(vp, vfsp, fspath, td->td_ucred);
197 VOP_UNLOCK(vp, 0);
198
199 mp->mnt_optnew = NULL;
200 vfs_setmntopt(mp, "from", fspec, 0);
201 mp->mnt_optnew = mp->mnt_opt;
202 mp->mnt_opt = NULL;
203
204 /*

--- 53 unchanged lines hidden (view full) ---

258 vfs_event_signal(NULL, VQ_MOUNT, 0);
259 if (VFS_ROOT(mp, LK_EXCLUSIVE, &mvp, td))
260 panic("mount: lost mount");
261 mountcheckdirs(vp, mvp);
262 vput(mvp);
263 VOP_UNLOCK(vp, 0);
264 if ((mp->mnt_flag & MNT_RDONLY) == 0)
265 error = vfs_allocate_syncvnode(mp);
197 VOP_UNLOCK(vp, 0);
198
199 mp->mnt_optnew = NULL;
200 vfs_setmntopt(mp, "from", fspec, 0);
201 mp->mnt_optnew = mp->mnt_opt;
202 mp->mnt_opt = NULL;
203
204 /*

--- 53 unchanged lines hidden (view full) ---

258 vfs_event_signal(NULL, VQ_MOUNT, 0);
259 if (VFS_ROOT(mp, LK_EXCLUSIVE, &mvp, td))
260 panic("mount: lost mount");
261 mountcheckdirs(vp, mvp);
262 vput(mvp);
263 VOP_UNLOCK(vp, 0);
264 if ((mp->mnt_flag & MNT_RDONLY) == 0)
265 error = vfs_allocate_syncvnode(mp);
266 vfs_unbusy(mp, td);
266 vfs_unbusy(mp);
267 if (error)
268 vrele(vp);
269 else
270 vfs_mountedfrom(mp, fspec);
271 } else {
272 VI_LOCK(vp);
273 vp->v_iflag &= ~VI_MOUNT;
274 VI_UNLOCK(vp);
275 VOP_UNLOCK(vp, 0);
267 if (error)
268 vrele(vp);
269 else
270 vfs_mountedfrom(mp, fspec);
271 } else {
272 VI_LOCK(vp);
273 vp->v_iflag &= ~VI_MOUNT;
274 VI_UNLOCK(vp);
275 VOP_UNLOCK(vp, 0);
276 vfs_unbusy(mp, td);
276 vfs_unbusy(mp);
277 vfs_mount_destroy(mp);
278 }
279 return (error);
280}
277 vfs_mount_destroy(mp);
278 }
279 return (error);
280}