summaryrefslogtreecommitdiffstats
path: root/freebsd/sys/sys/vnode.h
diff options
context:
space:
mode:
Diffstat (limited to 'freebsd/sys/sys/vnode.h')
-rw-r--r--freebsd/sys/sys/vnode.h13
1 files changed, 10 insertions, 3 deletions
diff --git a/freebsd/sys/sys/vnode.h b/freebsd/sys/sys/vnode.h
index a047bc67..5400fe1c 100644
--- a/freebsd/sys/sys/vnode.h
+++ b/freebsd/sys/sys/vnode.h
@@ -76,8 +76,8 @@ struct vpollinfo {
*
* Lock reference:
* c - namecache mutex
- * f - freelist mutex
* i - interlock
+ * l - mp mnt_listmtx or freelist mutex
* I - updated with atomics, 0->1 and 1->0 transitions with interlock held
* m - mount point interlock
* p - pollinfo lock
@@ -145,7 +145,7 @@ struct vnode {
/*
* The machinery of being a vnode
*/
- TAILQ_ENTRY(vnode) v_actfreelist; /* f vnode active/free lists */
+ TAILQ_ENTRY(vnode) v_actfreelist; /* l vnode active/free lists */
struct bufobj v_bufobj; /* * Buffer cache object */
/*
@@ -168,6 +168,7 @@ struct vnode {
u_int v_usecount; /* I ref count of users */
u_int v_iflag; /* i vnode flags (see below) */
u_int v_vflag; /* v vnode flags */
+ u_int v_mflag; /* l mnt-specific vnode flags */
int v_writecount; /* v ref count of writers */
u_int v_hash;
enum vtype v_type; /* u vnode type */
@@ -180,6 +181,8 @@ struct vnode {
#define v_rdev v_un.vu_cdev
#define v_fifoinfo v_un.vu_fifoinfo
+#define bo2vnode(bo) __containerof((bo), struct vnode, v_bufobj)
+
/* XXX: These are temporary to avoid a source sweep at this time */
#define v_object v_bufobj.bo_object
@@ -255,6 +258,8 @@ struct xvnode {
#define VV_MD 0x0800 /* vnode backs the md device */
#define VV_FORCEINSMQ 0x1000 /* force the insmntque to succeed */
+#define VMP_TMPMNTFREELIST 0x0001 /* Vnode is on mnt's tmp free list */
+
/*
* Vnode attributes. A field value of VNOVAL represents a field whose value
* is unavailable (getattr) or which is not to be changed (setattr).
@@ -303,6 +308,7 @@ struct vattr {
#define IO_INVAL 0x0040 /* invalidate after I/O */
#define IO_SYNC 0x0080 /* do I/O synchronously */
#define IO_DIRECT 0x0100 /* attempt to bypass buffer cache */
+#define IO_NOREUSE 0x0200 /* VMIO data won't be reused */
#define IO_EXT 0x0400 /* operate on external attributes */
#define IO_NORMAL 0x0800 /* operate on regular data */
#define IO_NOMACCHECK 0x1000 /* MAC checks unnecessary */
@@ -604,7 +610,7 @@ int cache_lookup(struct vnode *dvp, struct vnode **vpp,
struct componentname *cnp, struct timespec *tsp, int *ticksp);
void cache_purge(struct vnode *vp);
void cache_purge_negative(struct vnode *vp);
-void cache_purgevfs(struct mount *mp);
+void cache_purgevfs(struct mount *mp, bool force);
int change_dir(struct vnode *vp, struct thread *td);
void cvtstat(struct stat *st, struct ostat *ost);
void cvtnstat(struct stat *sb, struct nstat *nsb);
@@ -655,6 +661,7 @@ int vtruncbuf(struct vnode *vp, struct ucred *cred, off_t length,
void vunref(struct vnode *);
void vn_printf(struct vnode *vp, const char *fmt, ...) __printflike(2,3);
int vrecycle(struct vnode *vp);
+int vrecyclel(struct vnode *vp);
int vn_bmap_seekhole(struct vnode *vp, u_long cmd, off_t *off,
struct ucred *cred);
int vn_close(struct vnode *vp,