Changeset View
Changeset View
Standalone View
Standalone View
head/sys/sys/vnode.h
| Show First 20 Lines • Show All 52 Lines • ▼ Show 20 Lines | |||||
| */ | */ | ||||
| /* | /* | ||||
| * Vnode types. VNON means no type. | * Vnode types. VNON means no type. | ||||
| */ | */ | ||||
| enum vtype { VNON, VREG, VDIR, VBLK, VCHR, VLNK, VSOCK, VFIFO, VBAD, | enum vtype { VNON, VREG, VDIR, VBLK, VCHR, VLNK, VSOCK, VFIFO, VBAD, | ||||
| VMARKER }; | VMARKER }; | ||||
| enum vgetstate { VGET_HOLDCNT, VGET_USECOUNT }; | enum vgetstate { VGET_NONE, VGET_HOLDCNT, VGET_USECOUNT }; | ||||
| /* | /* | ||||
| * Each underlying filesystem allocates its own private area and hangs | * Each underlying filesystem allocates its own private area and hangs | ||||
| * it from v_data. If non-null, this area is freed in getnewvnode(). | * it from v_data. If non-null, this area is freed in getnewvnode(). | ||||
| */ | */ | ||||
| struct namecache; | struct namecache; | ||||
| struct vpollinfo { | struct vpollinfo { | ||||
| ▲ Show 20 Lines • Show All 161 Lines • ▼ Show 20 Lines | |||||
| /* | /* | ||||
| * Vnode flags. | * Vnode flags. | ||||
| * VI flags are protected by interlock and live in v_iflag | * VI flags are protected by interlock and live in v_iflag | ||||
| * VV flags are protected by the vnode lock and live in v_vflag | * VV flags are protected by the vnode lock and live in v_vflag | ||||
| * | * | ||||
| * VIRF_DOOMED is doubly protected by the interlock and vnode lock. Both | * VIRF_DOOMED is doubly protected by the interlock and vnode lock. Both | ||||
| * are required for writing but the status may be checked with either. | * are required for writing but the status may be checked with either. | ||||
| */ | */ | ||||
| #define VHOLD_NO_SMR (1<<29) /* Disable vhold_smr */ | |||||
| #define VHOLD_ALL_FLAGS (VHOLD_NO_SMR) | |||||
| #define VIRF_DOOMED 0x0001 /* This vnode is being recycled */ | #define VIRF_DOOMED 0x0001 /* This vnode is being recycled */ | ||||
| #define VI_TEXT_REF 0x0001 /* Text ref grabbed use ref */ | #define VI_TEXT_REF 0x0001 /* Text ref grabbed use ref */ | ||||
| #define VI_MOUNT 0x0020 /* Mount in progress */ | #define VI_MOUNT 0x0020 /* Mount in progress */ | ||||
| #define VI_DOINGINACT 0x0800 /* VOP_INACTIVE is in progress */ | #define VI_DOINGINACT 0x0800 /* VOP_INACTIVE is in progress */ | ||||
| #define VI_OWEINACT 0x1000 /* Need to call inactive */ | #define VI_OWEINACT 0x1000 /* Need to call inactive */ | ||||
| #define VI_DEFINACT 0x2000 /* deferred inactive */ | #define VI_DEFINACT 0x2000 /* deferred inactive */ | ||||
| ▲ Show 20 Lines • Show All 405 Lines • ▼ Show 20 Lines | int vaccess_acl_posix1e(enum vtype type, uid_t file_uid, | ||||
| struct ucred *cred, int *privused); | struct ucred *cred, int *privused); | ||||
| void vattr_null(struct vattr *vap); | void vattr_null(struct vattr *vap); | ||||
| int vcount(struct vnode *vp); | int vcount(struct vnode *vp); | ||||
| void vlazy(struct vnode *); | void vlazy(struct vnode *); | ||||
| void vdrop(struct vnode *); | void vdrop(struct vnode *); | ||||
| void vdropl(struct vnode *); | void vdropl(struct vnode *); | ||||
| int vflush(struct mount *mp, int rootrefs, int flags, struct thread *td); | int vflush(struct mount *mp, int rootrefs, int flags, struct thread *td); | ||||
| int vget(struct vnode *vp, int flags, struct thread *td); | int vget(struct vnode *vp, int flags, struct thread *td); | ||||
| enum vgetstate vget_prep_smr(struct vnode *vp); | |||||
| enum vgetstate vget_prep(struct vnode *vp); | enum vgetstate vget_prep(struct vnode *vp); | ||||
| int vget_finish(struct vnode *vp, int flags, enum vgetstate vs); | int vget_finish(struct vnode *vp, int flags, enum vgetstate vs); | ||||
| void vgone(struct vnode *vp); | void vgone(struct vnode *vp); | ||||
| void vhold(struct vnode *); | void vhold(struct vnode *); | ||||
| void vholdl(struct vnode *); | void vholdl(struct vnode *); | ||||
| void vholdnz(struct vnode *); | void vholdnz(struct vnode *); | ||||
| bool vhold_smr(struct vnode *); | |||||
| void vinactive(struct vnode *vp); | void vinactive(struct vnode *vp); | ||||
| int vinvalbuf(struct vnode *vp, int save, int slpflag, int slptimeo); | int vinvalbuf(struct vnode *vp, int save, int slpflag, int slptimeo); | ||||
| int vtruncbuf(struct vnode *vp, off_t length, int blksize); | int vtruncbuf(struct vnode *vp, off_t length, int blksize); | ||||
| void v_inval_buf_range(struct vnode *vp, daddr_t startlbn, daddr_t endlbn, | void v_inval_buf_range(struct vnode *vp, daddr_t startlbn, daddr_t endlbn, | ||||
| int blksize); | int blksize); | ||||
| void vunref(struct vnode *); | void vunref(struct vnode *); | ||||
| void vn_printf(struct vnode *vp, const char *fmt, ...) __printflike(2,3); | void vn_printf(struct vnode *vp, const char *fmt, ...) __printflike(2,3); | ||||
| int vrecycle(struct vnode *vp); | int vrecycle(struct vnode *vp); | ||||
| ▲ Show 20 Lines • Show All 294 Lines • ▼ Show 20 Lines | int _error; \ | ||||
| _error; \ | _error; \ | ||||
| }) | }) | ||||
| #include <sys/kernel.h> | #include <sys/kernel.h> | ||||
| #define VFS_VOP_VECTOR_REGISTER(vnodeops) \ | #define VFS_VOP_VECTOR_REGISTER(vnodeops) \ | ||||
| SYSINIT(vfs_vector_##vnodeops##_f, SI_SUB_VFS, SI_ORDER_ANY, \ | SYSINIT(vfs_vector_##vnodeops##_f, SI_SUB_VFS, SI_ORDER_ANY, \ | ||||
| vfs_vector_op_register, &vnodeops) | vfs_vector_op_register, &vnodeops) | ||||
| #define VFS_SMR_DECLARE \ | |||||
| extern smr_t vfs_smr | |||||
| #define VFS_SMR() vfs_smr | |||||
| #define vfs_smr_enter() smr_enter(VFS_SMR()) | |||||
| #define vfs_smr_exit() smr_exit(VFS_SMR()) | |||||
| #define VFS_SMR_ASSERT_ENTERED() SMR_ASSERT_ENTERED(VFS_SMR()) | |||||
| #define VFS_SMR_ASSERT_NOT_ENTERED() SMR_ASSERT_NOT_ENTERED(VFS_SMR()) | |||||
| #define VFS_SMR_ZONE_SET(zone) uma_zone_set_smr((zone), VFS_SMR()) | |||||
| #endif /* _KERNEL */ | #endif /* _KERNEL */ | ||||
| #endif /* !_SYS_VNODE_H_ */ | #endif /* !_SYS_VNODE_H_ */ | ||||