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