| 3084 | } |
| 3085 | |
| 3086 | static void |
| 3087 | vdefer_inactive(struct vnode *vp) |
| 3088 | { |
| 3089 | |
| 3090 | ASSERT_VI_LOCKED(vp, __func__); |
| 3091 | VNASSERT(vp->v_holdcnt > 0, vp, |
| 3092 | ("%s: vnode without hold count", __func__)); |
| 3093 | if (VN_IS_DOOMED(vp)) { |
| 3094 | vdropl(vp); |
| 3095 | return; |
| 3096 | } |
| 3097 | if (vp->v_iflag & VI_DEFINACT) { |
| 3098 | VNASSERT(vp->v_holdcnt > 1, vp, ("lost hold count")); |
| 3099 | vdropl(vp); |
| 3100 | return; |
| 3101 | } |
| 3102 | if (vp->v_usecount > 0) { |
| 3103 | vp->v_iflag &= ~VI_OWEINACT; |
| 3104 | vdropl(vp); |
| 3105 | return; |
| 3106 | } |
| 3107 | vlazy(vp); |
| 3108 | vp->v_iflag |= VI_DEFINACT; |
| 3109 | VI_UNLOCK(vp); |
| 3110 | counter_u64_add(deferred_inact, 1); |
| 3111 | } |
| 3112 | |
| 3113 | static void |
| 3114 | vdefer_inactive_unlocked(struct vnode *vp) |
no test coverage detected