darwin-avoid-fsref-panic-maybe-20070728
authorDerrick Brashear <shadow@dementia.org>
Sat, 28 Jul 2007 15:31:44 +0000 (15:31 +0000)
committerDerrick Brashear <shadow@dementia.org>
Sat, 28 Jul 2007 15:31:44 +0000 (15:31 +0000)
maybe this works.

src/afs/DARWIN/osi_vnodeops.c

index c3dc92c..494a11e 100644 (file)
@@ -2096,11 +2096,13 @@ afs_darwin_finalizevnode(struct vcache *avc, struct vnode *dvp, struct component
        par.vnfs_markroot = 1;
    error = vnode_create(VNCREATE_FLAVOR, VCREATESIZE, &par, &nvp);
    if (!error) {
-     vnode_addfsref(nvp);
-     avc->v = nvp;
-     avc->states &=~ CDeadVnode;
-     vnode_clearfsnode(ovp);
-     vnode_removefsref(ovp);
+       vnode_addfsref(nvp);
+       avc->v = nvp;
+       avc->states &=~ CDeadVnode;
+       if (!(avc->states & CVInit)) {
+          vnode_clearfsnode(ovp);
+          vnode_removefsref(ovp);
+       }
    }
    AFS_GLOCK();
    ReleaseWriteLock(&avc->lock);