Coda on FreeBSD problem reports?
Robert Watson
rwatson at FreeBSD.org
Fri Jan 18 17:01:05 PST 2008
On Fri, 18 Jan 2008, Robert Watson wrote:
> I've not tested it, but the attached patch may do something like what you
> want. I have some reservations about this approach, though, due to the
> above concerns.
Well, my testbox finally rebuilt, and a casual test with an ls binary in /coda
leads me to believe that exceve() now works. I've not tried any comprehensive
testing of mmap(). I also saw the lockmgr panic after a second unmount, as
well as an INVARIANTS report of leaked memory when I unloaded the Coda module
between runs. I'll take a closer look tomorrow. Assuming you're OK with this
patch as a first cut, I can commit it to FreeBSD CVS.
Robert N M Watson
Computer Laboratory
University of Cambridge
>
> Robert N M Watson
> Computer Laboratory
> University of Cambridge
>
> Index: coda_vnops.c
> ===================================================================
> RCS file: /home/ncvs/src/sys/fs/coda/coda_vnops.c,v
> retrieving revision 1.78
> diff -u -r1.78 coda_vnops.c
> --- coda_vnops.c 13 Jan 2008 14:44:02 -0000 1.78
> +++ coda_vnops.c 17 Jan 2008 15:22:12 -0000
> @@ -244,6 +244,8 @@
> if (error) {
> printf("coda_open: VOP_OPEN on container failed %d\n", error);
> return (error);
> + } else {
> + (*vpp)->v_object = vp->v_object;
> }
> /* grab (above) does this when it calls newvnode unless it's in the cache*/
>
> @@ -747,6 +749,8 @@
>
> CODADEBUG(CODA_INACTIVE, myprintf(("in inactive, %s, vfsp %p\n",
> coda_f2s(&cp->c_fid), vp->v_mount));)
> +
> + vp->v_object = NULL;
>
> /* If an array has been allocated to hold the symlink, deallocate it */
> if ((coda_symlink_cache) && (VALID_SYMLINK(cp))) {
> @@ -1552,7 +1556,7 @@
> cache_purge(vp);
> coda_free(VTOC(vp));
> vp->v_data = NULL;
> - vnode_destroy_vobject(vp);
> + vp->v_object = NULL;
> return (0);
> }
>
>
More information about the freebsd-fs
mailing list