Lines Matching defs:vnode
63 * Statistics for all vnode operations.
127 * The vnode is the focus of all file activity in UNIX.
128 * A vnode is allocated for each active file, each current
131 * Each vnode is usually associated with a file-system-specific node (for
132 * UFS, this is the in-memory inode). Generally, a vnode and an fs-node
135 * If a vnode is reused for a new file, it should be reinitialized by calling
138 * vn_reinit() resets the entire vnode as if it was returned by vn_alloc().
139 * The caller is responsible for setting up the entire vnode after calling
140 * vn_reinit(). This is important when using kmem caching where the vnode is
144 * the vnode and the associated FS-node. In UFS, for example, the inode of
155 * vnode types. VNON means no type. These values are unrelated to
175 * Used to associate additional private data with a vnode.
184 * Many of the fields in the vnode are read-only once they are initialized
185 * at vnode creation time. Other fields are protected by locks.
200 * A special lock (implemented by vn_vfswlock in vnode.c) protects:
208 * The following vnode fields are considered public and may safely be
228 typedef struct vnode {
229 kmutex_t v_lock; /* protects vnode fields */
230 uint_t v_flag; /* vnode flags (see below) */
235 enum vtype v_type; /* vnode type */
241 struct vnodeops *v_op; /* vnode operations */
242 struct page *v_pages; /* vnode pages list */
257 struct vsd_node *v_vsd; /* vnode specific data */
258 struct vnode *v_xattrdir; /* unnamed extended attr dir (GFS) */
266 /* Count of low-order 0 bits in a vnode *, based on size and alignment. */
274 * vnode flags.
277 #define VNOCACHE 0x02 /* don't keep cache pages on vnode */
282 #define VISSWAP 0x40 /* vnode is being used for swap */
283 #define VSWAPLIKE 0x80 /* vnode acts like swap (but may not be) */
303 * Used to serialize VM operations on a vnode
319 #define VPXFS 0x2000 /* clustering: global fs proxy vnode */
339 #define VISSWAPFS 0x20000 /* vnode is being used for swapfs */
343 * vnode's v_flag field. If this changes, cache the additional
348 #define V_SYSATTR 0x40000 /* vnode is a GFS system attribute */
365 vtype_t va_type; /* vnode type (for create) */
493 vtype_t va_type; /* vnode type (for create) */
715 * Flags for vnode operations.
730 VE_RENAME_SRC = 1, /* Rename, with vnode as source */
731 VE_RENAME_DEST = 2, /* Rename, with vnode as target/destination */
732 VE_REMOVE = 3, /* Remove of vnode's name */
733 VE_RMDIR = 4, /* Remove of directory vnode's name */
734 VE_CREATE = 5, /* Create with vnode's name which exists */
735 VE_LINK = 6, /* Link with vnode's name as source */
736 VE_RENAME_DEST_DIR = 7, /* Rename with vnode as target dir */
737 VE_MOUNTEDOVER = 8, /* File or Filesystem got mounted over vnode */
742 * Values for checking vnode open and map counts
776 * Structure used by various vnode operations to determine
782 * vnode/vfs operations or (FEM) monitors on those operations. New
817 * VNODE_OPS defines all the vnode operations. It is used to define
938 VNODE_OPS; /* Signatures of all vnode operations (vops) */
1192 #define V_WRITELOCK_TRUE (1) /* Request write-lock on the vnode */
1193 #define V_WRITELOCK_FALSE (0) /* Request read-lock on the vnode */
1203 * Public vnode manipulation functions.
1241 struct vnode **vpp, enum create crwhy, mode_t umask);
1243 struct vnode **vpp, enum create crwhy,
1244 mode_t umask, struct vnode *startvp, int fd);
1246 enum vcexcl excl, int mode, struct vnode **vpp,
1249 enum vcexcl excl, int mode, struct vnode **vpp,
1250 enum create why, int flag, mode_t umask, struct vnode *startvp);
1251 int vn_rdwr(enum uio_rw rw, struct vnode *vp, caddr_t base, ssize_t len,
1254 void vn_rele(struct vnode *vp);
1255 void vn_rele_async(struct vnode *vp, struct taskq *taskq);
1256 void vn_rele_dnlc(struct vnode *vp);
1257 void vn_rele_stream(struct vnode *vp);
1268 int vn_vfswlock(struct vnode *vp);
1269 int vn_vfswlock_wait(struct vnode *vp);
1270 int vn_vfsrlock(struct vnode *vp);
1271 int vn_vfsrlock_wait(struct vnode *vp);
1272 void vn_vfsunlock(struct vnode *vp);
1273 int vn_vfswlock_held(struct vnode *vp);
1274 vnode_t *specvp(struct vnode *vp, dev_t dev, vtype_t type, struct cred *cr);
1280 void vn_copypath(struct vnode *src, struct vnode *dst);
1281 void vn_setpath_str(struct vnode *vp, const char *str, size_t len);
1282 void vn_setpath(vnode_t *rootvp, struct vnode *startvp, struct vnode *vp,
1306 * Extensible vnode attribute (xva) routines:
1362 extern struct vnode kvps[];
1365 KV_KVP, /* vnode for all segkmem pages */
1366 KV_ZVP, /* vnode for all ZFS pages */
1368 KV_MPVP, /* vnode for all page_t meta-pages */
1369 KV_PROMVP, /* vnode for all PROM pages */
1387 #define ATTR_TRIGGER 0x40 /* Mount first if vnode is a trigger mount */
1395 #define NULLVP ((struct vnode *)0)
1396 #define NULLVPP ((struct vnode **)0)
1405 struct vnode *a_vp; /* vnode pointer */