]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/vfs/kpi_vfs.c
xnu-1228.5.18.tar.gz
[apple/xnu.git] / bsd / vfs / kpi_vfs.c
index a1832c53215a50a32d84d1d7ef58c3ceb39b265f..79e526ef21e206a13dda1b7f37a35a6b32f7b092 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000-2007 Apple Inc. All rights reserved.
+ * Copyright (c) 2000-2008 Apple Inc. All rights reserved.
  *
  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
  * 
@@ -4357,6 +4357,21 @@ VNOP_INACTIVE(struct vnode *vp, vfs_context_t ctx)
        if (!thread_safe) {
                unlock_fsnode(vp, &funnel_state);
        }
+
+#if NAMEDSTREAMS
+       /* For file systems that do not support namedstreams natively, mark
+        * the shadow stream file vnode to be recycled as soon as the last
+        * reference goes away. To avoid re-entering reclaim code, do not
+        * call recycle on terminating named stream vnodes.
+        */
+       if (vnode_isnamedstream(vp) &&
+                       (vp->v_parent != NULLVP) &&
+                       ((vp->v_parent->v_mount->mnt_kern_flag & MNTK_NAMED_STREAMS) == 0) &&
+                       ((vp->v_lflag & VL_TERMINATE) == 0)) {
+               vnode_recycle(vp);
+       }
+#endif
+
        return (_err);
 }