proc->thread stage 4: rework the VFS and DEVICE subsystems to take thread
[dragonfly.git] / sys / vfs / coda / coda_vfsops.c
index 8c46281..b07dc52 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.3 2003/06/23 17:55:26 dillon Exp $
+ * $DragonFly: src/sys/vfs/coda/Attic/coda_vfsops.c,v 1.4 2003/06/25 03:55:44 dillon Exp $
  * 
  */
 
@@ -109,12 +109,12 @@ coda_vfsopstats_init(void)
  */
 /*ARGSUSED*/
 int
-coda_mount(vfsp, path, data, ndp, p)
+coda_mount(vfsp, path, data, ndp, td)
     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 nameidata *ndp;     /* Clobber this to lookup the device name */
-    struct proc *p;            /* The ever-famous proc pointer */
+    struct thread *td;         /* The ever-famous proc pointer */
 {
     struct vnode *dvp;
     struct cnode *cp;
@@ -137,7 +137,7 @@ coda_mount(vfsp, path, data, ndp, p)
     }
     
     /* Validate mount device.  Similar to getmdev(). */
-    NDINIT(ndp, LOOKUP, FOLLOW, UIO_USERSPACE, data, p);
+    NDINIT(ndp, LOOKUP, FOLLOW, UIO_USERSPACE, data, td);
     error = namei(ndp);
     dvp = ndp->ni_vp;
 
@@ -235,10 +235,10 @@ coda_mount(vfsp, path, data, ndp, p)
 }
 
 int
-coda_unmount(vfsp, mntflags, p)
+coda_unmount(vfsp, mntflags, td)
     struct mount *vfsp;
     int mntflags;
-    struct proc *p;
+    struct thread *td;
 {
     struct coda_mntinfo *mi = vftomi(vfsp);
     int active, error = 0;
@@ -294,9 +294,13 @@ coda_root(vfsp, vpp)
     struct coda_mntinfo *mi = vftomi(vfsp);
     struct vnode **result;
     int error;
-    struct proc *p = curproc;    /* XXX - bnoble */
+    struct thread *td = curthread;    /* XXX - bnoble */
+    struct ucred *cred;
     ViceFid VFid;
 
+    KKASSERT(td->td_proc);
+    cred = td->td_proc->p_ucred;
+
     ENTRY;
     MARK_ENTRY(CODA_ROOT_STATS);
     result = NULL;
@@ -310,16 +314,16 @@ coda_root(vfsp, vpp)
                /* On Mach, this is vref.  On NetBSD, VOP_LOCK */
 #if    1
                vref(*vpp);
-               vn_lock(*vpp, LK_EXCLUSIVE, p);
+               vn_lock(*vpp, LK_EXCLUSIVE, td);
 #else
-               vget(*vpp, LK_EXCLUSIVE, p);
+               vget(*vpp, LK_EXCLUSIVE, td);
 #endif
                MARK_INT_SAT(CODA_ROOT_STATS);
                return(0);
            }
     }
 
-    error = venus_root(vftomi(vfsp), p->p_ucred, p, &VFid);
+    error = venus_root(vftomi(vfsp), cred, td, &VFid);
 
     if (!error) {
        /*
@@ -333,9 +337,9 @@ coda_root(vfsp, vpp)
        *vpp = mi->mi_rootvp;
 #if    1
        vref(*vpp);
-       vn_lock(*vpp, LK_EXCLUSIVE, p);
+       vn_lock(*vpp, LK_EXCLUSIVE, td);
 #else
-       vget(*vpp, LK_EXCLUSIVE, p);
+       vget(*vpp, LK_EXCLUSIVE, td);
 #endif
 
        MARK_INT_SAT(CODA_ROOT_STATS);
@@ -353,9 +357,9 @@ coda_root(vfsp, vpp)
        *vpp = mi->mi_rootvp;
 #if    1
        vref(*vpp);
-       vn_lock(*vpp, LK_EXCLUSIVE, p);
+       vn_lock(*vpp, LK_EXCLUSIVE, td);
 #else
-       vget(*vpp, LK_EXCLUSIVE, p);
+       vget(*vpp, LK_EXCLUSIVE, td);
 #endif
 
        MARK_INT_FAIL(CODA_ROOT_STATS);
@@ -376,10 +380,10 @@ coda_root(vfsp, vpp)
  * Get file system statistics.
  */
 int
-coda_nb_statfs(vfsp, sbp, p)
+coda_nb_statfs(vfsp, sbp, td)
     register struct mount *vfsp;
     struct statfs *sbp;
-    struct proc *p;
+    struct thread *td;
 {
     ENTRY;
 /*  MARK_ENTRY(CODA_STATFS_STATS); */
@@ -414,11 +418,11 @@ coda_nb_statfs(vfsp, sbp, p)
  * Flush any pending I/O.
  */
 int
-coda_sync(vfsp, waitfor, cred, p)
+coda_sync(vfsp, waitfor, cred, td)
     struct mount *vfsp;
     int    waitfor;
     struct ucred *cred;
-    struct proc *p;
+    struct thread *td;
 {
     ENTRY;
     MARK_ENTRY(CODA_SYNC_STATS);
@@ -443,10 +447,14 @@ coda_fhtovp(vfsp, fhp, nam, vpp, exflagsp, creadanonp)
     struct cfid *cfid = (struct cfid *)fhp;
     struct cnode *cp = 0;
     int error;
-    struct proc *p = curproc; /* XXX -mach */
+    struct thread *td = curthread; /* XXX -mach */
+    struct ucred *cred;
     ViceFid VFid;
     int vtype;
 
+    KKASSERT(td->td_proc);
+    cred = td->td_proc->p_ucred;
+
     ENTRY;
     
     MARK_ENTRY(CODA_VGET_STATS);
@@ -458,7 +466,7 @@ coda_fhtovp(vfsp, fhp, nam, vpp, exflagsp, creadanonp)
        return(0);
     }
     
-    error = venus_fhtovp(vftomi(vfsp), &cfid->cfid_fid, p->p_ucred, p, &VFid, &vtype);
+    error = venus_fhtovp(vftomi(vfsp), &cfid->cfid_fid, cred, td, &VFid, &vtype);
     
     if (error) {
        CODADEBUG(CODA_VGET, myprintf(("vget error %d\n",error));)