kernel - Remove kernel-level ccms module (it will be moved into hammer2)
[dragonfly.git] / sys / sys / vnode.h
index fd95f86..7a11631 100644 (file)
@@ -79,9 +79,6 @@
 #ifndef _SYS_SYSREF_H_
 #include <sys/sysref.h>
 #endif
-#ifndef _SYS_CCMS_H_
-#include <sys/ccms.h>
-#endif
 #ifndef _MACHINE_LOCK_H_
 #include <machine/lock.h>
 #endif
@@ -144,16 +141,17 @@ struct mountctl_opt {
  *      associated with the vnode.  Otherwise it will be set to NOOFFSET.
  *
  * NOTE: The following fields require a spin or token lock.  Note that
- *      additional subsystems may use v_token or v_spinlock for other
+ *      additional subsystems may use v_token or v_spin for other
  *      purposes, e.g. vfs/fifofs/fifo_vnops.c
  *
- *      v_namecache    v_spinlock
+ *      v_namecache    v_spin
  *      v_rb*          v_token
  */
 RB_HEAD(buf_rb_tree, buf);
 RB_HEAD(buf_rb_hash, buf);
 
 struct vnode {
+       struct spinlock v_spin;
        int     v_flag;                         /* vnode flags (see below) */
        int     v_writecount;
        int     v_opencount;                    /* number of explicit opens */
@@ -196,7 +194,7 @@ struct vnode {
                struct  kqinfo vpi_kqinfo;      /* identity of poller(s) */
        } v_pollinfo;
        struct vmresident *v_resident;          /* optional vmresident */
-       struct ccms_dataspace v_ccms;           /* cache coherency */
+       struct mount *v_pfsmp;                  /* real mp for pfs/nullfs mt */
 #ifdef DEBUG_LOCKS
        const char *filename;                   /* Source file doing locking */
        int line;                               /* Line number doing locking */
@@ -208,7 +206,6 @@ struct vnode {
 #define        v_rdev          v_un.vu_cdev.vu_cdevinfo
 #define        v_cdevnext      v_un.vu_cdev.vu_cdevnext
 #define        v_fifoinfo      v_un.vu_fifoinfo
-#define        v_spinlock      v_lock.lk_spinlock
 
 /*
  * Vnode flags.
@@ -396,6 +393,7 @@ struct ucred;
 struct uio;
 struct vattr;
 struct vnode;
+struct syncer_ctx;
 
 struct vnode *getsynthvnode(const char *devname);
 void   addaliasu (struct vnode *vp, int x, int y);
@@ -432,7 +430,8 @@ int vrevoke (struct vnode *vp, struct ucred *cred);
 int    vinvalbuf (struct vnode *vp, int save, int slpflag, int slptimeo);
 int    vtruncbuf (struct vnode *vp, off_t length, int blksize);
 void   vnode_pager_setsize (struct vnode *, vm_ooffset_t);
-int    nvtruncbuf (struct vnode *vp, off_t length, int blksize, int boff);
+int    nvtruncbuf (struct vnode *vp, off_t length, int blksize, int boff,
+               int trivial);
 int    nvextendbuf(struct vnode *vp, off_t olength, off_t nlength,
                int oblksize, int nblksize,
                int oboff, int nboff, int trivial);
@@ -450,17 +449,25 @@ int       vn_cache_strategy(struct vnode *vp, struct bio *bio);
 int    vn_close (struct vnode *vp, int flags);
 void   vn_gone (struct vnode *vp);
 int    vn_isdisk (struct vnode *vp, int *errp);
-int    vn_lock (struct vnode *vp, int flags);
 int    vn_islocked (struct vnode *vp);
 int    vn_islocked_unlock (struct vnode *vp);
 void   vn_islocked_relock (struct vnode *vp, int vpls);
+int    vn_lock (struct vnode *vp, int flags);
 void   vn_unlock (struct vnode *vp);
+
 #ifdef DEBUG_LOCKS
 int    debug_vn_lock (struct vnode *vp, int flags,
                const char *filename, int line);
 #define vn_lock(vp,flags)      debug_vn_lock(vp, flags, __FILE__, __LINE__)
 #endif
 
+/*#define DEBUG_VN_UNLOCK*/
+#ifdef DEBUG_VN_UNLOCK
+void   debug_vn_unlock (struct vnode *vp,
+               const char *filename, int line);
+#define vn_unlock(vp)          debug_vn_unlock(vp, __FILE__, __LINE__)
+#endif
+
 int    vn_get_namelen(struct vnode *, int *);
 void   vn_setspecops (struct file *fp);
 int    vn_fullpath (struct proc *p, struct vnode *vn, char **retbuf, char **freebuf, int guess);
@@ -525,6 +532,12 @@ void       vrele (struct vnode *vp);
 void   vsetflags (struct vnode *vp, int flags);
 void   vclrflags (struct vnode *vp, int flags);
 
+/*#define DEBUG_VPUT*/
+#ifdef DEBUG_VPUT
+void   debug_vput (struct vnode *vp, const char *filename, int line);
+#define vput(vp)               debug_vput(vp, __FILE__, __LINE__)
+#endif
+
 void   vfs_subr_init(void);
 void   vfs_mount_init(void);
 void   vfs_lock_init(void);
@@ -533,6 +546,10 @@ void       mount_init(struct mount *mp);
 
 void   vn_syncer_add(struct vnode *, int);
 void   vn_syncer_remove(struct vnode *);
+void   vn_syncer_thr_create(struct mount *);
+void   *vn_syncer_thr_getctx(struct mount *);
+void   vn_syncer_thr_stop(void *);
+
 void   vnlru_proc_wait(void);
 
 extern struct vop_ops default_vnode_vops;