Module Name: src Committed By: hannken Date: Sat Dec 13 15:59:03 UTC 2014
Modified Files: src/sys/coda: coda_vnops.c Log Message: Remove cnodes from coda_reclaim(), not from coda_inactive(). To generate a diff of this commit: cvs rdiff -u -r1.99 -r1.100 src/sys/coda/coda_vnops.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/coda/coda_vnops.c diff -u src/sys/coda/coda_vnops.c:1.99 src/sys/coda/coda_vnops.c:1.100 --- src/sys/coda/coda_vnops.c:1.99 Sat Dec 13 15:57:46 2014 +++ src/sys/coda/coda_vnops.c Sat Dec 13 15:59:03 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: coda_vnops.c,v 1.99 2014/12/13 15:57:46 hannken Exp $ */ +/* $NetBSD: coda_vnops.c,v 1.100 2014/12/13 15:59:03 hannken Exp $ */ /* * @@ -46,7 +46,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: coda_vnops.c,v 1.99 2014/12/13 15:57:46 hannken Exp $"); +__KERNEL_RCSID(0, "$NetBSD: coda_vnops.c,v 1.100 2014/12/13 15:59:03 hannken Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -844,18 +844,6 @@ coda_inactive(void *v) CODADEBUG(CODA_INACTIVE, myprintf(("in inactive, %s, vfsp %p\n", coda_f2s(&cp->c_fid), vp->v_mount));) - /* If an array has been allocated to hold the symlink, deallocate it */ - if ((coda_symlink_cache) && (VALID_SYMLINK(cp))) { - if (cp->c_symlink == NULL) - panic("%s: null symlink pointer in cnode", __func__); - - CODA_FREE(cp->c_symlink, cp->c_symlen); - cp->c_flags &= ~C_SYMLINK; - cp->c_symlen = 0; - } - - /* Remove it from the table so it can't be found. */ - coda_unsave(cp); if (vp->v_mount->mnt_data == NULL) { myprintf(("Help! vfsp->vfs_data was NULL, but vnode %p wasn't dying\n", vp)); panic("badness in coda_inactive"); @@ -1676,6 +1664,18 @@ coda_reclaim(void *v) } #endif } + /* If an array has been allocated to hold the symlink, deallocate it */ + if ((coda_symlink_cache) && (VALID_SYMLINK(cp))) { + if (cp->c_symlink == NULL) + panic("%s: null symlink pointer in cnode", __func__); + + CODA_FREE(cp->c_symlink, cp->c_symlen); + cp->c_flags &= ~C_SYMLINK; + cp->c_symlen = 0; + } + + /* Remove it from the table so it can't be found. */ + coda_unsave(cp); coda_free(VTOC(vp)); SET_VTOC(vp) = NULL; return (0);