diff options
author | jeff <jeff@FreeBSD.org> | 2005-03-13 11:44:02 +0000 |
---|---|---|
committer | jeff <jeff@FreeBSD.org> | 2005-03-13 11:44:02 +0000 |
commit | cdbe6ef76b82209a66609e4fde28fc58f7cda42a (patch) | |
tree | 48499373a3ecb93c54eeaffe7f3e18421445a0c6 /sys/sys/vnode.h | |
parent | 175891c4ffaae65c73a6a0ebb8477af9e40b5993 (diff) | |
download | FreeBSD-src-cdbe6ef76b82209a66609e4fde28fc58f7cda42a.zip FreeBSD-src-cdbe6ef76b82209a66609e4fde28fc58f7cda42a.tar.gz |
- Get rid of VXLOCK, VXWANT, and vx_*. The vnode lock now protects us
against recycling.
- Modify VSHOULDFREE, VCANRECYCLE, etc. now that certain flags are no
longer important. Remove VMIGHTFREE as it is only used in one place.
Sponsored by: Isilon Systems, Inc.
Diffstat (limited to 'sys/sys/vnode.h')
-rw-r--r-- | sys/sys/vnode.h | 31 |
1 files changed, 10 insertions, 21 deletions
diff --git a/sys/sys/vnode.h b/sys/sys/vnode.h index 9279838..72744cd 100644 --- a/sys/sys/vnode.h +++ b/sys/sys/vnode.h @@ -96,7 +96,7 @@ struct vpollinfo { * 2) Lock interlock so that the vnode does not go away. * 3) Unlock the list to avoid lock order reversals. * 4) vget with LK_INTERLOCK and check for ENOENT, or - * 5) Check for XLOCK if the vnode lock is not required. + * 5) Check for DOOMED if the vnode lock is not required. * 6) Perform your operation, then vput(). * * XXX Not all fields are locked yet and some fields that are marked are not @@ -161,7 +161,7 @@ struct vnode { #endif int v_holdcnt; /* i page & buffer references */ int v_usecount; /* i ref count of users */ - struct thread *v_vxthread; /* i thread owning VXLOCK */ + struct thread *v_vxthread; /* i thread running vgone. */ u_long v_iflag; /* i vnode flags (see below) */ u_long v_vflag; /* v vnode flags */ int v_writecount; /* v ref count of writers */ @@ -232,8 +232,6 @@ struct xvnode { * VI flags are protected by interlock and live in v_iflag * VV flags are protected by the vnode lock and live in v_vflag */ -#define VI_XLOCK 0x0001 /* vnode is locked to change vtype */ -#define VI_XWANT 0x0002 /* thread is waiting for vnode */ #define VI_OLOCK 0x0008 /* vnode is locked waiting for an object */ #define VI_OWANT 0x0010 /* a thread is waiting for VOLOCK */ #define VI_MOUNT 0x0020 /* Mount in progress */ @@ -390,26 +388,20 @@ extern struct vattr va_null; /* predefined null vattr structure */ extern void (*lease_updatetime)(int deltat); /* Requires interlock. */ -#define VCANRECYCLE(vp) \ - (!((vp)->v_iflag & (VI_DOOMED|VI_DOINGINACT|VI_XLOCK)) && \ - ((vp)->v_iflag & VI_FREE) && \ +#define VCANRECYCLE(vp) \ + (((vp)->v_iflag & VI_FREE) && \ !(vp)->v_holdcnt && !(vp)->v_usecount) /* Requires interlock. */ -#define VSHOULDFREE(vp) \ - (!((vp)->v_iflag & (VI_FREE|VI_DOOMED|VI_DOINGINACT)) && \ - !(vp)->v_holdcnt && !(vp)->v_usecount && \ - (!(vp)->v_object || \ +#define VSHOULDFREE(vp) \ + (!((vp)->v_iflag & VI_FREE) && \ + !(vp)->v_holdcnt && !(vp)->v_usecount && \ + (!(vp)->v_object || \ !((vp)->v_object->ref_count || (vp)->v_object->resident_page_count))) /* Requires interlock. */ -#define VMIGHTFREE(vp) \ - (!((vp)->v_iflag & (VI_FREE|VI_DOOMED|VI_XLOCK|VI_DOINGINACT)) && \ - LIST_EMPTY(&(vp)->v_cache_src) && !(vp)->v_usecount) - -/* Requires interlock. */ -#define VSHOULDBUSY(vp) \ - (((vp)->v_iflag & VI_FREE) && \ +#define VSHOULDBUSY(vp) \ + (((vp)->v_iflag & VI_FREE) && \ ((vp)->v_holdcnt || (vp)->v_usecount)) #define VI_LOCK(vp) mtx_lock(&(vp)->v_interlock) @@ -699,9 +691,6 @@ void vref(struct vnode *vp); int vrefcnt(struct vnode *vp); void v_addpollinfo(struct vnode *vp); -int vx_wait(struct vnode *vp); -int vx_waitl(struct vnode *vp); - int vnode_create_vobject(struct vnode *vp, size_t size, struct thread *td); void vnode_destroy_vobject(struct vnode *vp); |