Remove the thread argument from all mount->vfs_* function vectors,
authorMatthew Dillon <dillon@dragonflybsd.org>
Sat, 6 May 2006 18:48:53 +0000 (18:48 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Sat, 6 May 2006 18:48:53 +0000 (18:48 +0000)
replacing it with a ucred pointer when applicable.  This cleans up a
considerable amount of VFS function code that previously delved into
the process structure to get the cred, though some code remains.

Get rid of the compatibility thread argument for hpfs and nwfs.  Our
lockmgr calls are now mostly compatible with NetBSD (which doesn't use a
thread argument either).

Get rid of some complex junk in fdesc_statfs() that nobody uses.

Remove the thread argument from dounmount() as well as various other
filesystem specific procedures (quota calls primarily) which no longer
need it due to the lockmgr, VOP, and VFS cleanups.  These cleanups also
have the effect of making the VFS code slightly less dependant on the
calling thread's context.

43 files changed:
sys/emulation/ibcs2/i386/ibcs2_stat.c
sys/emulation/linux/i386/linprocfs/linprocfs_vfsops.c
sys/emulation/linux/linux_stats.c
sys/kern/kern_acct.c
sys/kern/vfs_conf.c
sys/kern/vfs_default.c
sys/kern/vfs_subr.c
sys/kern/vfs_syscalls.c
sys/sys/mount.h
sys/vfs/coda/coda_psdev.c
sys/vfs/coda/coda_vfsops.c
sys/vfs/coda/coda_vfsops.h
sys/vfs/fdesc/fdesc.h
sys/vfs/fdesc/fdesc_vfsops.c
sys/vfs/fdesc/fdesc_vnops.c
sys/vfs/gnu/ext2fs/ext2_quota.c
sys/vfs/gnu/ext2fs/ext2_vfsops.c
sys/vfs/gnu/ext2fs/quota.h
sys/vfs/hpfs/hpfs.h
sys/vfs/hpfs/hpfs_vfsops.c
sys/vfs/hpfs/hpfs_vnops.c
sys/vfs/isofs/cd9660/cd9660_vfsops.c
sys/vfs/mfs/mfs_vfsops.c
sys/vfs/msdosfs/msdosfs_vfsops.c
sys/vfs/nfs/nfs_kerb.c
sys/vfs/nfs/nfs_serv.c
sys/vfs/nfs/nfs_vfsops.c
sys/vfs/ntfs/ntfs.h
sys/vfs/ntfs/ntfs_vfsops.c
sys/vfs/ntfs/ntfs_vnops.c
sys/vfs/nullfs/null_vfsops.c
sys/vfs/nwfs/nwfs_vfsops.c
sys/vfs/portal/portal_vfsops.c
sys/vfs/procfs/procfs_vfsops.c
sys/vfs/smbfs/smbfs.h
sys/vfs/smbfs/smbfs_vfsops.c
sys/vfs/udf/udf_vfsops.c
sys/vfs/ufs/ffs_extern.h
sys/vfs/ufs/ffs_vfsops.c
sys/vfs/ufs/quota.h
sys/vfs/ufs/ufs_vfsops.c
sys/vfs/umapfs/umap_vfsops.c
sys/vfs/union/union_vfsops.c

index f1369ce..267b8dc 100644 (file)
@@ -26,7 +26,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/ibcs2/ibcs2_stat.c,v 1.10 1999/12/15 23:01:45 eivind Exp $
- * $DragonFly: src/sys/emulation/ibcs2/i386/Attic/ibcs2_stat.c,v 1.12 2005/12/10 16:06:20 swildner Exp $
+ * $DragonFly: src/sys/emulation/ibcs2/i386/Attic/ibcs2_stat.c,v 1.13 2006/05/06 18:48:49 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -99,7 +99,6 @@ cvt_statfs(struct statfs *sp, caddr_t buf, int len)
 int
 ibcs2_statfs(struct ibcs2_statfs_args *uap)
 {
-       struct thread *td = curthread;  /* XXX */
        struct mount *mp;
        struct statfs *sp;
        int error;
@@ -113,7 +112,7 @@ ibcs2_statfs(struct ibcs2_statfs_args *uap)
        if (error == 0) {
                mp = nd.nl_ncp->nc_mount;
                sp = &mp->mnt_stat;
-               error = VFS_STATFS(mp, sp, td);
+               error = VFS_STATFS(mp, sp, curproc->p_ucred);
                if (error == 0) {
                        sp->f_flags = mp->mnt_flag & MNT_VISFLAGMASK;
                        error = cvt_statfs(sp, (caddr_t)SCARG(uap, buf),
@@ -138,7 +137,7 @@ ibcs2_fstatfs(struct ibcs2_fstatfs_args *uap)
                return (error);
        mp = ((struct vnode *)fp->f_data)->v_mount;
        sp = &mp->mnt_stat;
-       if ((error = VFS_STATFS(mp, sp, td)) != 0)
+       if ((error = VFS_STATFS(mp, sp, curproc->p_ucred)) != 0)
                return (error);
        sp->f_flags = mp->mnt_flag & MNT_VISFLAGMASK;
        return cvt_statfs(sp, (caddr_t)SCARG(uap, buf), SCARG(uap, len));
index 9631ad4..8d7f2db 100644 (file)
@@ -39,7 +39,7 @@
  *     @(#)procfs_vfsops.c     8.7 (Berkeley) 5/10/95
  *
  * $FreeBSD: src/sys/i386/linux/linprocfs/linprocfs_vfsops.c,v 1.2.2.3 2001/10/15 20:42:01 des Exp $
- * $DragonFly: src/sys/emulation/linux/i386/linprocfs/linprocfs_vfsops.c,v 1.11 2005/12/10 16:06:20 swildner Exp $
+ * $DragonFly: src/sys/emulation/linux/i386/linprocfs/linprocfs_vfsops.c,v 1.12 2006/05/06 18:48:51 dillon Exp $
  */
 
 /*
 extern struct vnodeopv_entry_desc linprocfs_vnodeop_entries[];
 
 static int     linprocfs_mount (struct mount *mp, char *path, caddr_t data,
-                                 struct thread *td);
+                                 struct ucred *cred);
 static int     linprocfs_statfs (struct mount *mp, struct statfs *sbp,
-                                  struct thread *td);
-static int     linprocfs_unmount (struct mount *mp, int mntflags,
-                                   struct thread *td);
+                                  struct ucred *cred);
+static int     linprocfs_unmount (struct mount *mp, int mntflags);
 
 /*
  * VFS Operations.
@@ -71,7 +70,7 @@ static int    linprocfs_unmount (struct mount *mp, int mntflags,
  */
 /* ARGSUSED */
 static int
-linprocfs_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
+linprocfs_mount(struct mount *mp, char *path, caddr_t data, struct ucred *cred)
 {
        size_t size;
        int error;
@@ -94,7 +93,7 @@ linprocfs_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
        size = sizeof("linprocfs") - 1;
        bcopy("linprocfs", mp->mnt_stat.f_mntfromname, size);
        bzero(mp->mnt_stat.f_mntfromname + size, MNAMELEN - size);
-       (void)linprocfs_statfs(mp, &mp->mnt_stat, td);
+       (void)linprocfs_statfs(mp, &mp->mnt_stat, cred);
 
        return (0);
 }
@@ -103,7 +102,7 @@ linprocfs_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
  * unmount system call
  */
 static int
-linprocfs_unmount(struct mount *mp, int mntflags, struct thread *td)
+linprocfs_unmount(struct mount *mp, int mntflags)
 {
        int error;
        int flags = 0;
@@ -132,7 +131,7 @@ linprocfs_root(struct mount *mp, struct vnode **vpp)
  * Get file system statistics.
  */
 static int
-linprocfs_statfs(struct mount *mp, struct statfs *sbp, struct thread *td)
+linprocfs_statfs(struct mount *mp, struct statfs *sbp, struct ucred *cred)
 {
        sbp->f_bsize = PAGE_SIZE;
        sbp->f_iosize = PAGE_SIZE;
index 1f3df77..57537bd 100644 (file)
@@ -26,7 +26,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/compat/linux/linux_stats.c,v 1.22.2.3 2001/11/05 19:08:23 marcel Exp $
- * $DragonFly: src/sys/emulation/linux/linux_stats.c,v 1.17 2005/08/09 18:45:09 joerg Exp $
+ * $DragonFly: src/sys/emulation/linux/linux_stats.c,v 1.18 2006/05/06 18:48:50 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -296,7 +296,6 @@ struct l_ustat
 int
 linux_ustat(struct linux_ustat_args *args)
 {
-       struct thread *td = curthread;
        struct l_ustat lu;
        dev_t dev;
        struct vnode *vp;
@@ -327,7 +326,7 @@ linux_ustat(struct linux_ustat_args *args)
                        return (EINVAL);
                }
                stat = &(vp->v_mount->mnt_stat);
-               error = VFS_STATFS(vp->v_mount, stat, td);
+               error = VFS_STATFS(vp->v_mount, stat, curproc->p_ucred);
                if (error) {
                        return (error);
                }
index c3ed14d..0aa67e8 100644 (file)
@@ -38,7 +38,7 @@
  *
  *     @(#)kern_acct.c 8.1 (Berkeley) 6/14/93
  * $FreeBSD: src/sys/kern/kern_acct.c,v 1.23.2.1 2002/07/24 18:33:55 johan Exp $
- * $DragonFly: src/sys/kern/kern_acct.c,v 1.22 2006/05/06 02:43:12 dillon Exp $
+ * $DragonFly: src/sys/kern/kern_acct.c,v 1.23 2006/05/06 18:48:52 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -321,7 +321,7 @@ acctwatch(void *a)
                        savacctp = NULLVP;
                        return;
                }
-               (void)VFS_STATFS(savacctp->v_mount, &sb, NULL);
+               (void)VFS_STATFS(savacctp->v_mount, &sb, proc0.p_ucred);
                if (sb.f_bavail > acctresume * sb.f_blocks / 100) {
                        acctp = savacctp;
                        savacctp = NULLVP;
@@ -335,7 +335,7 @@ acctwatch(void *a)
                        acctp = NULLVP;
                        return;
                }
-               (void)VFS_STATFS(acctp->v_mount, &sb, NULL);
+               (void)VFS_STATFS(acctp->v_mount, &sb, proc0.p_ucred);
                if (sb.f_bavail <= acctsuspend * sb.f_blocks / 100) {
                        savacctp = acctp;
                        acctp = NULLVP;
index 27100a4..76f3055 100644 (file)
@@ -26,7 +26,7 @@
  * SUCH DAMAGE.
  *
  *     $FreeBSD: src/sys/kern/vfs_conf.c,v 1.49.2.5 2003/01/07 11:56:53 joerg Exp $
- *     $DragonFly: src/sys/kern/vfs_conf.c,v 1.15 2006/05/05 21:27:53 dillon Exp $
+ *     $DragonFly: src/sys/kern/vfs_conf.c,v 1.16 2006/05/06 18:48:52 dillon Exp $
  */
 
 /*
@@ -188,7 +188,6 @@ vfs_mountroot(void *junk)
 static int
 vfs_mountroot_try(const char *mountfrom)
 {
-       struct thread   *td = curthread;
         struct mount   *mp;
        char            *vfsname, *devname;
        int             error;
@@ -234,7 +233,7 @@ vfs_mountroot_try(const char *mountfrom)
                mp->mnt_flag &= ~MNT_RDONLY;
        }
 
-       error = VFS_MOUNT(mp, NULL, NULL, td);
+       error = VFS_MOUNT(mp, NULL, NULL, proc0.p_ucred);
 
 done:
        if (vfsname != NULL)
index 93d96fa..7fd3419 100644 (file)
@@ -37,7 +37,7 @@
  *
  *
  * $FreeBSD: src/sys/kern/vfs_default.c,v 1.28.2.7 2003/01/10 18:23:26 bde Exp $
- * $DragonFly: src/sys/kern/vfs_default.c,v 1.39 2006/05/06 02:43:12 dillon Exp $
+ * $DragonFly: src/sys/kern/vfs_default.c,v 1.40 2006/05/06 18:48:52 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -1334,13 +1334,13 @@ vop_stdpoll(ap)
  * used to fill the vfs fucntion table to get reasonable default return values.
  */
 int 
-vfs_stdmount(struct mount *mp, char *path, caddr_t data, struct thread *td)
+vfs_stdmount(struct mount *mp, char *path, caddr_t data, struct ucred *cred)
 {
        return (0);
 }
 
 int    
-vfs_stdunmount(struct mount *mp, int mntflags, struct thread *td)
+vfs_stdunmount(struct mount *mp, int mntflags)
 {
        return (0);
 }
@@ -1352,7 +1352,7 @@ vfs_stdroot(struct mount *mp, struct vnode **vpp)
 }
 
 int    
-vfs_stdstatfs(struct mount *mp, struct statfs *sbp, struct thread *td)
+vfs_stdstatfs(struct mount *mp, struct statfs *sbp, struct ucred *cred)
 {
        return (EOPNOTSUPP);
 }
@@ -1364,14 +1364,14 @@ vfs_stdvptofh(struct vnode *vp, struct fid *fhp)
 }
 
 int    
-vfs_stdstart(struct mount *mp, int flags, struct thread *td)
+vfs_stdstart(struct mount *mp, int flags)
 {
        return (0);
 }
 
 int    
 vfs_stdquotactl(struct mount *mp, int cmds, uid_t uid,
-       caddr_t arg, struct thread *td)
+       caddr_t arg, struct ucred *cred)
 {
        return (EOPNOTSUPP);
 }
@@ -1421,7 +1421,7 @@ vfs_stduninit(struct vfsconf *vfsp)
 
 int
 vfs_stdextattrctl(struct mount *mp, int cmd, const char *attrname,
-       caddr_t arg, struct thread *td)
+       caddr_t arg, struct ucred *cred)
 {
        return(EOPNOTSUPP);
 }
index a9eeb81..17c99d8 100644 (file)
@@ -37,7 +37,7 @@
  *
  *     @(#)vfs_subr.c  8.31 (Berkeley) 5/26/95
  * $FreeBSD: src/sys/kern/vfs_subr.c,v 1.249.2.30 2003/04/04 20:35:57 tegge Exp $
- * $DragonFly: src/sys/kern/vfs_subr.c,v 1.83 2006/05/06 02:43:12 dillon Exp $
+ * $DragonFly: src/sys/kern/vfs_subr.c,v 1.84 2006/05/06 18:48:52 dillon Exp $
  */
 
 /*
@@ -1493,7 +1493,7 @@ vfs_unmountall(void)
 
        do {
                count = mountlist_scan(vfs_umountall_callback, 
-                                       &td, MNTSCAN_REVERSE|MNTSCAN_NOBUSY);
+                                       NULL, MNTSCAN_REVERSE|MNTSCAN_NOBUSY);
        } while (count);
 }
 
@@ -1501,10 +1501,9 @@ static
 int
 vfs_umountall_callback(struct mount *mp, void *data)
 {
-       struct thread *td = *(struct thread **)data;
        int error;
 
-       error = dounmount(mp, MNT_FORCE, td);
+       error = dounmount(mp, MNT_FORCE);
        if (error) {
                mountlist_remove(mp);
                printf("unmount of filesystem mounted from %s failed (", 
index a2130d2..c66538e 100644 (file)
@@ -37,7 +37,7 @@
  *
  *     @(#)vfs_syscalls.c      8.13 (Berkeley) 4/15/94
  * $FreeBSD: src/sys/kern/vfs_syscalls.c,v 1.151.2.18 2003/04/04 20:35:58 tegge Exp $
- * $DragonFly: src/sys/kern/vfs_syscalls.c,v 1.87 2006/05/06 06:38:38 dillon Exp $
+ * $DragonFly: src/sys/kern/vfs_syscalls.c,v 1.88 2006/05/06 18:48:52 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -114,9 +114,10 @@ mount(struct mount_args *uap)
        struct nlookupdata nd;
        char fstypename[MFSNAMELEN];
        struct nlcomponent nlc;
+       struct ucred *cred = p->p_ucred;
 
        KKASSERT(p);
-       if (p->p_ucred->cr_prison != NULL)
+       if (cred->cr_prison != NULL)
                return (EPERM);
        if (usermount == 0 && (error = suser(td)))
                return (error);
@@ -192,7 +193,7 @@ mount(struct mount_args *uap)
                 * Only root, or the user that did the original mount is
                 * permitted to update it.
                 */
-               if (mp->mnt_stat.f_owner != p->p_ucred->cr_uid &&
+               if (mp->mnt_stat.f_owner != cred->cr_uid &&
                    (error = suser(td))) {
                        cache_drop(ncp);
                        vput(vp);
@@ -221,8 +222,7 @@ mount(struct mount_args *uap)
         * onto which we are attempting to mount.
         */
        if ((error = VOP_GETATTR(vp, &va)) ||
-           (va.va_uid != p->p_ucred->cr_uid &&
-            (error = suser(td)))) {
+           (va.va_uid != cred->cr_uid && (error = suser(td)))) {
                cache_drop(ncp);
                vput(vp);
                return (error);
@@ -302,7 +302,7 @@ mount(struct mount_args *uap)
        mp->mnt_flag |= vfsp->vfc_flags & MNT_VISFLAGMASK;
        strncpy(mp->mnt_stat.f_fstypename, vfsp->vfc_name, MFSNAMELEN);
        mp->mnt_vnodecovered = vp;
-       mp->mnt_stat.f_owner = p->p_ucred->cr_uid;
+       mp->mnt_stat.f_owner = cred->cr_uid;
        mp->mnt_iosize_max = DFLTPHYS;
        VOP_UNLOCK(vp, 0);
 update:
@@ -326,7 +326,7 @@ update:
         * XXX The final recipients of VFS_MOUNT just overwrite the ndp they
         * get. 
         */
-       error = VFS_MOUNT(mp, uap->path, uap->data, td);
+       error = VFS_MOUNT(mp, uap->path, uap->data, cred);
        if (mp->mnt_flag & MNT_UPDATE) {
                if (mp->mnt_kern_flag & MNTK_WANTRDWR)
                        mp->mnt_flag &= ~MNT_RDONLY;
@@ -371,7 +371,7 @@ update:
                VOP_UNLOCK(vp, 0);
                error = vfs_allocate_syncvnode(mp);
                vfs_unbusy(mp);
-               if ((error = VFS_START(mp, 0, td)) != 0)
+               if ((error = VFS_START(mp, 0)) != 0)
                        vrele(vp);
        } else {
                vfs_rm_vnodeops(&mp->mnt_vn_coherency_ops);
@@ -499,7 +499,7 @@ out:
        nlookup_done(&nd);
        if (error)
                return (error);
-       return (dounmount(mp, uap->flags, td));
+       return (dounmount(mp, uap->flags));
 }
 
 /*
@@ -515,7 +515,7 @@ dounmount_interlock(struct mount *mp)
 }
 
 int
-dounmount(struct mount *mp, int flags, struct thread *td)
+dounmount(struct mount *mp, int flags)
 {
        struct vnode *coveredvp;
        int error;
@@ -554,7 +554,7 @@ dounmount(struct mount *mp, int flags, struct thread *td)
        if (((mp->mnt_flag & MNT_RDONLY) ||
             (error = VFS_SYNC(mp, MNT_WAIT)) == 0) ||
            (flags & MNT_FORCE))
-               error = VFS_UNMOUNT(mp, flags, td);
+               error = VFS_UNMOUNT(mp, flags);
        if (error) {
                if (mp->mnt_syncer == NULL)
                        vfs_allocate_syncvnode(mp);
@@ -674,7 +674,7 @@ quotactl(struct quotactl_args *uap)
        if (error == 0) {
                mp = nd.nl_ncp->nc_mount;
                error = VFS_QUOTACTL(mp, uap->cmd, uap->uid,
-                                   uap->arg, nd.nl_td);
+                                   uap->arg, nd.nl_cred);
        }
        nlookup_done(&nd);
        return (error);
@@ -824,7 +824,7 @@ kern_statfs(struct nlookupdata *nd, struct statfs *buf)
                return (error);
        mp = nd->nl_ncp->nc_mount;
        sp = &mp->mnt_stat;
-       if ((error = VFS_STATFS(mp, sp, td)) != 0)
+       if ((error = VFS_STATFS(mp, sp, nd->nl_cred)) != 0)
                return (error);
 
        error = cache_fullpath(p, mp->mnt_ncp, &fullpath, &freepath);
@@ -881,8 +881,10 @@ kern_fstatfs(int fd, struct statfs *buf)
        mp = ((struct vnode *)fp->f_data)->v_mount;
        if (mp == NULL)
                return (EBADF);
+       if (fp->f_cred == NULL)
+               return (EINVAL);
        sp = &mp->mnt_stat;
-       error = VFS_STATFS(mp, sp, td);
+       error = VFS_STATFS(mp, sp, fp->f_cred);
        if (error)
                return (error);
 
@@ -933,7 +935,6 @@ struct getfsstat_info {
        int error;
        int flags;
        int is_chrooted;
-       struct thread *td;
        struct proc *p;
 };
 
@@ -957,7 +958,6 @@ getfsstat(struct getfsstat_args *uap)
        info.sfsp = uap->buf;
        info.count = 0;
        info.flags = uap->flags;
-       info.td = td;
        info.p = p;
 
        mountlist_scan(getfsstat_callback, &info, MNTSCAN_FORWARD);
@@ -989,7 +989,7 @@ getfsstat_callback(struct mount *mp, void *data)
                 */
                if (((info->flags & (MNT_LAZY|MNT_NOWAIT)) == 0 ||
                    (info->flags & MNT_WAIT)) &&
-                   (error = VFS_STATFS(mp, sp, info->td))) {
+                   (error = VFS_STATFS(mp, sp, info->p->p_ucred))) {
                        return(0);
                }
                sp->f_flags = mp->mnt_flag & MNT_VISFLAGMASK;
@@ -3337,7 +3337,7 @@ fhstatfs(struct fhstatfs_args *uap)
        mp = vp->v_mount;
        sp = &mp->mnt_stat;
        vput(vp);
-       if ((error = VFS_STATFS(mp, sp, td)) != 0)
+       if ((error = VFS_STATFS(mp, sp, p->p_ucred)) != 0)
                return (error);
 
        error = cache_fullpath(p, mp->mnt_ncp, &fullpath, &freepath);
@@ -3383,7 +3383,7 @@ extattrctl(struct extattrctl_args *uap)
                mp = nd.nl_ncp->nc_mount;
                error = VFS_EXTATTRCTL(mp, uap->cmd, 
                                uap->attrname, uap->arg, 
-                               nd.nl_td);
+                               nd.nl_cred);
        }
        nlookup_done(&nd);
        return (error);
index b60b86a..18a6bd1 100644 (file)
@@ -32,7 +32,7 @@
  *
  *     @(#)mount.h     8.21 (Berkeley) 5/20/95
  * $FreeBSD: src/sys/sys/mount.h,v 1.89.2.7 2003/04/04 20:35:57 tegge Exp $
- * $DragonFly: src/sys/sys/mount.h,v 1.23 2006/05/06 02:43:13 dillon Exp $
+ * $DragonFly: src/sys/sys/mount.h,v 1.24 2006/05/06 18:48:52 dillon Exp $
  */
 
 #ifndef _SYS_MOUNT_H_
@@ -374,15 +374,14 @@ struct mbuf;
 #endif
 
 typedef int vfs_mount_t(struct mount *mp, char *path, caddr_t data,
-                                   struct thread *td);
-typedef int vfs_start_t(struct mount *mp, int flags, struct thread *td);
-typedef int vfs_unmount_t(struct mount *mp, int mntflags,
-                                   struct thread *td);
+                                   struct ucred *cred);
+typedef int vfs_start_t(struct mount *mp, int flags);
+typedef int vfs_unmount_t(struct mount *mp, int mntflags);
 typedef int vfs_root_t(struct mount *mp, struct vnode **vpp);
 typedef int vfs_quotactl_t(struct mount *mp, int cmds, uid_t uid, caddr_t arg,
-                                   struct thread *td);
+                                   struct ucred *cred);
 typedef int vfs_statfs_t(struct mount *mp, struct statfs *sbp,
-                                   struct thread *td);
+                                   struct ucred *cred);
 typedef int vfs_sync_t(struct mount *mp, int waitfor);
 typedef int vfs_vget_t(struct mount *mp, ino_t ino, struct vnode **vpp);
 typedef int vfs_fhtovp_t(struct mount *mp, struct fid *fhp,
@@ -393,7 +392,7 @@ typedef int vfs_vptofh_t(struct vnode *vp, struct fid *fhp);
 typedef int vfs_init_t(struct vfsconf *);
 typedef int vfs_uninit_t(struct vfsconf *);
 typedef int vfs_extattrctl_t(struct mount *mp, int cmd,const char *attrname,
-                   caddr_t arg, struct thread *td);
+                   caddr_t arg, struct ucred *cred);
 
 struct vfsops {
        vfs_mount_t     *vfs_mount;
@@ -412,22 +411,23 @@ struct vfsops {
        vfs_extattrctl_t        *vfs_extattrctl;
 };
 
-#define VFS_MOUNT(MP, PATH, DATA, P) \
-       (*(MP)->mnt_op->vfs_mount)(MP, PATH, DATA, P)
-#define VFS_START(MP, FLAGS, P)          (*(MP)->mnt_op->vfs_start)(MP, FLAGS, P)
-#define VFS_UNMOUNT(MP, FORCE, P) (*(MP)->mnt_op->vfs_unmount)(MP, FORCE, P)
+#define VFS_MOUNT(MP, PATH, DATA, CRED) \
+       (*(MP)->mnt_op->vfs_mount)(MP, PATH, DATA, CRED)
+#define VFS_START(MP, FLAGS)     (*(MP)->mnt_op->vfs_start)(MP, FLAGS)
+#define VFS_UNMOUNT(MP, FORCE)   (*(MP)->mnt_op->vfs_unmount)(MP, FORCE)
 #define VFS_ROOT(MP, VPP)        (*(MP)->mnt_op->vfs_root)(MP, VPP)
-#define VFS_QUOTACTL(MP,C,U,A,P)  (*(MP)->mnt_op->vfs_quotactl)(MP, C, U, A, P)
-#define VFS_STATFS(MP, SBP, P)   (*(MP)->mnt_op->vfs_statfs)(MP, SBP, P)
+#define VFS_QUOTACTL(MP,C,U,A,CRED)    \
+       (*(MP)->mnt_op->vfs_quotactl)(MP, C, U, A, CRED)
+#define VFS_STATFS(MP, SBP, CRED) (*(MP)->mnt_op->vfs_statfs)(MP, SBP, CRED)
 #define VFS_SYNC(MP, WAIT)       (*(MP)->mnt_op->vfs_sync)(MP, WAIT)
 #define VFS_VGET(MP, INO, VPP)   (*(MP)->mnt_op->vfs_vget)(MP, INO, VPP)
-#define VFS_FHTOVP(MP, FIDP, VPP) \
+#define VFS_FHTOVP(MP, FIDP, VPP)      \
        (*(MP)->mnt_op->vfs_fhtovp)(MP, FIDP, VPP)
 #define        VFS_VPTOFH(VP, FIDP)      (*(VP)->v_mount->mnt_op->vfs_vptofh)(VP, FIDP)
 #define VFS_CHECKEXP(MP, NAM, EXFLG, CRED) \
        (*(MP)->mnt_op->vfs_checkexp)(MP, NAM, EXFLG, CRED)
-#define VFS_EXTATTRCTL(MP, C, N, A, P) \
-       (*(MP)->mnt_op->vfs_extattrctl)(MP, C, N, A, P)
+#define VFS_EXTATTRCTL(MP, C, N, A, CRED) \
+       (*(MP)->mnt_op->vfs_extattrctl)(MP, C, N, A, CRED)
 
 #endif
 
@@ -485,7 +485,7 @@ extern      char *mountrootfsname;
 /*
  * exported vnode operations
  */
-int    dounmount (struct mount *, int, struct thread *);
+int    dounmount (struct mount *, int);
 int    vfs_setpublicfs                     /* set publicly exported fs */
          (struct mount *, struct netexport *, struct export_args *);
 int    vfs_lock (struct mount *);         /* lock a vfs */
@@ -529,7 +529,7 @@ vfs_checkexp_t      vfs_stdcheckexp;
 vfs_vptofh_t   vfs_stdvptofh;
 vfs_init_t     vfs_stdinit;
 vfs_uninit_t   vfs_stduninit;
-vfs_extattrctl_t       vfs_stdextattrctl;
+vfs_extattrctl_t vfs_stdextattrctl;
 
 int     journal_mountctl(struct vop_mountctl_args *ap);
 void   journal_remove_all_journals(struct mount *mp, int flags);
index 7874add..df39c62 100644 (file)
@@ -28,7 +28,7 @@
  * 
  *     @(#) src/sys/coda/coda_psdev.c,v 1.1.1.1 1998/08/29 21:14:52 rvb Exp $
  * $FreeBSD: src/sys/coda/coda_psdev.c,v 1.13 1999/09/29 15:03:46 marcel Exp $
- * $DragonFly: src/sys/vfs/coda/Attic/coda_psdev.c,v 1.10 2006/01/13 21:09:27 swildner Exp $
+ * $DragonFly: src/sys/vfs/coda/Attic/coda_psdev.c,v 1.11 2006/05/06 18:48:52 dillon Exp $
  * 
  */
 
@@ -214,7 +214,7 @@ vc_nb_close (dev_t dev, int flag, int mode, d_thread_t *td)
 #endif
     }
 
-    err = dounmount(mi->mi_vfsp, flag, td);
+    err = dounmount(mi->mi_vfsp, flag);
     if (err)
        myprintf(("Error %d unmounting vfs in vcclose(%d)\n", 
                   err, minor(dev)));
index 244baa6..d0cb710 100644 (file)
@@ -28,7 +28,7 @@
  * 
  *     @(#) src/sys/cfs/coda_vfsops.c,v 1.1.1.1 1998/08/29 21:14:52 rvb Exp $
  * $FreeBSD: src/sys/coda/coda_vfsops.c,v 1.24.2.1 2001/07/26 20:36:45 iedowse Exp $
- * $DragonFly: src/sys/vfs/coda/Attic/coda_vfsops.c,v 1.23 2006/05/06 02:43:13 dillon Exp $
+ * $DragonFly: src/sys/vfs/coda/Attic/coda_vfsops.c,v 1.24 2006/05/06 18:48:52 dillon Exp $
  * 
  */
 
@@ -113,7 +113,7 @@ coda_mount(struct mount *vfsp,      /* Allocated and initialized by mount(2) */
           char *path,          /* path covered: ignored by the fs-layer */
           caddr_t data,        /* Need to define a data type for this in
                                 * netbsd? */
-          struct thread *td)   /* The ever-famous proc pointer */
+          struct ucred *cred)  /* Mount credential */
 {
     struct vnode *dvp;
     struct cnode *cp;
@@ -238,7 +238,7 @@ coda_mount(struct mount *vfsp,      /* Allocated and initialized by mount(2) */
 }
 
 int
-coda_unmount(struct mount *vfsp, int mntflags, struct thread *td)
+coda_unmount(struct mount *vfsp, int mntflags)
 {
     struct coda_mntinfo *mi = vftomi(vfsp);
     int active, error = 0;
@@ -363,7 +363,7 @@ coda_root(struct mount *vfsp, struct vnode **vpp)
  * Get file system statistics.
  */
 int
-coda_nb_statfs(struct mount *vfsp, struct statfs *sbp, struct thread *td)
+coda_nb_statfs(struct mount *vfsp, struct statfs *sbp, struct ucred *cred)
 {
     ENTRY;
 /*  MARK_ENTRY(CODA_STATFS_STATS); */
index d40c27c..458b344 100644 (file)
@@ -28,7 +28,7 @@
  * 
  *     @(#) src/sys/cfs/coda_vfsops.h,v 1.1.1.1 1998/08/29 21:14:52 rvb Exp $ 
  * $FreeBSD: src/sys/coda/coda_vfsops.h,v 1.4 1999/08/28 00:40:57 peter Exp $
- * $DragonFly: src/sys/vfs/coda/Attic/coda_vfsops.h,v 1.6 2006/05/06 02:43:13 dillon Exp $
+ * $DragonFly: src/sys/vfs/coda/Attic/coda_vfsops.h,v 1.7 2006/05/06 18:48:52 dillon Exp $
  * 
  */
 
@@ -47,12 +47,12 @@ struct cfid {
 struct mount;
 
 int coda_vfsopstats_init(void);
-int coda_mount(struct mount *, char *, caddr_t, struct thread *);
+int coda_mount(struct mount *, char *, caddr_t, struct ucred *);
 int coda_start(struct mount *, int, struct thread *);
-int coda_unmount(struct mount *, int, struct thread *);
+int coda_unmount(struct mount *, int);
 int coda_root(struct mount *, struct vnode **);
 int coda_quotactl(struct mount *, int, uid_t, caddr_t, struct thread *);
-int coda_nb_statfs(struct mount *, struct statfs *, struct thread *);
+int coda_nb_statfs(struct mount *, struct statfs *, struct ucred *);
 int coda_sync(struct mount *, int);
 int coda_vget(struct mount *, ino_t, struct vnode **);
 int coda_fhtovp(struct mount *, struct fid *, struct mbuf *, struct vnode **,
index 93d8606..271b00b 100644 (file)
@@ -36,7 +36,7 @@
  *     @(#)fdesc.h     8.5 (Berkeley) 1/21/94
  *
  * $FreeBSD: src/sys/miscfs/fdesc/fdesc.h,v 1.8.2.1 2001/10/22 22:49:26 chris Exp $
- * $DragonFly: src/sys/vfs/fdesc/fdesc.h,v 1.5 2005/07/26 15:43:35 hmp Exp $
+ * $DragonFly: src/sys/vfs/fdesc/fdesc.h,v 1.6 2006/05/06 18:48:52 dillon Exp $
  */
 
 #ifdef _KERNEL
@@ -66,6 +66,5 @@ struct fdescnode {
 extern int fdesc_init (struct vfsconf *);
 extern int fdesc_uninit (struct vfsconf *);
 extern int fdesc_root (struct mount *, struct vnode **);
-extern int fdesc_allocvp (fdntype, int, struct mount *, struct vnode **,
-                             struct thread *);
+extern int fdesc_allocvp (fdntype, int, struct mount *, struct vnode **);
 #endif /* _KERNEL */
index f39d25d..47d9b74 100644 (file)
@@ -36,7 +36,7 @@
  *     @(#)fdesc_vfsops.c      8.4 (Berkeley) 1/21/94
  *
  * $FreeBSD: src/sys/miscfs/fdesc/fdesc_vfsops.c,v 1.22.2.3 2002/08/23 17:42:39 njl Exp $
- * $DragonFly: src/sys/vfs/fdesc/fdesc_vfsops.c,v 1.18 2006/05/05 21:15:09 dillon Exp $
+ * $DragonFly: src/sys/vfs/fdesc/fdesc_vfsops.c,v 1.19 2006/05/06 18:48:52 dillon Exp $
  */
 
 /*
@@ -62,17 +62,16 @@ extern struct vnodeopv_entry_desc fdesc_vnodeop_entries[];
 static MALLOC_DEFINE(M_FDESCMNT, "FDESC mount", "FDESC mount structure");
 
 static int     fdesc_mount (struct mount *mp, char *path, caddr_t data,
-                                struct thread *td);
-static int     fdesc_unmount (struct mount *mp, int mntflags,
-                                  struct thread *td);
+                               struct ucred *cred);
+static int     fdesc_unmount (struct mount *mp, int mntflags);
 static int     fdesc_statfs (struct mount *mp, struct statfs *sbp,
-                                 struct thread *td);
+                               struct ucred *cred);
   
 /*
  * Mount the per-process file descriptors (/dev/fd)
  */
 static int
-fdesc_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
+fdesc_mount(struct mount *mp, char *path, caddr_t data, struct ucred *cred)
 {
        int error = 0;
        struct fdescmount *fmp;
@@ -90,7 +89,7 @@ fdesc_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
        vfs_add_vnodeops(mp, &mp->mnt_vn_norm_ops, 
                         fdesc_vnodeop_entries, 0);
 
-       error = fdesc_allocvp(Froot, FD_ROOT, mp, &rvp, td);
+       error = fdesc_allocvp(Froot, FD_ROOT, mp, &rvp);
        if (error)
                return (error);
 
@@ -106,12 +105,12 @@ fdesc_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
 
        bzero(mp->mnt_stat.f_mntfromname, MNAMELEN);
        bcopy("fdesc", mp->mnt_stat.f_mntfromname, sizeof("fdesc"));
-       fdesc_statfs(mp, &mp->mnt_stat, td);
+       fdesc_statfs(mp, &mp->mnt_stat, cred);
        return (0);
 }
 
 static int
-fdesc_unmount(struct mount *mp, int mntflags, struct thread *td)
+fdesc_unmount(struct mount *mp, int mntflags)
 {
        int error;
        int flags = 0;
@@ -155,46 +154,16 @@ fdesc_root(struct mount *mp, struct vnode **vpp)
 }
 
 static int
-fdesc_statfs(struct mount *mp, struct statfs *sbp, struct thread *td)
+fdesc_statfs(struct mount *mp, struct statfs *sbp, struct ucred *cred)
 {
-       struct proc *p = td->td_proc;
-       struct filedesc *fdp;
-       int lim;
-       int i;
-       int last;
-       int freefd;
-
-       KKASSERT(p);
-
-       /*
-        * Compute number of free file descriptors.
-        * [ Strange results will ensue if the open file
-        * limit is ever reduced below the current number
-        * of open files... ]
-        */
-       lim = p->p_rlimit[RLIMIT_NOFILE].rlim_cur;
-       fdp = p->p_fd;
-       last = min(fdp->fd_nfiles, lim);
-       freefd = 0;
-       for (i = fdp->fd_freefile; i < last; i++)
-               if (fdp->fd_files[i].fp == NULL)
-                       freefd++;
-
-       /*
-        * Adjust for the fact that the fdesc array may not
-        * have been fully allocated yet.
-        */
-       if (fdp->fd_nfiles < lim)
-               freefd += (lim - fdp->fd_nfiles);
-
        sbp->f_flags = 0;
        sbp->f_bsize = DEV_BSIZE;
        sbp->f_iosize = DEV_BSIZE;
        sbp->f_blocks = 2;              /* 1K to keep df happy */
        sbp->f_bfree = 0;
        sbp->f_bavail = 0;
-       sbp->f_files = lim + 1;         /* Allow for "." */
-       sbp->f_ffree = freefd;          /* See comments above */
+       sbp->f_files = 0;               /* dummy up these fields */
+       sbp->f_ffree = 0;
        if (sbp != &mp->mnt_stat) {
                sbp->f_type = mp->mnt_vfc->vfc_typenum;
                bcopy(&mp->mnt_stat.f_fsid, &sbp->f_fsid, sizeof(sbp->f_fsid));
index f77d1f0..ab5c41d 100644 (file)
@@ -36,7 +36,7 @@
  *     @(#)fdesc_vnops.c       8.9 (Berkeley) 1/21/94
  *
  * $FreeBSD: src/sys/miscfs/fdesc/fdesc_vnops.c,v 1.47.2.1 2001/10/22 22:49:26 chris Exp $
- * $DragonFly: src/sys/vfs/fdesc/fdesc_vnops.c,v 1.27 2006/05/06 02:43:13 dillon Exp $
+ * $DragonFly: src/sys/vfs/fdesc/fdesc_vnops.c,v 1.28 2006/05/06 18:48:52 dillon Exp $
  */
 
 /*
@@ -103,8 +103,7 @@ fdesc_uninit(struct vfsconf *vfsp)
        return (0);
 }
 int
-fdesc_allocvp(fdntype ftype, int ix, struct mount *mp, struct vnode **vpp,
-             struct thread *td)
+fdesc_allocvp(fdntype ftype, int ix, struct mount *mp, struct vnode **vpp)
 {
        struct fdhashhead *fc;
        struct fdescnode *fd;
@@ -224,7 +223,7 @@ fdesc_lookup(struct vop_old_lookup_args *ap)
                goto bad;
        }
 
-       error = fdesc_allocvp(Fdesc, FD_DESC+fd, dvp->v_mount, &fvp, td);
+       error = fdesc_allocvp(Fdesc, FD_DESC+fd, dvp->v_mount, &fvp);
        if (error)
                goto bad;
        VTOFDESC(fvp)->fd_fd = fd;
index 5118049..06cd897 100644 (file)
@@ -35,7 +35,7 @@
  *
  *     @(#)ufs_quota.c 8.5 (Berkeley) 5/20/95
  * $FreeBSD: src/sys/ufs/ufs/ufs_quota.c,v 1.27.2.3 2002/01/15 10:33:32 phk Exp $
- * $DragonFly: src/sys/vfs/gnu/ext2fs/ext2_quota.c,v 1.4 2006/05/06 16:33:26 dillon Exp $
+ * $DragonFly: src/sys/vfs/gnu/ext2fs/ext2_quota.c,v 1.5 2006/05/06 18:48:52 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -373,19 +373,15 @@ struct scaninfo {
 static int ext2_quotaon_scan(struct mount *mp, struct vnode *vp, void *data);
 
 int
-ext2_quotaon(struct thread *td, struct mount *mp, int type, caddr_t fname)
+ext2_quotaon(struct ucred *cred, struct mount *mp, int type, caddr_t fname)
 {
        struct ext2mount *ump = VFSTOEXT2(mp);
        struct vnode *vp, **vpp;
        struct ext2_dquot *dq;
        int error;
        struct nlookupdata nd;
-       struct ucred *cred;
        struct scaninfo scaninfo;
 
-       KKASSERT(td->td_proc);
-       cred = td->td_proc->p_ucred;
-
        vpp = &ump->um_quotas[type];
        error = nlookup_init(&nd, fname, UIO_USERSPACE, NLC_FOLLOW|NLC_LOCKVP);
        if (error == 0)
@@ -642,7 +638,6 @@ int
 ext2_qsync(struct mount *mp)
 {
        struct ext2mount *ump = VFSTOEXT2(mp);
-       struct thread *td = curthread;          /* XXX */
        struct scaninfo scaninfo;
        int i;
 
index 9e20bc2..09e297e 100644 (file)
@@ -38,7 +38,7 @@
  *
  *     @(#)ffs_vfsops.c        8.8 (Berkeley) 4/18/94
  *     $FreeBSD: src/sys/gnu/ext2fs/ext2_vfsops.c,v 1.63.2.7 2002/07/01 00:18:51 iedowse Exp $
- *     $DragonFly: src/sys/vfs/gnu/ext2fs/ext2_vfsops.c,v 1.42 2006/05/06 16:33:26 dillon Exp $
+ *     $DragonFly: src/sys/vfs/gnu/ext2fs/ext2_vfsops.c,v 1.43 2006/05/06 18:48:52 dillon Exp $
  */
 
 #include "opt_quota.h"
@@ -77,14 +77,14 @@ extern struct vnodeopv_entry_desc ext2_fifoop_entries[];
 
 static int ext2_fhtovp (struct mount *, struct fid *, struct vnode **);
 static int ext2_flushfiles (struct mount *mp, int flags);
-static int ext2_mount (struct mount *, char *, caddr_t, struct thread *);
+static int ext2_mount (struct mount *, char *, caddr_t, struct ucred *);
 static int ext2_mountfs (struct vnode *, struct mount *);
 static int ext2_root(struct mount *, struct vnode **);
 static int ext2_reload (struct mount *mountp, struct ucred *cred);
 static int ext2_sbupdate (struct ext2mount *, int);
-static int ext2_statfs (struct mount *, struct statfs *, struct thread *);
+static int ext2_statfs (struct mount *, struct statfs *, struct ucred *);
 static int ext2_sync (struct mount *, int);
-static int ext2_unmount (struct mount *, int, struct thread *);
+static int ext2_unmount (struct mount *, int);
 static int ext2_vget (struct mount *, ino_t, struct vnode **);
 static int ext2_init(struct vfsconf *);
 static int ext2_vptofh (struct vnode *, struct fid *);
@@ -137,27 +137,23 @@ ext2_root(struct mount *mp, struct vnode **vpp)
  */
 int
 ext2_quotactl(struct mount *mp, int cmds, uid_t uid, caddr_t arg,
-            struct thread *td)
+            struct ucred *cred)
 {
 #ifndef QUOTA
        return (EOPNOTSUPP);
 #else
-       struct proc *p = td->td_proc;
        int cmd, type, error;
 
-       if (p == NULL)
-               return (EOPNOTSUPP);
-
        type = cmds & SUBCMDMASK;
        cmd = cmds >> SUBCMDSHIFT;
 
        if (uid == -1) {
                switch(type) {
                        case USRQUOTA:
-                               uid = p->p_ucred->cr_ruid;
+                               uid = cred->cr_ruid;
                                break;
                        case GRPQUOTA:
-                               uid = p->p_ucred->cr_rgid;
+                               uid = cred->cr_rgid;
                                break;
                        default:
                                return (EINVAL);
@@ -168,11 +164,11 @@ ext2_quotactl(struct mount *mp, int cmds, uid_t uid, caddr_t arg,
        case Q_SYNC:
                break;
        case Q_GETQUOTA:
-               if (uid == p->p_ucred->cr_ruid)
+               if (uid == cred->cr_ruid)
                        break;
                /* fall through */
        default:
-               if ((error = suser_cred(p->p_ucred, PRISON_ROOT)) != 0)
+               if ((error = suser_cred(cred, PRISON_ROOT)) != 0)
                        return (error);
        }
 
@@ -185,7 +181,7 @@ ext2_quotactl(struct mount *mp, int cmds, uid_t uid, caddr_t arg,
        switch (cmd) {
 
        case Q_QUOTAON:
-               error = ext2_quotaon(td, mp, type, arg);
+               error = ext2_quotaon(cred, mp, type, arg);
                break;
 
        case Q_QUOTAOFF:
@@ -244,8 +240,7 @@ ext2_init(struct vfsconf *vfsp)
  *     data:   this is actually a (struct ext2_args *)
  */
 static int
-ext2_mount(struct mount *mp, char *path, caddr_t data,
-          struct thread *td)
+ext2_mount(struct mount *mp, char *path, caddr_t data, struct ucred *cred)
 {
        struct vnode *devvp;
        struct ext2_args args;
@@ -254,13 +249,11 @@ ext2_mount(struct mount *mp, char *path, caddr_t data,
        size_t size;
        int error, flags;
        mode_t accessmode;
-       struct ucred *cred;
        struct nlookupdata nd;
 
        if ((error = copyin(data, (caddr_t)&args, sizeof (struct ext2_args))) != 0)
                return (error);
 
-       cred = td->td_proc->p_ucred;
        /*
         * If updating, check whether changing from read-only to
         * read/write; if there is no device name, that's all we do.
@@ -289,7 +282,7 @@ ext2_mount(struct mount *mp, char *path, caddr_t data,
                        VOP_UNLOCK(devvp, 0);
                }
                if (!error && (mp->mnt_flag & MNT_RELOAD))
-                       error = ext2_reload(mp, proc0.p_ucred);
+                       error = ext2_reload(mp, cred);
                if (error)
                        return (error);
                if (ext2_check_sb_compat(fs->s_es, devvp->v_rdev,
@@ -302,8 +295,8 @@ ext2_mount(struct mount *mp, char *path, caddr_t data,
                         */
                        if (cred->cr_uid != 0) {
                                vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY);
-                               if ((error = VOP_ACCESS(devvp, VREAD | VWRITE,
-                                   cred)) != 0) {
+                               error = VOP_ACCESS(devvp, VREAD | VWRITE, cred);
+                               if (error) {
                                        VOP_UNLOCK(devvp, 0);
                                        return (error);
                                }
@@ -391,7 +384,7 @@ ext2_mount(struct mount *mp, char *path, caddr_t data,
        bzero(fs->fs_fsmnt + size, sizeof(fs->fs_fsmnt) - size);
        copyinstr(args.fspec, mp->mnt_stat.f_mntfromname, MNAMELEN - 1, &size);
        bzero(mp->mnt_stat.f_mntfromname + size, MNAMELEN - size);
-       ext2_statfs(mp, &mp->mnt_stat, td);
+       ext2_statfs(mp, &mp->mnt_stat, cred);
        return (0);
 }
 
@@ -846,7 +839,7 @@ out:
  * unmount system call
  */
 static int
-ext2_unmount(struct mount *mp, int mntflags, struct thread *td)
+ext2_unmount(struct mount *mp, int mntflags)
 {
        struct ext2mount *ump;
        struct ext2_sb_info *fs;
@@ -931,7 +924,7 @@ ext2_flushfiles(struct mount *mp, int flags)
  * taken from ext2/super.c ext2_statfs
  */
 static int
-ext2_statfs(struct mount *mp, struct statfs *sbp, struct thread *td)
+ext2_statfs(struct mount *mp, struct statfs *sbp, struct ucred *cred)
 {
         unsigned long overhead;
        struct ext2mount *ump;
index 540618b..bbe3de8 100644 (file)
@@ -35,7 +35,7 @@
  *
  *     @(#)quota.h     8.3 (Berkeley) 8/19/94
  * $FreeBSD: src/sys/ufs/ufs/quota.h,v 1.15.2.1 2003/02/27 12:04:13 das Exp $
- * $DragonFly: src/sys/vfs/gnu/ext2fs/quota.h,v 1.2 2006/05/06 16:33:26 dillon Exp $
+ * $DragonFly: src/sys/vfs/gnu/ext2fs/quota.h,v 1.3 2006/05/06 18:48:52 dillon Exp $
  */
 
 #ifndef _VFS_GNU_EXT2FS_QUOTA_H_
@@ -187,10 +187,10 @@ int       ext2_getinoquota(struct inode *);
 int    ext2_getquota(struct mount *, u_long, int, caddr_t);
 int    ext2_qsync(struct mount *mp);
 int    ext2_quotaoff(struct mount *, int);
-int    ext2_quotaon(struct thread *, struct mount *, int, caddr_t);
+int    ext2_quotaon(struct ucred *, struct mount *, int, caddr_t);
 int    ext2_setquota(struct mount *, u_long, int, caddr_t);
 int    ext2_setuse(struct mount *, u_long, int, caddr_t);
-int    ext2_quotactl(struct mount *, int, uid_t, caddr_t, struct thread *);
+int    ext2_quotactl(struct mount *, int, uid_t, caddr_t, struct ucred *);
 
 #else /* !_KERNEL */
 
index e3210da..3a148dd 100644 (file)
@@ -24,7 +24,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/fs/hpfs/hpfs.h,v 1.1 1999/12/09 19:09:58 semenu Exp $
- * $DragonFly: src/sys/vfs/hpfs/hpfs.h,v 1.19 2006/05/06 02:43:13 dillon Exp $
+ * $DragonFly: src/sys/vfs/hpfs/hpfs.h,v 1.20 2006/05/06 18:48:53 dillon Exp $
  */
 
 /*#define HPFS_DEBUG 10*/
@@ -392,18 +392,18 @@ MALLOC_DECLARE(M_HPFSNO);
 typedef int (vop_t) (void *);
 #define HASHINIT(a, b, c, d)   hashinit((a), (b), (c), (d))
 #define bqrelse(bp)            brelse(bp)
-#define VOP__LOCK(a, b, c)     VOP_LOCK((a), (b) ? LK_EXCLUSIVE : LK_SHARED)
-#define VOP__UNLOCK(a, b, c)   VOP_UNLOCK((a), 0)
+#define VOP__LOCK(a, b)                VOP_LOCK((a), (b) ? LK_EXCLUSIVE : LK_SHARED)
+#define VOP__UNLOCK(a, b)      VOP_UNLOCK((a), 0)
 #define VGET(a, b, c)          vget((a), LK_EXCLUSIVE)
-#define VN_LOCK(a, b, c)       vn_lock((a), LK_EXCLUSIVE)
-#define        LOCKMGR(a, b, d)        lockmgr((a), (b), NULL)
+#define VN_LOCK(a, b)          vn_lock((a), LK_EXCLUSIVE)
+#define        LOCKMGR(a, b)           lockmgr((a), (b), NULL)
 #else  /* defined(__DragonFly__) */
 #define HASHINIT(a, b, c, d)   hashinit((a), (b), (d))
-#define VOP__LOCK(a, b, c)     VOP_LOCK((a), (b))
-#define VOP__UNLOCK(a, b, c)   VOP_UNLOCK((a), (b))
+#define VOP__LOCK(a, b)                VOP_LOCK((a), (b))
+#define VOP__UNLOCK(a, b)      VOP_UNLOCK((a), (b))
 #define VGET(a, b, c)          vget((a), (b))
-#define VN_LOCK(a, b, c)       vn_lock((a), (b))
-#define        LOCKMGR(a, b, d)        lockmgr((a), (b))
+#define VN_LOCK(a, b)          vn_lock((a), (b))
+#define        LOCKMGR(a, b)           lockmgr((a), (b))
 #endif
 
 struct vfsconf;
index 97ee37e..0df337d 100644 (file)
@@ -24,7 +24,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/fs/hpfs/hpfs_vfsops.c,v 1.3.2.2 2001/12/25 01:44:45 dillon Exp $
- * $DragonFly: src/sys/vfs/hpfs/hpfs_vfsops.c,v 1.34 2006/05/06 02:43:13 dillon Exp $
+ * $DragonFly: src/sys/vfs/hpfs/hpfs_vfsops.c,v 1.35 2006/05/06 18:48:53 dillon Exp $
  */
 
 
@@ -66,20 +66,19 @@ MALLOC_DEFINE(M_HPFSMNT, "HPFS mount", "HPFS mount structure");
 MALLOC_DEFINE(M_HPFSNO, "HPFS node", "HPFS node structure");
 
 static int     hpfs_root (struct mount *, struct vnode **);
-static int     hpfs_statfs (struct mount *, struct statfs *,
-                                struct thread *);
-static int     hpfs_unmount (struct mount *, int, struct thread *);
+static int     hpfs_statfs (struct mount *, struct statfs *, struct ucred *);
+static int     hpfs_unmount (struct mount *, int);
 static int     hpfs_vget (struct mount *mp, ino_t ino,
                               struct vnode **vpp);
 static int     hpfs_mountfs (struct vnode *, struct mount *, 
-                                 struct hpfs_args *, struct thread *);
+                                 struct hpfs_args *);
 static int     hpfs_vptofh (struct vnode *, struct fid *);
 static int     hpfs_fhtovp (struct mount *, struct fid *,
                                 struct vnode **);
 
 
 struct sockaddr;
-static int     hpfs_mount (struct mount *, char *, caddr_t, struct thread *);
+static int     hpfs_mount (struct mount *, char *, caddr_t, struct ucred *);
 static int     hpfs_init (struct vfsconf *);
 static int     hpfs_checkexp (struct mount *, struct sockaddr *,
                                   int *, struct ucred **);
@@ -115,9 +114,7 @@ hpfs_init(struct vfsconf *vcp)
 }
 
 static int
-hpfs_mount(struct mount *mp,
-          char *path, caddr_t data,
-          struct thread *td)
+hpfs_mount(struct mount *mp, char *path, caddr_t data, struct ucred *cred)
 {
        u_int           size;
        int             error;
@@ -193,7 +190,7 @@ hpfs_mount(struct mount *mp,
                        &size);                         /* real size*/
        bzero( mp->mnt_stat.f_mntfromname + size, MNAMELEN - size);
 
-       error = hpfs_mountfs(devvp, mp, &args, td);
+       error = hpfs_mountfs(devvp, mp, &args);
        if (error)
                goto error_2;
 
@@ -203,7 +200,7 @@ hpfs_mount(struct mount *mp,
         *
         * This code is common to root and non-root mounts
         */
-       VFS_STATFS(mp, &mp->mnt_stat, td);
+       VFS_STATFS(mp, &mp->mnt_stat, cred);
        return (error);
 
 error_2:       /* error with devvp held*/
@@ -221,8 +218,7 @@ success:
  * Common code for mount and mountroot
  */
 int
-hpfs_mountfs(struct vnode *devvp, struct mount *mp, struct hpfs_args *argsp,
-            struct thread *td)
+hpfs_mountfs(struct vnode *devvp, struct mount *mp, struct hpfs_args *argsp)
 {
        int error, ncount, ronly;
        struct sublock *sup;
@@ -248,16 +244,16 @@ hpfs_mountfs(struct vnode *devvp, struct mount *mp, struct hpfs_args *argsp,
        if (ncount > 0)
                return (EBUSY);
 
-       VN_LOCK(devvp, LK_EXCLUSIVE | LK_RETRY, td);
+       VN_LOCK(devvp, LK_EXCLUSIVE | LK_RETRY);
        error = vinvalbuf(devvp, V_SAVE, 0, 0);
-       VOP__UNLOCK(devvp, 0, td);
+       VOP__UNLOCK(devvp, 0);
        if (error)
                return (error);
 
        ronly = (mp->mnt_flag & MNT_RDONLY) != 0;
-       VN_LOCK(devvp, LK_EXCLUSIVE | LK_RETRY, td);
+       VN_LOCK(devvp, LK_EXCLUSIVE | LK_RETRY);
        error = VOP_OPEN(devvp, ronly ? FREAD : FREAD|FWRITE, FSCRED, NULL);
-       VOP__UNLOCK(devvp, 0, td);
+       VOP__UNLOCK(devvp, 0);
        if (error)
                return (error);
        dev = devvp->v_rdev;
@@ -344,7 +340,7 @@ failed:
 
 
 static int
-hpfs_unmount(struct mount *mp, int mntflags, struct thread *td)
+hpfs_unmount(struct mount *mp, int mntflags)
 {
        int error, flags, ronly;
        struct hpfsmount *hpmp = VFSTOHPFS(mp);
@@ -399,7 +395,7 @@ hpfs_root(struct mount *mp, struct vnode **vpp)
 }
 
 static int
-hpfs_statfs(struct mount *mp, struct statfs *sbp, struct thread *td)
+hpfs_statfs(struct mount *mp, struct statfs *sbp, struct ucred *cred)
 {
        struct hpfsmount *hpmp = VFSTOHPFS(mp);
 
@@ -524,11 +520,11 @@ hpfs_vget(struct mount *mp, ino_t ino, struct vnode **vpp)
                        vx_put(vp);
                        return (0);
                }
-       } while(LOCKMGR(&hpfs_hphash_lock,LK_EXCLUSIVE|LK_SLEEPFAIL,NULL));
+       } while (LOCKMGR(&hpfs_hphash_lock, LK_EXCLUSIVE | LK_SLEEPFAIL));
 
        hpfs_hphashins(hp);
 
-       LOCKMGR(&hpfs_hphash_lock, LK_RELEASE, NULL);
+       LOCKMGR(&hpfs_hphash_lock, LK_RELEASE);
 
        error = bread(hpmp->hpm_devvp, dbtodoff(ino), FNODESIZE, &bp);
        if (error) {
index 906d00c..399233f 100644 (file)
@@ -24,7 +24,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/fs/hpfs/hpfs_vnops.c,v 1.2.2.2 2002/01/15 18:35:09 semenu Exp $
- * $DragonFly: src/sys/vfs/hpfs/hpfs_vnops.c,v 1.34 2006/05/06 02:43:13 dillon Exp $
+ * $DragonFly: src/sys/vfs/hpfs/hpfs_vnops.c,v 1.35 2006/05/06 18:48:53 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -1064,16 +1064,16 @@ hpfs_lookup(struct vop_old_lookup_args *ap)
                dprintf(("hpfs_lookup(0x%x,...): .. faked (0x%x)\n",
                        dhp->h_no, dhp->h_fn.fn_parent));
 
-               VOP__UNLOCK(dvp,0,cnp->cn_td);
+               VOP__UNLOCK(dvp, 0);
 
                error = VFS_VGET(hpmp->hpm_mp,
                                 dhp->h_fn.fn_parent, ap->a_vpp); 
                if (error) {
-                       VOP__LOCK(dvp, 0, cnp->cn_td);
+                       VOP__LOCK(dvp, 0);
                        return(error);
                }
 
-               if (lockparent && (error = VOP__LOCK(dvp, 0, cnp->cn_td))) {
+               if (lockparent && (error = VOP__LOCK(dvp, 0))) {
                        vput( *(ap->a_vpp) );
                        return (error);
                }
@@ -1089,7 +1089,7 @@ hpfs_lookup(struct vop_old_lookup_args *ap)
                        if (error == ENOENT && 
                            (nameiop == NAMEI_CREATE || nameiop == NAMEI_RENAME)) {
                                if(!lockparent)
-                                       VOP__UNLOCK(dvp, 0, cnp->cn_td);
+                                       VOP__UNLOCK(dvp, 0);
                                return (EJUSTRETURN);
                        }
 
@@ -1134,7 +1134,7 @@ hpfs_lookup(struct vop_old_lookup_args *ap)
                brelse(bp);
 
                if(!lockparent)
-                       VOP__UNLOCK(dvp, 0, cnp->cn_td);
+                       VOP__UNLOCK(dvp, 0);
        }
        return (error);
 }
index f695f20..0829561 100644 (file)
@@ -37,7 +37,7 @@
  *
  *     @(#)cd9660_vfsops.c     8.18 (Berkeley) 5/22/95
  * $FreeBSD: src/sys/isofs/cd9660/cd9660_vfsops.c,v 1.74.2.7 2002/04/08 09:39:29 bde Exp $
- * $DragonFly: src/sys/vfs/isofs/cd9660/cd9660_vfsops.c,v 1.35 2006/05/06 02:43:13 dillon Exp $
+ * $DragonFly: src/sys/vfs/isofs/cd9660/cd9660_vfsops.c,v 1.36 2006/05/06 18:48:53 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -69,10 +69,10 @@ extern struct vnodeopv_entry_desc cd9660_fifoop_entries[];
 MALLOC_DEFINE(M_ISOFSMNT, "ISOFS mount", "ISOFS mount structure");
 MALLOC_DEFINE(M_ISOFSNODE, "ISOFS node", "ISOFS vnode private part");
 
-static int cd9660_mount (struct mount *, char *, caddr_t, struct thread *);
-static int cd9660_unmount (struct mount *, int, struct thread *);
+static int cd9660_mount (struct mount *, char *, caddr_t, struct ucred *);
+static int cd9660_unmount (struct mount *, int);
 static int cd9660_root (struct mount *, struct vnode **);
-static int cd9660_statfs (struct mount *, struct statfs *, struct thread *);
+static int cd9660_statfs (struct mount *, struct statfs *, struct ucred *);
 static int cd9660_vget (struct mount *, ino_t, struct vnode **);
 static int cd9660_fhtovp (struct mount *, struct fid *, struct vnode **);
 static int cd9660_checkexp (struct mount *, struct sockaddr *,
@@ -100,9 +100,9 @@ MODULE_VERSION(cd9660, 1);
  * Called by vfs_mountroot when iso is going to be mounted as root.
  */
 
-static int iso_get_ssector (dev_t dev, struct thread *td);
+static int iso_get_ssector (dev_t dev);
 static int iso_mountfs (struct vnode *devvp, struct mount *mp,
-                           struct thread *td, struct iso_args *argp);
+                           struct iso_args *argp);
 
 /*
  * Try to find the start of the last data track on this CD-ROM.  This
@@ -110,10 +110,11 @@ static int iso_mountfs (struct vnode *devvp, struct mount *mp,
  * and return 0 if we fail, this is always a safe bet.
  */
 static int
-iso_get_ssector(dev_t dev, struct thread *td)
+iso_get_ssector(dev_t dev)
 {
        struct ioc_toc_header h;
        struct ioc_read_toc_single_entry t;
+       thread_t td = curthread;
        int i;
 
        if (dev_dioctl(dev, CDIOREADTOCHEADER, (caddr_t)&h, FREAD, td) != 0)
@@ -136,10 +137,8 @@ iso_get_ssector(dev_t dev, struct thread *td)
        return ntohl(t.entry.addr.lba);
 }
 
-static int iso_mountroot (struct mount *mp, struct thread *td);
-
 static int
-iso_mountroot(struct mount *mp, struct thread *td)
+iso_mountroot(struct mount *mp)
 {
        struct iso_args args;
        struct vnode *rootvp;
@@ -157,17 +156,17 @@ iso_mountroot(struct mount *mp, struct thread *td)
        if (error)
                return (error);
 
-       args.ssector = iso_get_ssector(rootdev, td);
+       args.ssector = iso_get_ssector(rootdev);
 
        VOP_CLOSE(rootvp, FREAD);
 
        if (bootverbose)
                printf("iso_mountroot(): using session at block %d\n",
                       args.ssector);
-       if ((error = iso_mountfs(rootvp, mp, td, &args)) != 0)
+       if ((error = iso_mountfs(rootvp, mp, &args)) != 0)
                return (error);
 
-       cd9660_statfs(mp, &mp->mnt_stat, td);
+       cd9660_statfs(mp, &mp->mnt_stat, proc0.p_ucred);
        return (0);
 }
 
@@ -177,7 +176,7 @@ iso_mountroot(struct mount *mp, struct thread *td)
  * mount system call
  */
 static int
-cd9660_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
+cd9660_mount(struct mount *mp, char *path, caddr_t data, struct ucred *cred)
 {
        struct vnode *devvp;
        struct iso_args args;
@@ -188,7 +187,7 @@ cd9660_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
        struct nlookupdata nd;
 
        if ((mp->mnt_flag & (MNT_ROOTFS|MNT_UPDATE)) == MNT_ROOTFS) {
-               return (iso_mountroot(mp, td));
+               return (iso_mountroot(mp));
        }
        if ((error = copyin(data, (caddr_t)&args, sizeof (struct iso_args))))
                return (error);
@@ -196,8 +195,6 @@ cd9660_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
        if ((mp->mnt_flag & MNT_RDONLY) == 0)
                return (EROFS);
 
-       KKASSERT(td->td_proc);
-
        /*
         * If updating, check whether changing from read-only to
         * read/write; if there is no device name, that's all we do.
@@ -232,9 +229,9 @@ cd9660_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
         */
        accessmode = VREAD;
        vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY);
-       error = VOP_ACCESS(devvp, accessmode, td->td_proc->p_ucred);
+       error = VOP_ACCESS(devvp, accessmode, cred);
        if (error) 
-               error = suser(td);
+               error = suser_cred(cred, 0);
        if (error) {
                vput(devvp);
                return (error);
@@ -242,7 +239,7 @@ cd9660_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
        VOP_UNLOCK(devvp, 0);
 
        if ((mp->mnt_flag & MNT_UPDATE) == 0) {
-               error = iso_mountfs(devvp, mp, td, &args);
+               error = iso_mountfs(devvp, mp, &args);
        } else {
                if (devvp != imp->im_devvp)
                        error = EINVAL; /* needs translation */
@@ -257,7 +254,7 @@ cd9660_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
        copyinstr(args.fspec, mp->mnt_stat.f_mntfromname, MNAMELEN - 1,
            &size);
        bzero(mp->mnt_stat.f_mntfromname + size, MNAMELEN - size);
-       cd9660_statfs(mp, &mp->mnt_stat, td);
+       cd9660_statfs(mp, &mp->mnt_stat, cred);
        return 0;
 }
 
@@ -265,8 +262,7 @@ cd9660_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
  * Common code for mount and mountroot
  */
 static int
-iso_mountfs(struct vnode *devvp, struct mount *mp, struct thread *td,
-           struct iso_args *argp)
+iso_mountfs(struct vnode *devvp, struct mount *mp, struct iso_args *argp)
 {
        struct iso_mnt *isomp = NULL;
        struct buf *bp = NULL;
@@ -536,7 +532,7 @@ out:
  * unmount system call
  */
 static int
-cd9660_unmount(struct mount *mp, int mntflags, struct thread *td)
+cd9660_unmount(struct mount *mp, int mntflags)
 {
        struct iso_mnt *isomp;
        int error, flags = 0;
@@ -585,7 +581,7 @@ cd9660_root(struct mount *mp, struct vnode **vpp)
  * Get file system statistics.
  */
 int
-cd9660_statfs(struct mount *mp, struct statfs *sbp, struct thread *td)
+cd9660_statfs(struct mount *mp, struct statfs *sbp, struct ucred *cred)
 {
        struct iso_mnt *isomp;
 
@@ -694,7 +690,6 @@ int
 cd9660_vget_internal(struct mount *mp, ino_t ino, struct vnode **vpp,
                     int relocated, struct iso_directory_record *isodir)
 {
-       /*struct thread *td = curthread;*/
        struct iso_mnt *imp;
        struct iso_node *ip;
        struct buf *bp;
index edb3c15..eea357f 100644 (file)
@@ -32,7 +32,7 @@
  *
  *     @(#)mfs_vfsops.c        8.11 (Berkeley) 6/19/95
  * $FreeBSD: src/sys/ufs/mfs/mfs_vfsops.c,v 1.81.2.3 2001/07/04 17:35:21 tegge Exp $
- * $DragonFly: src/sys/vfs/mfs/mfs_vfsops.c,v 1.30 2006/05/06 16:20:18 dillon Exp $
+ * $DragonFly: src/sys/vfs/mfs/mfs_vfsops.c,v 1.31 2006/05/06 18:48:53 dillon Exp $
  */
 
 
@@ -76,10 +76,10 @@ MALLOC_DEFINE(M_MFSNODE, "MFS node", "MFS vnode private part");
 extern struct vop_ops *mfs_vnode_vops;
 
 static int     mfs_mount (struct mount *mp,
-                       char *path, caddr_t data, struct thread *td);
-static int     mfs_start (struct mount *mp, int flags, struct thread *td);
-static int     mfs_statfs (struct mount *mp, struct statfs *sbp, 
-                       struct thread *td);
+                       char *path, caddr_t data, struct ucred *td);
+static int     mfs_start (struct mount *mp, int flags);
+static int     mfs_statfs (struct mount *mp, struct statfs *sbp,
+                       struct ucred *cred); 
 static int     mfs_init (struct vfsconf *);
 
 d_open_t       mfsopen;
@@ -233,7 +233,7 @@ done:
  */
 /* ARGSUSED */
 static int
-mfs_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
+mfs_mount(struct mount *mp, char *path, caddr_t data, struct ucred *cred)
 {
        struct vnode *devvp;
        struct mfs_args args;
@@ -335,7 +335,7 @@ mfs_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
        mfsp->mfs_size = args.size;
        mfsp->mfs_vnode = devvp;
        mfsp->mfs_dev = reference_dev(dev);
-       mfsp->mfs_td = td;
+       mfsp->mfs_td = curthread;
        mfsp->mfs_active = 1;
        bioq_init(&mfsp->bio_queue);
 
@@ -373,7 +373,7 @@ mfs_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
         *
         * This code is common to root and non-root mounts
         */
-       VFS_STATFS(mp, &mp->mnt_stat, td);
+       VFS_STATFS(mp, &mp->mnt_stat, cred);
 
        goto success;
 
@@ -398,13 +398,14 @@ success:
  */
 /* ARGSUSED */
 static int
-mfs_start(struct mount *mp, int flags, struct thread *td)
+mfs_start(struct mount *mp, int flags)
 {
        struct vnode *vp = VFSTOUFS(mp)->um_devvp;
        struct mfsnode *mfsp = VTOMFS(vp);
        struct bio *bio;
        struct buf *bp;
        int gotsig = 0, sig;
+       thread_t td = curthread;
 
        /*
         * We must prevent the system from trying to swap
@@ -416,6 +417,8 @@ mfs_start(struct mount *mp, int flags, struct thread *td)
        KKASSERT(curproc);
        PHOLD(curproc);
 
+       mfsp->mfs_td = td;
+
        while (mfsp->mfs_active) {
                crit_enter();
 
@@ -443,7 +446,7 @@ mfs_start(struct mount *mp, int flags, struct thread *td)
                 */
                if (gotsig) {
                        gotsig = 0;
-                       if (dounmount(mp, 0, td) != 0) {
+                       if (dounmount(mp, 0) != 0) {
                                KKASSERT(td->td_proc);
                                sig = CURSIG(td->td_proc);
                                if (sig)
@@ -463,11 +466,11 @@ mfs_start(struct mount *mp, int flags, struct thread *td)
  * Get file system statistics.
  */
 static int
-mfs_statfs(struct mount *mp, struct statfs *sbp, struct thread *td)
+mfs_statfs(struct mount *mp, struct statfs *sbp, struct ucred *cred)
 {
        int error;
 
-       error = ffs_statfs(mp, sbp, td);
+       error = ffs_statfs(mp, sbp, cred);
        sbp->f_type = mp->mnt_vfc->vfc_typenum;
        return (error);
 }
index 003da51..3131190 100644 (file)
@@ -1,5 +1,5 @@
 /* $FreeBSD: /usr/local/www/cvsroot/FreeBSD/src/sys/msdosfs/Attic/msdosfs_vfsops.c,v 1.60.2.8 2004/03/02 09:43:04 tjr Exp $ */
-/* $DragonFly: src/sys/vfs/msdosfs/msdosfs_vfsops.c,v 1.33 2006/05/06 02:43:14 dillon Exp $ */
+/* $DragonFly: src/sys/vfs/msdosfs/msdosfs_vfsops.c,v 1.34 2006/05/06 18:48:53 dillon Exp $ */
 /*     $NetBSD: msdosfs_vfsops.c,v 1.51 1997/11/17 15:36:58 ws Exp $   */
 
 /*-
@@ -90,18 +90,18 @@ static MALLOC_DEFINE(M_MSDOSFSFAT, "MSDOSFS FAT", "MSDOSFS file allocation table
 
 static int     update_mp (struct mount *mp, struct msdosfs_args *argp);
 static int     mountmsdosfs (struct vnode *devvp, struct mount *mp,
-                                 struct thread *td, struct msdosfs_args *argp);
+                                 struct msdosfs_args *argp);
 static int     msdosfs_fhtovp (struct mount *, struct fid *,
                                    struct vnode **);
 static int     msdosfs_checkexp (struct mount *, struct sockaddr *, 
                                    int *, struct ucred **);
 static int     msdosfs_mount (struct mount *, char *, caddr_t,
-                                  struct thread *);
+                                  struct ucred *);
 static int     msdosfs_root (struct mount *, struct vnode **);
 static int     msdosfs_statfs (struct mount *, struct statfs *,
-                                   struct thread *);
+                               struct ucred *);
 static int     msdosfs_sync (struct mount *, int);
-static int     msdosfs_unmount (struct mount *, int, struct thread *);
+static int     msdosfs_unmount (struct mount *, int);
 static int     msdosfs_vptofh (struct vnode *, struct fid *);
 
 static int
@@ -161,7 +161,7 @@ update_mp(struct mount *mp, struct msdosfs_args *argp)
  * special file to treat as a filesystem.
  */
 static int
-msdosfs_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
+msdosfs_mount(struct mount *mp, char *path, caddr_t data, struct ucred *cred)
 {
        struct vnode *devvp;      /* vnode for blk device to mount */
        struct msdosfs_args args; /* will hold data from mount request */
@@ -170,11 +170,8 @@ msdosfs_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
        size_t size;
        int error, flags;
        mode_t accessmode;
-       struct proc *p = td->td_proc;
        struct nlookupdata nd;
 
-       KKASSERT(p);
-
        error = copyin(data, (caddr_t)&args, sizeof(struct msdosfs_args));
        if (error)
                return (error);
@@ -203,11 +200,10 @@ msdosfs_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
                         * If upgrade to read-write by non-root, then verify
                         * that user has necessary permissions on the device.
                         */
-                       if (p->p_ucred->cr_uid != 0) {
+                       if (cred->cr_uid != 0) {
                                devvp = pmp->pm_devvp;
                                vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY);
-                               error = VOP_ACCESS(devvp, VREAD | VWRITE,
-                                                  p->p_ucred);
+                               error = VOP_ACCESS(devvp, VREAD | VWRITE, cred);
                                if (error) {
                                        VOP_UNLOCK(devvp, 0);
                                        return (error);
@@ -253,12 +249,12 @@ msdosfs_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
         * If mount by non-root, then verify that user has necessary
         * permissions on the device.
         */
-       if (p->p_ucred->cr_uid != 0) {
+       if (cred->cr_uid != 0) {
                accessmode = VREAD;
                if ((mp->mnt_flag & MNT_RDONLY) == 0)
                        accessmode |= VWRITE;
                vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY);
-               error = VOP_ACCESS(devvp, accessmode, p->p_ucred);
+               error = VOP_ACCESS(devvp, accessmode, cred);
                if (error) {
                        vput(devvp);
                        return (error);
@@ -266,7 +262,7 @@ msdosfs_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
                VOP_UNLOCK(devvp, 0);
        }
        if ((mp->mnt_flag & MNT_UPDATE) == 0) {
-               error = mountmsdosfs(devvp, mp, td, &args);
+               error = mountmsdosfs(devvp, mp, &args);
 #ifdef MSDOSFS_DEBUG           /* only needed for the printf below */
                pmp = VFSTOMSDOSFS(mp);
 #endif
@@ -283,13 +279,13 @@ msdosfs_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
 
        error = update_mp(mp, &args);
        if (error) {
-               msdosfs_unmount(mp, MNT_FORCE, td);
+               msdosfs_unmount(mp, MNT_FORCE);
                return error;
        }
 
        copyinstr(args.fspec, mp->mnt_stat.f_mntfromname, MNAMELEN - 1, &size);
        bzero(mp->mnt_stat.f_mntfromname + size, MNAMELEN - size);
-       msdosfs_statfs(mp, &mp->mnt_stat, td);
+       msdosfs_statfs(mp, &mp->mnt_stat, cred);
 #ifdef MSDOSFS_DEBUG
        printf("msdosfs_mount(): mp %p, pmp %p, inusemap %p\n", mp, pmp, pmp->pm_inusemap);
 #endif
@@ -297,8 +293,7 @@ msdosfs_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
 }
 
 static int
-mountmsdosfs(struct vnode *devvp, struct mount *mp, struct thread *td,
-            struct msdosfs_args *argp)
+mountmsdosfs(struct vnode *devvp, struct mount *mp, struct msdosfs_args *argp)
 {
        struct msdosfsmount *pmp;
        struct buf *bp;
@@ -683,7 +678,7 @@ error_exit:
  * Unmount the filesystem described by mp.
  */
 static int
-msdosfs_unmount(struct mount *mp, int mntflags, struct thread *td)
+msdosfs_unmount(struct mount *mp, int mntflags)
 {
        struct msdosfsmount *pmp;
        int error, flags;
@@ -746,7 +741,7 @@ msdosfs_root(struct mount *mp, struct vnode **vpp)
 }
 
 static int
-msdosfs_statfs(struct mount *mp, struct statfs *sbp, struct thread *td)
+msdosfs_statfs(struct mount *mp, struct statfs *sbp, struct ucred *cred)
 {
        struct msdosfsmount *pmp;
 
index 91b567b..76316ab 100644 (file)
@@ -35,7 +35,7 @@
  *
  *     @(#)nfs_nqlease.c       8.9 (Berkeley) 5/20/95
  * $FreeBSD: src/sys/nfs/nfs_nqlease.c,v 1.50 2000/02/13 03:32:05 peter Exp $
- * $DragonFly: src/sys/vfs/nfs/nfs_kerb.c,v 1.1 2006/03/27 16:18:39 dillon Exp $
+ * $DragonFly: src/sys/vfs/nfs/nfs_kerb.c,v 1.2 2006/05/06 18:48:53 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -132,7 +132,7 @@ nfs_clientd(struct nfsmount *nmp, struct ucred *cred, struct nfsd_cargs *ncd,
                    error = tsleep((caddr_t)&nmp->nm_authstr, PCATCH,
                        "nqnfstimr", hz / 3);
                    if (error == EINTR || error == ERESTART)
-                       (void) dounmount(nmp->nm_mountp, 0, td);
+                       (void) dounmount(nmp->nm_mountp, 0);
            }
        }
 
index e047daf..4be1b47 100644 (file)
@@ -35,7 +35,7 @@
  *
  *     @(#)nfs_serv.c  8.8 (Berkeley) 7/31/95
  * $FreeBSD: src/sys/nfs/nfs_serv.c,v 1.93.2.6 2002/12/29 18:19:53 dillon Exp $
- * $DragonFly: src/sys/vfs/nfs/nfs_serv.c,v 1.35 2006/05/06 02:43:14 dillon Exp $
+ * $DragonFly: src/sys/vfs/nfs/nfs_serv.c,v 1.36 2006/05/06 18:48:53 dillon Exp $
  */
 
 /*
@@ -3557,7 +3557,7 @@ nfsrv_statfs(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
                goto nfsmout;
        }
        sf = &statfs;
-       error = VFS_STATFS(vp->v_mount, sf, td);
+       error = VFS_STATFS(vp->v_mount, sf, proc0.p_ucred);
        getret = VOP_GETATTR(vp, &at);
        vput(vp);
        vp = NULL;
@@ -3637,7 +3637,7 @@ nfsrv_fsinfo(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
        }
 
        /* XXX Try to make a guess on the max file size. */
-       VFS_STATFS(vp->v_mount, &sb, td);
+       VFS_STATFS(vp->v_mount, &sb, proc0.p_ucred);
        maxfsize = (u_quad_t)0x80000000 * sb.f_bsize - 1;
 
        getret = VOP_GETATTR(vp, &at);
index 924f1eb..ad9abe0 100644 (file)
@@ -35,7 +35,7 @@
  *
  *     @(#)nfs_vfsops.c        8.12 (Berkeley) 5/20/95
  * $FreeBSD: src/sys/nfs/nfs_vfsops.c,v 1.91.2.7 2003/01/27 20:04:08 dillon Exp $
- * $DragonFly: src/sys/vfs/nfs/nfs_vfsops.c,v 1.41 2006/05/06 02:43:14 dillon Exp $
+ * $DragonFly: src/sys/vfs/nfs/nfs_vfsops.c,v 1.42 2006/05/06 18:48:53 dillon Exp $
  */
 
 #include "opt_bootp.h"
@@ -117,12 +117,11 @@ static void       nfs_decode_args (struct nfsmount *nmp,
 static int     mountnfs (struct nfs_args *,struct mount *,
                        struct sockaddr *,char *,char *,struct vnode **);
 static int     nfs_mount ( struct mount *mp, char *path, caddr_t data,
-                       struct thread *td);
-static int     nfs_unmount ( struct mount *mp, int mntflags,
-                       struct thread *td);
+                       struct ucred *cred);
+static int     nfs_unmount ( struct mount *mp, int mntflags);
 static int     nfs_root ( struct mount *mp, struct vnode **vpp);
 static int     nfs_statfs ( struct mount *mp, struct statfs *sbp,
-                       struct thread *td);
+                       struct ucred *cred);
 static int     nfs_sync ( struct mount *mp, int waitfor);
 
 /*
@@ -293,7 +292,7 @@ nfs_convert_diskless()
  * nfs statfs call
  */
 int
-nfs_statfs(struct mount *mp, struct statfs *sbp, struct thread *td)
+nfs_statfs(struct mount *mp, struct statfs *sbp, struct ucred *cred)
 {
        struct vnode *vp;
        struct nfs_statfs *sfp;
@@ -302,9 +301,9 @@ nfs_statfs(struct mount *mp, struct statfs *sbp, struct thread *td)
        int32_t t1, t2;
        caddr_t bpos, dpos, cp2;
        struct nfsmount *nmp = VFSTONFS(mp);
+       thread_t td = curthread;
        int error = 0, v3 = (nmp->nm_flag & NFSMNT_NFSV3), retattr;
        struct mbuf *mreq, *mrep, *md, *mb, *mb2;
-       struct ucred *cred;
        struct nfsnode *np;
        u_quad_t tquad;
 
@@ -315,6 +314,7 @@ nfs_statfs(struct mount *mp, struct statfs *sbp, struct thread *td)
        if (error)
                return (error);
        vp = NFSTOV(np);
+       /* ignore the passed cred */
        cred = crget();
        cred->cr_ngroups = 1;
        if (v3 && (nmp->nm_state & NFSSTA_GOTFSINFO) == 0)
@@ -438,8 +438,7 @@ nfsmout:
  * - build the rootfs mount point and call mountnfs() to do the rest.
  */
 int
-nfs_mountroot(mp)
-       struct mount *mp;
+nfs_mountroot(struct mount *mp)
 {
        struct mount  *swap_mp;
        struct nfsv3_diskless *nd = &nfsv3_diskless;
@@ -798,7 +797,7 @@ nfs_decode_args(nmp, argp)
  */
 /* ARGSUSED */
 static int
-nfs_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
+nfs_mount(struct mount *mp, char *path, caddr_t data, struct ucred *cred)
 {
        int error;
        struct nfs_args args;
@@ -1010,7 +1009,7 @@ bad:
  * unmount system call
  */
 static int
-nfs_unmount(struct mount *mp, int mntflags, struct thread *td)
+nfs_unmount(struct mount *mp, int mntflags)
 {
        struct nfsmount *nmp;
        int error, flags = 0;
index 4214d1c..222c3e0 100644 (file)
@@ -26,7 +26,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/ntfs/ntfs.h,v 1.8.2.2 2001/10/12 22:08:49 semenu Exp $
- * $DragonFly: src/sys/vfs/ntfs/ntfs.h,v 1.12 2006/05/06 02:43:14 dillon Exp $
+ * $DragonFly: src/sys/vfs/ntfs/ntfs.h,v 1.13 2006/05/06 18:48:53 dillon Exp $
  */
 
 /*#define NTFS_DEBUG 1*/
@@ -318,15 +318,15 @@ MALLOC_DECLARE(M_NTFSNTHASH);
 typedef int (vop_t) (void *);
 #define HASHINIT(a, b, c, d)   hashinit((a), (b), (c), (d))
 #define bqrelse(bp)            brelse(bp)
-#define VOP__UNLOCK(a, b, c)   VOP_UNLOCK((a), (b))
-#define VGET(a, b, c)          vget((a), (b))
-#define VN_LOCK(a, b, c)       vn_lock((a), (b))
+#define VOP__UNLOCK(a, b)      VOP_UNLOCK((a), (b))
+#define VGET(a, b)             vget((a), (b))
+#define VN_LOCK(a, b)          vn_lock((a), (b))
 #define        LOCKMGR(a, b)           lockmgr((a), (b), NULL)
 #else /* !NetBSD */
 #define HASHINIT(a, b, c, d)   hashinit((a), (b), (d))
-#define VOP__UNLOCK(a, b, c)   VOP_UNLOCK((a), (b))
-#define VGET(a, b, c)          vget((a), (b))
-#define VN_LOCK(a, b, c)       vn_lock((a), (b))
+#define VOP__UNLOCK(a, b)      VOP_UNLOCK((a), (b))
+#define VGET(a, b)             vget((a), (b))
+#define VN_LOCK(a, b)          vn_lock((a), (b))
 #define        LOCKMGR(a, b)           lockmgr((a), (b))
 
 #endif /* NetBSD */
index f0029fb..22186c3 100644 (file)
@@ -26,7 +26,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/ntfs/ntfs_vfsops.c,v 1.20.2.5 2001/12/25 01:44:45 dillon Exp $
- * $DragonFly: src/sys/vfs/ntfs/ntfs_vfsops.c,v 1.36 2006/05/06 02:43:14 dillon Exp $
+ * $DragonFly: src/sys/vfs/ntfs/ntfs_vfsops.c,v 1.37 2006/05/06 18:48:53 dillon Exp $
  */
 
 
@@ -80,13 +80,11 @@ MALLOC_DEFINE(M_NTFSDIR,"NTFS dir",  "NTFS dir buffer");
 #endif
 
 static int     ntfs_root (struct mount *, struct vnode **);
-static int     ntfs_statfs (struct mount *, struct statfs *,
-                                struct thread *);
-static int     ntfs_unmount (struct mount *, int, struct thread *);
-static int     ntfs_vget (struct mount *mp, ino_t ino,
-                              struct vnode **vpp);
+static int     ntfs_statfs (struct mount *, struct statfs *, struct ucred *cred);
+static int     ntfs_unmount (struct mount *, int);
+static int     ntfs_vget (struct mount *mp, ino_t ino, struct vnode **vpp);
 static int     ntfs_mountfs (struct vnode *, struct mount *, 
-                                 struct ntfs_args *, struct thread *);
+                                 struct ntfs_args *, struct ucred *);
 static int     ntfs_vptofh (struct vnode *, struct fid *);
 static int     ntfs_fhtovp (struct mount *, struct fid *,
                                 struct vnode **);
@@ -101,7 +99,7 @@ static int   ntfs_sync (struct mount *, int, struct ucred *,
 
 #if defined(__DragonFly__)
 struct sockaddr;
-static int     ntfs_mount (struct mount *, char *, caddr_t, struct thread *);
+static int     ntfs_mount (struct mount *, char *, caddr_t, struct ucred *);
 static int     ntfs_init (struct vfsconf *);
 static int     ntfs_checkexp (struct mount *, struct sockaddr *,
                                   int *, struct ucred **);
@@ -182,7 +180,7 @@ ntfs_mountroot(void)
        args.gid = 0;
        args.mode = 0777;
 
-       if ((error = ntfs_mountfs(rootvp, mp, &args, td)) != 0) {
+       if ((error = ntfs_mountfs(rootvp, mp, &args, proc0.p_ucred)) != 0) {
                mp->mnt_op->vfs_refcount--;
                vfs_unbusy(mp);
                free(mp, M_MOUNT);
@@ -190,7 +188,7 @@ ntfs_mountroot(void)
                return (error);
        }
        mountlist_insert(mp, MNTINS_LAST);
-       (void)ntfs_statfs(mp, &mp->mnt_stat, td);
+       (void)ntfs_statfs(mp, &mp->mnt_stat, proc0.p_ucred);
        vfs_unbusy(mp);
        return (0);
 }
@@ -215,13 +213,7 @@ ntfs_init(struct vfsconf *vcp)
 #endif /* NetBSD */
 
 static int
-ntfs_mount(struct mount *mp,
-#if defined(__DragonFly__)
-          char *path, caddr_t data,
-#else
-          const char *path, void *data,
-#endif
-          struct thread *td)
+ntfs_mount(struct mount *mp, char *path, caddr_t data, struct ucred *cred)
 {
        size_t          size;
        int             error;
@@ -254,7 +246,7 @@ ntfs_mount(struct mount *mp,
                /*
                 * Attempt mount
                 */
-               if( ( error = ntfs_mountfs(rootvp, mp, &args, td)) != 0) {
+               if( ( error = ntfs_mountfs(rootvp, mp, &args, cred)) != 0) {
                        /* fs specific cleanup (if any)*/
                        goto error_1;
                }
@@ -361,7 +353,7 @@ ntfs_mount(struct mount *mp,
                                &size);                         /* real size*/
                bzero( mp->mnt_stat.f_mntfromname + size, MNAMELEN - size);
 
-               error = ntfs_mountfs(devvp, mp, &args, td);
+               error = ntfs_mountfs(devvp, mp, &args, cred);
        }
        if (error) {
                goto error_2;
@@ -376,7 +368,7 @@ dostatfs:
         *
         * This code is common to root and non-root mounts
         */
-       (void)VFS_STATFS(mp, &mp->mnt_stat, td);
+       (void)VFS_STATFS(mp, &mp->mnt_stat, cred);
 
        goto success;
 
@@ -397,17 +389,13 @@ success:
  */
 int
 ntfs_mountfs(struct vnode *devvp, struct mount *mp, struct ntfs_args *argsp,
-            struct thread *td)
+            struct ucred *cred)
 {
        struct buf *bp;
        struct ntfsmount *ntmp;
        dev_t dev;
        int error, ronly, ncount, i;
        struct vnode *vp;
-       struct ucred *cred;
-
-       KKASSERT(td->td_proc);
-       cred = td->td_proc->p_ucred;
 
        /*
         * Disallow multiple mounts of the same device.
@@ -426,9 +414,9 @@ ntfs_mountfs(struct vnode *devvp, struct mount *mp, struct ntfs_args *argsp,
        if (ncount > 1)
                return (EBUSY);
 #if defined(__DragonFly__)
-       VN_LOCK(devvp, LK_EXCLUSIVE | LK_RETRY, td);
+       VN_LOCK(devvp, LK_EXCLUSIVE | LK_RETRY);
        error = vinvalbuf(devvp, V_SAVE, 0, 0);
-       VOP__UNLOCK(devvp, 0, td);
+       VOP__UNLOCK(devvp, 0);
 #else
        error = vinvalbuf(devvp, V_SAVE, 0, 0);
 #endif
@@ -436,9 +424,9 @@ ntfs_mountfs(struct vnode *devvp, struct mount *mp, struct ntfs_args *argsp,
                return (error);
 
        ronly = (mp->mnt_flag & MNT_RDONLY) != 0;
-       VN_LOCK(devvp, LK_EXCLUSIVE | LK_RETRY, td);
+       VN_LOCK(devvp, LK_EXCLUSIVE | LK_RETRY);
        error = VOP_OPEN(devvp, ronly ? FREAD : FREAD|FWRITE, FSCRED, NULL);
-       VOP__UNLOCK(devvp, 0, td);
+       VOP__UNLOCK(devvp, 0);
        if (error)
                return (error);
        dev = devvp->v_rdev;
@@ -538,7 +526,7 @@ ntfs_mountfs(struct vnode *devvp, struct mount *mp, struct ntfs_args *argsp,
                struct attrdef ad;
 
                /* Open $AttrDef */
-               error = VFS_VGET(mp, NTFS_ATTRDEFINO, &vp );
+               error = VFS_VGET(mp, NTFS_ATTRDEFINO, &vp);
                if(error) 
                        goto out1;
 
@@ -607,9 +595,9 @@ out:
 
 #if defined __NetBSD__
        /* lock the device vnode before calling VOP_CLOSE() */
-       VN_LOCK(devvp, LK_EXCLUSIVE | LK_RETRY, td);
+       VN_LOCK(devvp, LK_EXCLUSIVE | LK_RETRY);
        (void)VOP_CLOSE(devvp, ronly ? FREAD : FREAD|FWRITE);
-       VOP__UNLOCK(devvp, 0, td);
+       VOP__UNLOCK(devvp, 0);
 #else
        (void)VOP_CLOSE(devvp, ronly ? FREAD : FREAD|FWRITE);
 #endif
@@ -626,7 +614,7 @@ ntfs_start(struct mount *mp, int flags, struct thread *td)
 #endif
 
 static int
-ntfs_unmount(struct mount *mp, int mntflags, struct thread *td)
+ntfs_unmount(struct mount *mp, int mntflags)
 {
        struct ntfsmount *ntmp;
        int error, ronly, flags, i;
@@ -673,7 +661,7 @@ ntfs_unmount(struct mount *mp, int mntflags, struct thread *td)
        /* lock the device vnode before calling VOP_CLOSE() */
        VOP_LOCK(ntmp->ntm_devvp, LK_EXCLUSIVE | LK_RETRY);
        error = VOP_CLOSE(ntmp->ntm_devvp, ronly ? FREAD : FREAD|FWRITE);
-       VOP__UNLOCK(ntmp->ntm_devvp, 0, td);
+       VOP__UNLOCK(ntmp->ntm_devvp, 0);
 #else
        error = VOP_CLOSE(ntmp->ntm_devvp, ronly ? FREAD : FREAD|FWRITE);
 #endif
@@ -752,7 +740,7 @@ ntfs_calccfree(struct ntfsmount *ntmp, cn_t *cfreep)
 }
 
 static int
-ntfs_statfs(struct mount *mp, struct statfs *sbp, struct thread *td)
+ntfs_statfs(struct mount *mp, struct statfs *sbp, struct ucred *cred)
 {
        struct ntfsmount *ntmp = VFSTONTFS(mp);
        u_int64_t mftsize,mftallocated;
@@ -901,7 +889,7 @@ ntfs_vgetex(struct mount *mp, ino_t ino, u_int32_t attrtype, char *attrname,
        }
 
        if (FTOV(fp)) {
-               VGET(FTOV(fp), lkflags, td);
+               VGET(FTOV(fp), lkflags);
                *vpp = FTOV(fp);
                ntfs_ntput(ip);
                return (0);
index b59ae86..68fc8a2 100644 (file)
@@ -36,7 +36,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/ntfs/ntfs_vnops.c,v 1.9.2.4 2002/08/06 19:35:18 semenu Exp $
- * $DragonFly: src/sys/vfs/ntfs/ntfs_vnops.c,v 1.32 2006/05/05 16:35:10 dillon Exp $
+ * $DragonFly: src/sys/vfs/ntfs/ntfs_vnops.c,v 1.33 2006/05/06 18:48:53 dillon Exp $
  *
  */
 
@@ -737,7 +737,7 @@ ntfs_lookup(struct vop_old_lookup_args *ap)
                if(error)
                        return (error);
 
-               VOP__UNLOCK(dvp,0,cnp->cn_td);
+               VOP__UNLOCK(dvp, 0);
                cnp->cn_flags |= CNP_PDIRUNLOCK;
 
                dprintf(("ntfs_lookup: parentdir: %d\n",
@@ -746,13 +746,13 @@ ntfs_lookup(struct vop_old_lookup_args *ap)
                                 vap->va_a_name->n_pnumber,ap->a_vpp); 
                ntfs_ntvattrrele(vap);
                if (error) {
-                       if (VN_LOCK(dvp,LK_EXCLUSIVE|LK_RETRY,cnp->cn_td)==0)
+                       if (VN_LOCK(dvp, LK_EXCLUSIVE | LK_RETRY) == 0)
                                cnp->cn_flags &= ~CNP_PDIRUNLOCK;
                        return (error);
                }
 
                if (lockparent) {
-                       error = VN_LOCK(dvp, LK_EXCLUSIVE, cnp->cn_td);
+                       error = VN_LOCK(dvp, LK_EXCLUSIVE);
                        if (error) {
                                vput(*ap->a_vpp);
                                *ap->a_vpp = NULL;
@@ -771,7 +771,7 @@ ntfs_lookup(struct vop_old_lookup_args *ap)
                        VTONT(*ap->a_vpp)->i_number));
 
                if (!lockparent)
-                       VOP__UNLOCK(dvp, 0, cnp->cn_td);
+                       VOP__UNLOCK(dvp, 0);
        }
        return (error);
 }
index 032f026..1a7eb2e 100644 (file)
@@ -37,7 +37,7 @@
  *
  * @(#)lofs_vfsops.c   1.2 (Berkeley) 6/18/92
  * $FreeBSD: src/sys/miscfs/nullfs/null_vfsops.c,v 1.35.2.3 2001/07/26 20:37:11 iedowse Exp $
- * $DragonFly: src/sys/vfs/nullfs/null_vfsops.c,v 1.20 2006/05/05 21:15:10 dillon Exp $
+ * $DragonFly: src/sys/vfs/nullfs/null_vfsops.c,v 1.21 2006/05/06 18:48:53 dillon Exp $
  */
 
 /*
@@ -59,24 +59,15 @@ extern struct vnodeopv_entry_desc null_vnodeop_entries[];
 
 static MALLOC_DEFINE(M_NULLFSMNT, "NULLFS mount", "NULLFS mount structure");
 
-static int     nullfs_checkexp(struct mount *mp, struct sockaddr *nam,
-                                   int *extflagsp, struct ucred **credanonp);
-static int     nullfs_mount(struct mount *mp, char *path, caddr_t data,
-                                 struct thread *td);
-static int     nullfs_quotactl(struct mount *mp, int cmd, uid_t uid,
-                                    caddr_t arg, struct thread *td);
 static int     nullfs_root(struct mount *mp, struct vnode **vpp);
 static int     nullfs_statfs(struct mount *mp, struct statfs *sbp,
-                                  struct thread *td);
-static int     nullfs_unmount(struct mount *mp, int mntflags, struct thread *td);
-static int     nullfs_extattrctl(struct mount *mp, int cmd,
-                       const char *attrname, caddr_t arg, struct thread *td);
+                               struct ucred *cred);
 
 /*
  * Mount null layer
  */
 static int
-nullfs_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
+nullfs_mount(struct mount *mp, char *path, caddr_t data, struct ucred *cred)
 {
        int error = 0;
        struct null_args args;
@@ -149,7 +140,7 @@ nullfs_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
        (void) copyinstr(args.target, mp->mnt_stat.f_mntfromname, MNAMELEN - 1,
            &size);
        bzero(mp->mnt_stat.f_mntfromname + size, MNAMELEN - size);
-       (void)nullfs_statfs(mp, &mp->mnt_stat, td);
+       (void)nullfs_statfs(mp, &mp->mnt_stat, cred);
        NULLFSDEBUG("nullfs_mount: lower %s, alias at %s\n",
                mp->mnt_stat.f_mntfromname, mp->mnt_stat.f_mntfromname);
        return (0);
@@ -159,7 +150,7 @@ nullfs_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
  * Free reference to null layer
  */
 static int
-nullfs_unmount(struct mount *mp, int mntflags, struct thread *td)
+nullfs_unmount(struct mount *mp, int mntflags)
 {
        void *mntdata;
        int flags = 0;
@@ -206,13 +197,13 @@ nullfs_root(struct mount *mp, struct vnode **vpp)
 
 static int
 nullfs_quotactl(struct mount *mp, int cmd, uid_t uid, caddr_t arg,
-               struct thread *td)
+               struct ucred *cred)
 {
-       return VFS_QUOTACTL(MOUNTTONULLMOUNT(mp)->nullm_vfs, cmd, uid, arg, td);
+       return VFS_QUOTACTL(MOUNTTONULLMOUNT(mp)->nullm_vfs, cmd, uid, arg, cred);
 }
 
 static int
-nullfs_statfs(struct mount *mp, struct statfs *sbp, struct thread *td)
+nullfs_statfs(struct mount *mp, struct statfs *sbp, struct ucred *cred)
 {
        int error;
        struct statfs mstat;
@@ -222,7 +213,7 @@ nullfs_statfs(struct mount *mp, struct statfs *sbp, struct thread *td)
 
        bzero(&mstat, sizeof(mstat));
 
-       error = VFS_STATFS(MOUNTTONULLMOUNT(mp)->nullm_vfs, &mstat, td);
+       error = VFS_STATFS(MOUNTTONULLMOUNT(mp)->nullm_vfs, &mstat, cred);
        if (error)
                return (error);
 
@@ -254,10 +245,10 @@ nullfs_checkexp(struct mount *mp, struct sockaddr *nam, int *extflagsp,
 
 static int                        
 nullfs_extattrctl(struct mount *mp, int cmd, const char *attrname, caddr_t arg,
-                 struct thread *td)
+                 struct ucred *cred)
 {
        return VFS_EXTATTRCTL(MOUNTTONULLMOUNT(mp)->nullm_vfs, cmd, attrname,
-           arg, td);
+           arg, cred);
 }
 
 
index e87ad7b..0976b1c 100644 (file)
@@ -30,7 +30,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/nwfs/nwfs_vfsops.c,v 1.6.2.6 2001/10/25 19:18:54 dillon Exp $
- * $DragonFly: src/sys/vfs/nwfs/nwfs_vfsops.c,v 1.22 2006/05/06 02:43:14 dillon Exp $
+ * $DragonFly: src/sys/vfs/nwfs/nwfs_vfsops.c,v 1.23 2006/05/06 18:48:53 dillon Exp $
  */
 #include "opt_ncp.h"
 #ifndef NCP
@@ -69,11 +69,11 @@ SYSCTL_NODE(_vfs, OID_AUTO, nwfs, CTLFLAG_RW, 0, "Netware file system");
 SYSCTL_INT(_vfs_nwfs, OID_AUTO, version, CTLFLAG_RD, &nwfs_version, 0, "");
 SYSCTL_INT(_vfs_nwfs, OID_AUTO, debuglevel, CTLFLAG_RW, &nwfs_debuglevel, 0, "");
 
-static int nwfs_mount(struct mount *, char *, caddr_t, struct thread *);
+static int nwfs_mount(struct mount *, char *, caddr_t, struct ucred *);
 static int nwfs_root(struct mount *, struct vnode **);
-static int nwfs_statfs(struct mount *, struct statfs *, struct thread *);
+static int nwfs_statfs(struct mount *, struct statfs *, struct ucred *);
 static int nwfs_sync(struct mount *, int);
-static int nwfs_unmount(struct mount *, int, struct thread *);
+static int nwfs_unmount(struct mount *, int);
 static int nwfs_init(struct vfsconf *vfsp);
 static int nwfs_uninit(struct vfsconf *vfsp);
 
@@ -133,7 +133,7 @@ nwfs_initnls(struct nwmount *nmp) {
  * data - addr in user space of mount params 
  */
 static int
-nwfs_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
+nwfs_mount(struct mount *mp, char *path, caddr_t data, struct ucred *cred)
 {
        struct nwfs_args args;    /* will hold data from mount request */
        int error;
@@ -142,10 +142,6 @@ nwfs_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
        struct ncp_handle *handle = NULL;
        struct vnode *vp;
        char *pc,*pe;
-       struct ucred *cred;
-
-       KKASSERT(td->td_proc);
-       cred = td->td_proc->p_ucred;
 
        if (data == NULL) {
                nwfs_printf("missing data argument\n");
@@ -162,7 +158,7 @@ nwfs_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
                nwfs_printf("mount version mismatch: kernel=%d, mount=%d\n",NWFS_VERSION,args.version);
                return (1);
        }
-       error = ncp_conn_getbyref(args.connRef,td,cred,NCPM_EXECUTE,&conn);
+       error = ncp_conn_getbyref(args.connRef,curthread,cred,NCPM_EXECUTE,&conn);
        if (error) {
                nwfs_printf("invalid connection refernce %d\n",args.connRef);
                return (error);
@@ -172,7 +168,7 @@ nwfs_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
                nwfs_printf("can't get connection handle\n");
                return (error);
        }
-       ncp_conn_unlock(conn,td);       /* we keep the ref */
+       ncp_conn_unlock(conn,curthread);        /* we keep the ref */
        mp->mnt_stat.f_iosize = conn->buffer_size;
         /* We must malloc our own mount info */
         MALLOC(nmp,struct nwmount *,sizeof(struct nwmount),M_NWFSDATA, M_WAITOK|M_USE_RESERVE|M_ZERO);
@@ -230,15 +226,11 @@ bad:
 
 /* Unmount the filesystem described by mp. */
 static int
-nwfs_unmount(struct mount *mp, int mntflags, struct thread *td)
+nwfs_unmount(struct mount *mp, int mntflags)
 {
        struct nwmount *nmp = VFSTONWFS(mp);
        struct ncp_conn *conn;
        int error, flags;
-       struct ucred *cred;
-
-       KKASSERT(td->td_proc);
-       cred = td->td_proc->p_ucred;
 
        NCPVODEBUG("nwfs_unmount: flags=%04x\n",mntflags);
        flags = 0;
@@ -250,9 +242,9 @@ nwfs_unmount(struct mount *mp, int mntflags, struct thread *td)
                return (error);
        conn = NWFSTOCONN(nmp);
        ncp_conn_puthandle(nmp->connh,NULL,0);
-       if (ncp_conn_lock(conn,td,cred,NCPM_WRITE | NCPM_EXECUTE) == 0) {
+       if (ncp_conn_lock(conn, curthread, proc0.p_ucred, NCPM_WRITE | NCPM_EXECUTE) == 0) {
                if(ncp_disconnect(conn))
-                       ncp_conn_unlock(conn,td);
+                       ncp_conn_unlock(conn, curthread);
        }
        mp->mnt_data = (qaddr_t)0;
        if (nmp->m.flags & NWFS_MOUNT_HAVE_NLS)
@@ -394,19 +386,16 @@ nwfs_uninit(struct vfsconf *vfsp)
  * nwfs_statfs call
  */
 int
-nwfs_statfs(struct mount *mp, struct statfs *sbp, struct thread *td)
+nwfs_statfs(struct mount *mp, struct statfs *sbp, struct ucred *cred)
 {
        struct nwmount *nmp = VFSTONWFS(mp);
        int error = 0, secsize;
        struct nwnode *np = nmp->n_root;
        struct ncp_volume_info vi;
-       struct ucred *cred;
-
-       KKASSERT(td->td_proc);
-       cred = td->td_proc->p_ucred;
 
        if (np == NULL) return EINVAL;
-       error = ncp_get_volume_info_with_number(NWFSTOCONN(nmp), nmp->n_volume, &vi,td,cred);
+       error = ncp_get_volume_info_with_number(NWFSTOCONN(nmp), nmp->n_volume,
+                                               &vi, curthread, cred);
        if (error) return error;
        secsize = 512;                  /* XXX how to get real value ??? */
        sbp->f_spare2=0;                /* placeholder */
index 575b091..4756d8a 100644 (file)
@@ -36,7 +36,7 @@
  *     @(#)portal_vfsops.c     8.11 (Berkeley) 5/14/95
  *
  * $FreeBSD: src/sys/miscfs/portal/portal_vfsops.c,v 1.26.2.2 2001/07/26 20:37:16 iedowse Exp $
- * $DragonFly: src/sys/vfs/portal/portal_vfsops.c,v 1.19 2006/05/06 06:38:39 dillon Exp $
+ * $DragonFly: src/sys/vfs/portal/portal_vfsops.c,v 1.20 2006/05/06 18:48:53 dillon Exp $
  */
 
 /*
@@ -63,18 +63,17 @@ extern struct vnodeopv_entry_desc portal_vnodeop_entries[];
 static MALLOC_DEFINE(M_PORTALFSMNT, "PORTAL mount", "PORTAL mount structure");
 
 static int     portal_mount (struct mount *mp, char *path, caddr_t data,
-                                 struct thread *td);
-static int     portal_unmount (struct mount *mp, int mntflags,
-                                   struct thread *td);
+                                 struct ucred *cred);
+static int     portal_unmount (struct mount *mp, int mntflags);
 static int     portal_root (struct mount *mp, struct vnode **vpp);
 static int     portal_statfs (struct mount *mp, struct statfs *sbp,
-                                  struct thread *td);
+                               struct ucred *);
 
 /*
  * Mount the per-process file descriptors (/dev/fd)
  */
 static int
-portal_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
+portal_mount(struct mount *mp, char *path, caddr_t data, struct ucred *cred)
 {
        struct file *fp;
        struct portal_args args;
@@ -95,8 +94,8 @@ portal_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
        if (error)
                return (error);
 
-       KKASSERT(td->td_proc);
-       error = holdsock(td->td_proc->p_fd, args.pa_socket, &fp);
+       KKASSERT(curproc != NULL);
+       error = holdsock(curproc->p_fd, args.pa_socket, &fp);
        if (error)
                return (error);
        so = (struct socket *) fp->f_data;
@@ -146,13 +145,13 @@ portal_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
 #endif
        vx_unlock(rvp);
 
-       (void)portal_statfs(mp, &mp->mnt_stat, td);
+       (void)portal_statfs(mp, &mp->mnt_stat, cred);
        fdrop(fp);
        return (0);
 }
 
 static int
-portal_unmount(struct mount *mp, int mntflags, struct thread *td)
+portal_unmount(struct mount *mp, int mntflags)
 {
        int error, flags = 0;
 
@@ -210,9 +209,8 @@ portal_root(struct mount *mp, struct vnode **vpp)
 }
 
 static int
-portal_statfs(struct mount *mp, struct statfs *sbp, struct thread *td)
+portal_statfs(struct mount *mp, struct statfs *sbp, struct ucred *cred)
 {
-
        sbp->f_flags = 0;
        sbp->f_bsize = DEV_BSIZE;
        sbp->f_iosize = DEV_BSIZE;
index 7f7a4ba..739e187 100644 (file)
@@ -37,7 +37,7 @@
  *     @(#)procfs_vfsops.c     8.7 (Berkeley) 5/10/95
  *
  * $FreeBSD: src/sys/miscfs/procfs/procfs_vfsops.c,v 1.32.2.1 2001/10/15 20:42:01 des Exp $
- * $DragonFly: src/sys/vfs/procfs/procfs_vfsops.c,v 1.13 2005/09/17 07:43:12 dillon Exp $
+ * $DragonFly: src/sys/vfs/procfs/procfs_vfsops.c,v 1.14 2006/05/06 18:48:53 dillon Exp $
  */
 
 /*
 extern struct vnodeopv_entry_desc procfs_vnodeop_entries[];
 
 static int     procfs_mount (struct mount *mp, char *path, caddr_t data,
-                                 struct thread *td);
+                                 struct ucred *cred);
 static int     procfs_statfs (struct mount *mp, struct statfs *sbp,
-                                  struct thread *td);
-static int     procfs_unmount (struct mount *mp, int mntflags,
-                                   struct thread *td);
+                               struct ucred *cred);
+static int     procfs_unmount (struct mount *mp, int mntflags);
 
 /*
  * VFS Operations.
@@ -68,7 +67,7 @@ static int    procfs_unmount (struct mount *mp, int mntflags,
  */
 /* ARGSUSED */
 static int
-procfs_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
+procfs_mount(struct mount *mp, char *path, caddr_t data, struct ucred *cred)
 {
        size_t size;
        int error;
@@ -88,7 +87,7 @@ procfs_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
        size = sizeof("procfs") - 1;
        bcopy("procfs", mp->mnt_stat.f_mntfromname, size);
        bzero(mp->mnt_stat.f_mntfromname + size, MNAMELEN - size);
-       procfs_statfs(mp, &mp->mnt_stat, td);
+       procfs_statfs(mp, &mp->mnt_stat, cred);
        vfs_add_vnodeops(mp, &mp->mnt_vn_norm_ops,
                         procfs_vnodeop_entries, 0);
 
@@ -99,7 +98,7 @@ procfs_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
  * unmount system call
  */
 static int
-procfs_unmount(struct mount *mp, int mntflags, struct thread *td)
+procfs_unmount(struct mount *mp, int mntflags)
 {
        int error;
        int flags = 0;
@@ -130,7 +129,7 @@ procfs_root(struct mount *mp, struct vnode **vpp)
  * Get file system statistics.
  */
 static int
-procfs_statfs(struct mount *mp, struct statfs *sbp, struct thread *td)
+procfs_statfs(struct mount *mp, struct statfs *sbp, struct ucred *cred)
 {
        sbp->f_bsize = PAGE_SIZE;
        sbp->f_iosize = PAGE_SIZE;
index d6e5dbf..695798a 100644 (file)
@@ -30,7 +30,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/fs/smbfs/smbfs.h,v 1.2.2.2 2003/01/17 08:20:26 tjr Exp $
- * $DragonFly: src/sys/vfs/smbfs/smbfs.h,v 1.7 2006/05/06 02:43:14 dillon Exp $
+ * $DragonFly: src/sys/vfs/smbfs/smbfs.h,v 1.8 2006/05/06 18:48:53 dillon Exp $
  */
 #ifndef _SMBFS_SMBFS_H_
 #define _SMBFS_SMBFS_H_
@@ -93,6 +93,7 @@ struct smbmount {
        LIST_HEAD(smbnode_hashhead, smbnode) *sm_hash;
        u_long                  sm_hashlen;
        int                     sm_didrele;
+       struct ucred            *sm_cred;       /* mount cred */
 };
 
 #define VFSTOSMBFS(mp)         ((struct smbmount *)((mp)->mnt_data))
index ddcd34b..e68a125 100644 (file)
@@ -30,7 +30,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/fs/smbfs/smbfs_vfsops.c,v 1.2.2.5 2003/01/17 08:20:26 tjr Exp $
- * $DragonFly: src/sys/vfs/smbfs/smbfs_vfsops.c,v 1.26 2006/05/06 02:43:14 dillon Exp $
+ * $DragonFly: src/sys/vfs/smbfs/smbfs_vfsops.c,v 1.27 2006/05/06 18:48:53 dillon Exp $
  */
 #include "opt_netsmb.h"
 #ifndef NETSMB
@@ -81,11 +81,11 @@ SYSCTL_INT(_vfs_smbfs, OID_AUTO, debuglevel, CTLFLAG_RW, &smbfs_debuglevel, 0, "
 static MALLOC_DEFINE(M_SMBFSHASH, "SMBFS hash", "SMBFS hash table");
 
 
-static int smbfs_mount(struct mount *, char *, caddr_t, struct thread *);
+static int smbfs_mount(struct mount *, char *, caddr_t, struct ucred *);
 static int smbfs_root(struct mount *, struct vnode **);
-static int smbfs_statfs(struct mount *, struct statfs *, struct thread *);
+static int smbfs_statfs(struct mount *, struct statfs *, struct ucred *);
 static int smbfs_sync(struct mount *, int);
-static int smbfs_unmount(struct mount *, int, struct thread *);
+static int smbfs_unmount(struct mount *, int);
 static int smbfs_init(struct vfsconf *vfsp);
 static int smbfs_uninit(struct vfsconf *vfsp);
 
@@ -117,7 +117,7 @@ MODULE_DEPEND(smbfs, libmchain, 1, 1, 1);
 int smbfs_pbuf_freecnt = -1;   /* start out unlimited */
 
 static int
-smbfs_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
+smbfs_mount(struct mount *mp, char *path, caddr_t data, struct ucred *cred)
 {
        struct smbfs_args args;           /* will hold data from mount request */
        struct smbmount *smp = NULL;
@@ -125,15 +125,9 @@ smbfs_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
        struct smb_share *ssp = NULL;
        struct vnode *vp;
        struct smb_cred scred;
-       struct ucred *cred;
        int error;
        char *pc, *pe;
 
-       if (td->td_proc)
-           cred = td->td_proc->p_ucred;
-       else
-           cred = proc0.p_ucred;
-
        if (data == NULL) {
                printf("missing data argument\n");
                return EINVAL;
@@ -150,14 +144,14 @@ smbfs_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
                    SMBFS_VERSION, args.version);
                return EINVAL;
        }
-       smb_makescred(&scred, td, cred);
+       smb_makescred(&scred, curthread, cred);
        error = smb_dev2share(args.dev, SMBM_EXEC, &scred, &ssp);
        if (error) {
                printf("invalid device handle %d (%d)\n", args.dev, error);
                return error;
        }
        vcp = SSTOVC(ssp);
-       smb_share_unlock(ssp, 0, td);
+       smb_share_unlock(ssp, 0, curthread);
        mp->mnt_stat.f_iosize = SSTOVC(ssp)->vc_txmax;
 
 #ifdef SMBFS_USEZONE
@@ -172,6 +166,7 @@ smbfs_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
         }
        bzero(smp, sizeof(*smp));
         mp->mnt_data = (qaddr_t)smp;
+       smp->sm_cred = crhold(cred);
        smp->sm_hash = hashinit(desiredvnodes, M_SMBFSHASH, &smp->sm_hashlen);
        if (smp->sm_hash == NULL)
                goto bad;
@@ -219,6 +214,8 @@ smbfs_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
        return error;
 bad:
         if (smp) {
+               if (smp->sm_cred)
+                       crfree(smp->sm_cred);
                if (smp->sm_hash)
                        free(smp->sm_hash, M_SMBFSHASH);
                lockdestroy(&smp->sm_hashlock);
@@ -235,18 +232,12 @@ bad:
 
 /* Unmount the filesystem described by mp. */
 static int
-smbfs_unmount(struct mount *mp, int mntflags, struct thread *td)
+smbfs_unmount(struct mount *mp, int mntflags)
 {
        struct smbmount *smp = VFSTOSMBFS(mp);
        struct smb_cred scred;
-       struct ucred *cred;
        int error, flags;
 
-       if (td->td_proc)
-           cred = td->td_proc->p_ucred;
-       else
-           cred = proc0.p_ucred;
-
        SMBVDEBUG("smbfs_unmount: flags=%04x\n", mntflags);
        flags = 0;
        if (mntflags & MNT_FORCE)
@@ -266,10 +257,12 @@ smbfs_unmount(struct mount *mp, int mntflags, struct thread *td)
        } while (error == EBUSY && smp->sm_didrele != 0);
        if (error)
                return error;
-       smb_makescred(&scred, td, cred);
+       smb_makescred(&scred, curthread, smp->sm_cred);
        smb_share_put(smp->sm_share, &scred);
        mp->mnt_data = (qaddr_t)0;
 
+       if (smp->sm_cred)
+               crfree(smp->sm_cred);
        if (smp->sm_hash)
                free(smp->sm_hash, M_SMBFSHASH);
        lockdestroy(&smp->sm_hashlock);
@@ -348,26 +341,20 @@ smbfs_uninit(struct vfsconf *vfsp)
  * smbfs_statfs call
  */
 int
-smbfs_statfs(struct mount *mp, struct statfs *sbp, struct thread *td)
+smbfs_statfs(struct mount *mp, struct statfs *sbp, struct ucred *cred)
 {
        struct smbmount *smp = VFSTOSMBFS(mp);
        struct smbnode *np = smp->sm_root;
        struct smb_share *ssp = smp->sm_share;
        struct smb_cred scred;
-       struct ucred *cred;
        int error = 0;
 
-       if (td->td_proc)
-           cred = td->td_proc->p_ucred;
-       else
-           cred = proc0.p_ucred;
-
        if (np == NULL)
                return EINVAL;
        
        sbp->f_iosize = SSTOVC(ssp)->vc_txmax;          /* optimal transfer block size */
        sbp->f_spare2 = 0;                      /* placeholder */
-       smb_makescred(&scred, td, cred);
+       smb_makescred(&scred, curthread, cred);
 
        if (SMB_DIALECT(SSTOVC(ssp)) >= SMB_DIALECT_LANMAN2_0)
                error = smbfs_smb_statfs2(ssp, sbp, &scred);
index f35a495..191e869 100644 (file)
@@ -24,7 +24,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/fs/udf/udf_vfsops.c,v 1.16 2003/11/05 06:56:08 scottl Exp $
- * $DragonFly: src/sys/vfs/udf/udf_vfsops.c,v 1.18 2006/05/06 02:43:14 dillon Exp $
+ * $DragonFly: src/sys/vfs/udf/udf_vfsops.c,v 1.19 2006/05/06 18:48:53 dillon Exp $
  */
 
 /* udf_vfsops.c */
@@ -99,10 +99,10 @@ MALLOC_DEFINE(M_UDFNODE, "UDF node", "UDF node structure");
 MALLOC_DEFINE(M_UDFMOUNT, "UDF mount", "UDF mount structure");
 MALLOC_DEFINE(M_UDFFENTRY, "UDF fentry", "UDF file entry structure");
 
-static int udf_mount(struct mount *, char *, caddr_t, struct thread *);
-static int udf_unmount(struct mount *, int, struct thread *);
+static int udf_mount(struct mount *, char *, caddr_t, struct ucred *);
+static int udf_unmount(struct mount *, int);
 static int udf_root(struct mount *, struct vnode **);
-static int udf_statfs(struct mount *, struct statfs *, struct thread *);
+static int udf_statfs(struct mount *, struct statfs *, struct ucred *);
 static int udf_fhtovp(struct mount *, struct fid *, struct vnode **);
 static int udf_vptofh(struct vnode *, struct fid *);
 
@@ -122,10 +122,10 @@ VFS_SET(udf_vfsops, udf, VFCF_READONLY);
 
 MODULE_VERSION(udf, 1);
 
-static int udf_mountfs(struct vnode *, struct mount *, struct thread *);
+static int udf_mountfs(struct vnode *, struct mount *);
 
 static int
-udf_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
+udf_mount(struct mount *mp, char *path, caddr_t data, struct ucred *cred)
 {
        struct vnode *devvp;    /* vnode of the mount device */
        struct udf_args args;
@@ -171,16 +171,16 @@ udf_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
 
        /* Check the access rights on the mount device */
        vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY);
-       error = VOP_ACCESS(devvp, VREAD, td->td_proc->p_ucred);
+       error = VOP_ACCESS(devvp, VREAD, cred);
        if (error)
-               error = suser(td);
+               error = suser_cred(cred, 0);
        if (error) {
                vput(devvp);
                return(error);
        }
        VOP_UNLOCK(devvp, 0);
 
-       if ((error = udf_mountfs(devvp, mp, td))) {
+       if ((error = udf_mountfs(devvp, mp))) {
                vrele(devvp);
                return(error);
        }
@@ -191,7 +191,7 @@ udf_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
 
        copyinstr(args.fspec, mp->mnt_stat.f_mntfromname, MNAMELEN - 1, &size);
        bzero(mp->mnt_stat.f_mntfromname + size, MNAMELEN - size);
-       udf_statfs(mp, &mp->mnt_stat, td);
+       udf_statfs(mp, &mp->mnt_stat, cred);
        return(0);
 }
 
@@ -221,7 +221,7 @@ udf_checktag(struct desc_tag *tag, uint16_t id)
 }
 
 static int
-udf_mountfs(struct vnode *devvp, struct mount *mp, struct thread *td) 
+udf_mountfs(struct vnode *devvp, struct mount *mp)
 {
        struct buf *bp = NULL;
        struct anchor_vdp avdp;
@@ -399,7 +399,7 @@ bail:
 }
 
 static int
-udf_unmount(struct mount *mp, int mntflags, struct thread *td)
+udf_unmount(struct mount *mp, int mntflags)
 {
        struct udf_mnt *udfmp;
        int error, flags = 0;
@@ -452,7 +452,7 @@ udf_root(struct mount *mp, struct vnode **vpp)
 }
 
 static int
-udf_statfs(struct mount *mp, struct statfs *sbp, struct thread *td)
+udf_statfs(struct mount *mp, struct statfs *sbp, struct ucred *cred)
 {
        struct udf_mnt *udfmp;
 
index 7d137ec..21e9525 100644 (file)
@@ -32,7 +32,7 @@
  *
  *     @(#)ffs_extern.h        8.6 (Berkeley) 3/30/95
  * $FreeBSD: src/sys/ufs/ffs/ffs_extern.h,v 1.30 2000/01/09 22:40:02 mckusick Exp $
- * $DragonFly: src/sys/vfs/ufs/ffs_extern.h,v 1.12 2006/05/06 16:20:19 dillon Exp $
+ * $DragonFly: src/sys/vfs/ufs/ffs_extern.h,v 1.13 2006/05/06 18:48:53 dillon Exp $
  */
 
 #ifndef _VFS_UFS_EXTERN_H
@@ -90,10 +90,10 @@ int ffs_reallocblks(struct vop_reallocblks_args *);
 int    ffs_realloccg(struct inode *,
            ufs_daddr_t, ufs_daddr_t, int, int, struct ucred *, struct buf **);
 void   ffs_setblock(struct fs *, u_char *, ufs_daddr_t);
-int    ffs_statfs(struct mount *, struct statfs *, struct thread *);
+int    ffs_statfs(struct mount *, struct statfs *, struct ucred *);
 int    ffs_sync(struct mount *, int);
 int    ffs_truncate(struct vnode *, off_t, int, struct ucred *);
-int    ffs_unmount(struct mount *, int, struct thread *);
+int    ffs_unmount(struct mount *, int);
 int    ffs_update(struct vnode *, int);
 int    ffs_valloc(struct vnode *, int, struct ucred *, struct vnode **);
 
index daee51e..4f34402 100644 (file)
@@ -32,7 +32,7 @@
  *
  *     @(#)ffs_vfsops.c        8.31 (Berkeley) 5/20/95
  * $FreeBSD: src/sys/ufs/ffs/ffs_vfsops.c,v 1.117.2.10 2002/06/23 22:34:52 iedowse Exp $
- * $DragonFly: src/sys/vfs/ufs/ffs_vfsops.c,v 1.42 2006/05/06 16:20:19 dillon Exp $
+ * $DragonFly: src/sys/vfs/ufs/ffs_vfsops.c,v 1.43 2006/05/06 18:48:53 dillon Exp $
  */
 
 #include "opt_quota.h"
@@ -67,7 +67,7 @@ static MALLOC_DEFINE(M_FFSNODE, "FFS node", "FFS vnode private part");
 static int     ffs_sbupdate (struct ufsmount *, int);
 static int     ffs_reload (struct mount *, struct ucred *);
 static int     ffs_oldfscompat (struct fs *);
-static int     ffs_mount (struct mount *, char *, caddr_t, struct thread *);
+static int     ffs_mount (struct mount *, char *, caddr_t, struct ucred *);
 static int     ffs_init (struct vfsconf *);
 
 static struct vfsops ufs_vfsops = {
@@ -129,7 +129,7 @@ static int
 ffs_mount(struct mount *mp,            /* mount struct pointer */
           char *path,                  /* path to mount point */
           caddr_t data,                        /* arguments to FS specific mount */
-          struct thread        *td)            /* process requesting mount */
+          struct ucred *cred)          /* process requesting mount */
 {
        size_t          size;
        int             error;
@@ -140,12 +140,9 @@ ffs_mount(struct mount *mp,                /* mount struct pointer */
        struct fs *fs;
        int flags, ronly = 0;
        mode_t accessmode;
-       struct ucred *cred;
        struct nlookupdata nd;
        struct vnode *rootvp;
 
-       KKASSERT(td->td_proc);
-       cred = td->td_proc->p_ucred;
        devvp = NULL;
        error = 0;
 
@@ -373,7 +370,7 @@ dostatfs:
         *
         * This code is common to root and non-root mounts
         */
-       (void)VFS_STATFS(mp, &mp->mnt_stat, td);
+       (void)VFS_STATFS(mp, &mp->mnt_stat, cred);
 
        goto success;
 
@@ -822,7 +819,7 @@ ffs_oldfscompat(struct fs *fs)
  * unmount system call
  */
 int
-ffs_unmount(struct mount *mp, int mntflags, struct thread *td)
+ffs_unmount(struct mount *mp, int mntflags)
 {
        struct ufsmount *ump;
        struct fs *fs;
@@ -910,7 +907,7 @@ ffs_flushfiles(struct mount *mp, int flags)
  * Get filesystem statistics.
  */
 int
-ffs_statfs(struct mount *mp, struct statfs *sbp, struct thread *td)
+ffs_statfs(struct mount *mp, struct statfs *sbp, struct ucred *cred)
 {
        struct ufsmount *ump;
        struct fs *fs;
index 014dbe6..4ffcfbf 100644 (file)
@@ -35,7 +35,7 @@
  *
  *     @(#)quota.h     8.3 (Berkeley) 8/19/94
  * $FreeBSD: src/sys/ufs/ufs/quota.h,v 1.15.2.1 2003/02/27 12:04:13 das Exp $
- * $DragonFly: src/sys/vfs/ufs/quota.h,v 1.7 2006/05/06 16:20:19 dillon Exp $
+ * $DragonFly: src/sys/vfs/ufs/quota.h,v 1.8 2006/05/06 18:48:53 dillon Exp $
  */
 
 #ifndef _VFS_UFS_QUOTA_H_
@@ -190,7 +190,7 @@ int ufs_quotaoff(struct mount *, int);
 int    ufs_quotaon(struct ucred *, struct mount *, int, caddr_t);
 int    ufs_setquota(struct mount *, u_long, int, caddr_t);
 int    ufs_setuse(struct mount *, u_long, int, caddr_t);
-int    ufs_quotactl(struct mount *, int, uid_t, caddr_t, struct thread *);
+int    ufs_quotactl(struct mount *, int, uid_t, caddr_t, struct ucred *);
 
 #else /* !_KERNEL */
 
index 4d36c24..057f302 100644 (file)
@@ -37,7 +37,7 @@
  *
  *     @(#)ufs_vfsops.c        8.8 (Berkeley) 5/20/95
  * $FreeBSD: src/sys/ufs/ufs/ufs_vfsops.c,v 1.17.2.3 2001/10/14 19:08:16 iedowse Exp $
- * $DragonFly: src/sys/vfs/ufs/ufs_vfsops.c,v 1.14 2006/05/06 16:20:19 dillon Exp $
+ * $DragonFly: src/sys/vfs/ufs/ufs_vfsops.c,v 1.15 2006/05/06 18:48:53 dillon Exp $
  */
 
 #include "opt_quota.h"
@@ -76,18 +76,13 @@ ufs_root(struct mount *mp, struct vnode **vpp)
  */
 int
 ufs_quotactl(struct mount *mp, int cmds, uid_t uid, caddr_t arg,
-            struct thread *td)
+            struct ucred *cred)
 {
 #ifndef QUOTA
        return (EOPNOTSUPP);
 #else
-       struct ucred *cred;
        int cmd, type, error;
 
-       if (td->td_proc == NULL)
-               return (EOPNOTSUPP);
-       cred = td->td_proc->p_ucred;
-
        type = cmds & SUBCMDMASK;
        cmd = cmds >> SUBCMDSHIFT;
 
index b7cc84b..be58320 100644 (file)
@@ -36,7 +36,7 @@
  *     @(#)umap_vfsops.c       8.8 (Berkeley) 5/14/95
  *
  * $FreeBSD: src/sys/miscfs/umapfs/umap_vfsops.c,v 1.31.2.2 2001/09/11 09:49:53 kris Exp $
- * $DragonFly: src/sys/vfs/umapfs/Attic/umap_vfsops.c,v 1.19 2006/05/05 21:15:11 dillon Exp $
+ * $DragonFly: src/sys/vfs/umapfs/Attic/umap_vfsops.c,v 1.20 2006/05/06 18:48:53 dillon Exp $
  */
 
 /*
@@ -64,26 +64,25 @@ static int  umapfs_fhtovp (struct mount *mp, struct fid *fidp,
 static int     umapfs_checkexp (struct mount *mp, struct sockaddr *nam,
                                    int *extflagsp, struct ucred **credanonp);
 static int     umapfs_mount (struct mount *mp, char *path, caddr_t data,
-                                 struct thread *td);
+                                 struct ucred *cred);
 static int     umapfs_quotactl (struct mount *mp, int cmd, uid_t uid,
-                                    caddr_t arg, struct thread *td);
+                                    caddr_t arg, struct ucred *cred);
 static int     umapfs_root (struct mount *mp, struct vnode **vpp);
 static int     umapfs_statfs (struct mount *mp, struct statfs *sbp,
-                                  struct thread *td);
-static int     umapfs_unmount (struct mount *mp, int mntflags,
-                                   struct thread *td);
+                               struct ucred *cred);
+static int     umapfs_unmount (struct mount *mp, int mntflags);
 static int     umapfs_vget (struct mount *mp, ino_t ino,
                                 struct vnode **vpp);
 static int     umapfs_vptofh (struct vnode *vp, struct fid *fhp);
 static int     umapfs_extattrctl (struct mount *mp, int cmd,
                                       const char *attrname, caddr_t arg,
-                                      struct thread *td);
+                                      struct ucred *cred);
 
 /*
  * Mount umap layer
  */
 static int
-umapfs_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
+umapfs_mount(struct mount *mp, char *path, caddr_t data, struct ucred *cred)
 {
        struct umap_args args;
        struct vnode *lowerrootvp, *vp;
@@ -99,7 +98,7 @@ umapfs_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
        /*
         * Only for root
         */
-       if ((error = suser(td)) != 0)
+       if ((error = suser_cred(cred, 0)) != 0)
                return (error);
 
 #ifdef DEBUG
@@ -230,7 +229,7 @@ umapfs_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
        (void) copyinstr(args.target, mp->mnt_stat.f_mntfromname, MNAMELEN - 1,
            &size);
        bzero(mp->mnt_stat.f_mntfromname + size, MNAMELEN - size);
-       (void)umapfs_statfs(mp, &mp->mnt_stat, td);
+       (void)umapfs_statfs(mp, &mp->mnt_stat, cred);
        return (0);
 }
 
@@ -238,7 +237,7 @@ umapfs_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
  * Free reference to umap layer
  */
 static int
-umapfs_unmount(struct mount *mp, int mntflags, struct thread *td)
+umapfs_unmount(struct mount *mp, int mntflags)
 {
        int error;
        int flags = 0;
@@ -276,7 +275,6 @@ umapfs_unmount(struct mount *mp, int mntflags, struct thread *td)
 static int
 umapfs_root(struct mount *mp, struct vnode **vpp)
 {
-       struct thread *td = curthread;  /* XXX */
        struct vnode *vp;
 
 #ifdef DEBUG
@@ -297,13 +295,13 @@ umapfs_root(struct mount *mp, struct vnode **vpp)
 
 static int
 umapfs_quotactl(struct mount *mp, int cmd, uid_t uid, 
-       caddr_t arg, struct thread *td)
+       caddr_t arg, struct ucred *cred)
 {
-       return (VFS_QUOTACTL(MOUNTTOUMAPMOUNT(mp)->umapm_vfs, cmd, uid, arg, td));
+       return (VFS_QUOTACTL(MOUNTTOUMAPMOUNT(mp)->umapm_vfs, cmd, uid, arg, cred));
 }
 
 static int
-umapfs_statfs(struct mount *mp, struct statfs *sbp, struct thread *td)
+umapfs_statfs(struct mount *mp, struct statfs *sbp, struct ucred *cred)
 {
        int error;
        struct statfs mstat;
@@ -316,7 +314,7 @@ umapfs_statfs(struct mount *mp, struct statfs *sbp, struct thread *td)
 
        bzero(&mstat, sizeof(mstat));
 
-       error = VFS_STATFS(MOUNTTOUMAPMOUNT(mp)->umapm_vfs, &mstat, td);
+       error = VFS_STATFS(MOUNTTOUMAPMOUNT(mp)->umapm_vfs, &mstat, cred);
        if (error)
                return (error);
 
@@ -368,10 +366,10 @@ umapfs_vptofh(struct vnode *vp, struct fid *fhp)
 
 static int
 umapfs_extattrctl(struct mount *mp, int cmd, const char *attrname,
-       caddr_t arg, struct thread *td)
+       caddr_t arg, struct ucred *cred)
 {
        return (VFS_EXTATTRCTL(MOUNTTOUMAPMOUNT(mp)->umapm_vfs, cmd, attrname,
-           arg, td));
+           arg, cred));
 } 
 
 
index 7390cc7..1b5959b 100644 (file)
@@ -36,7 +36,7 @@
  *
  *     @(#)union_vfsops.c      8.20 (Berkeley) 5/20/95
  * $FreeBSD: src/sys/miscfs/union/union_vfsops.c,v 1.39.2.2 2001/10/25 19:18:53 dillon Exp $
- * $DragonFly: src/sys/vfs/union/union_vfsops.c,v 1.22 2006/05/05 21:15:11 dillon Exp $
+ * $DragonFly: src/sys/vfs/union/union_vfsops.c,v 1.23 2006/05/06 18:48:53 dillon Exp $
  */
 
 /*
@@ -62,18 +62,17 @@ static MALLOC_DEFINE(M_UNIONFSMNT, "UNION mount", "UNION mount structure");
 
 extern int     union_init (struct vfsconf *);
 static int     union_mount (struct mount *mp, char *path, caddr_t data,
-                                struct thread *td);
+                                struct ucred *cred);
 static int     union_root (struct mount *mp, struct vnode **vpp);
 static int     union_statfs (struct mount *mp, struct statfs *sbp,
-                                 struct thread *td);
-static int     union_unmount (struct mount *mp, int mntflags,
-                                  struct thread *td);
+                               struct ucred *cred);
+static int     union_unmount (struct mount *mp, int mntflags);
 
 /*
  * Mount union filesystem
  */
 static int
-union_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
+union_mount(struct mount *mp, char *path, caddr_t data, struct ucred *cred)
 {
        int error = 0;
        struct union_args args;
@@ -88,8 +87,6 @@ union_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
 
        UDEBUG(("union_mount(mp = %p)\n", (void *)mp));
 
-       KKASSERT(td->td_proc);
-
        /*
         * Disable clustered write, otherwise system becomes unstable.
         */
@@ -218,8 +215,14 @@ union_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
                        goto bad;
        }
 
-       um->um_cred = crhold(td->td_proc->p_ucred);
-       um->um_cmode = UN_DIRMODE & ~td->td_proc->p_fd->fd_cmask;
+       /*
+        * File creds and modes for shadowed files are based on the user
+        * that did the mount.
+        */
+       um->um_cred = crhold(cred);
+       um->um_cmode = UN_DIRMODE;
+       if (curproc)
+               um->um_cmode &= ~curproc->p_fd->fd_cmask;
 
        /*
         * Depending on what you think the MNT_LOCAL flag might mean,
@@ -272,7 +275,7 @@ union_mount(struct mount *mp, char *path, caddr_t data, struct thread *td)
        vfs_add_vnodeops(mp, &mp->mnt_vn_norm_ops,
                         union_vnodeop_entries, 0);
 
-       (void)union_statfs(mp, &mp->mnt_stat, td);
+       (void)union_statfs(mp, &mp->mnt_stat, cred);
 
        return (0);
 
@@ -298,7 +301,7 @@ bad:
  * Free reference to union layer
  */
 static int
-union_unmount(struct mount *mp, int mntflags, struct thread *td)
+union_unmount(struct mount *mp, int mntflags)
 {
        struct union_mount *um = MOUNTTOUNIONMOUNT(mp);
        int error;
@@ -378,7 +381,7 @@ union_root(struct mount *mp, struct vnode **vpp)
 }
 
 static int
-union_statfs(struct mount *mp, struct statfs *sbp, struct thread *td)
+union_statfs(struct mount *mp, struct statfs *sbp, struct ucred *cred)
 {
        int error;
        struct union_mount *um = MOUNTTOUNIONMOUNT(mp);
@@ -391,7 +394,7 @@ union_statfs(struct mount *mp, struct statfs *sbp, struct thread *td)
        bzero(&mstat, sizeof(mstat));
 
        if (um->um_lowervp) {
-               error = VFS_STATFS(um->um_lowervp->v_mount, &mstat, td);
+               error = VFS_STATFS(um->um_lowervp->v_mount, &mstat, cred);
                if (error)
                        return (error);
        }
@@ -410,7 +413,7 @@ union_statfs(struct mount *mp, struct statfs *sbp, struct thread *td)
        sbp->f_files = mstat.f_files;
        sbp->f_ffree = mstat.f_ffree;
 
-       error = VFS_STATFS(um->um_uppervp->v_mount, &mstat, td);
+       error = VFS_STATFS(um->um_uppervp->v_mount, &mstat, cred);
        if (error)
                return (error);