Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 27 May 2011 19:03:08 -0400 (EDT)
From:      Rick Macklem <rmacklem@uoguelph.ca>
To:        Goran Lowkrantz <glz@hidden-powers.com>
Cc:        freebsd-current@freebsd.org
Subject:   Re: Testing new nfs and VIMAGE
Message-ID:  <1297732809.928917.1306537388344.JavaMail.root@erie.cs.uoguelph.ca>
In-Reply-To: <BF1CE7DB96DCAD7822BCAB48@syn>

next in thread | previous in thread | raw e-mail | index | archive | help

[-- Attachment #1 --]
> And the attached core.txt got eaten.
> <http://people.hidden-powers.com/~glz/core.txt.3>;
> 
> /glz
> 
> --On May 27, 2011 10:37:32 +0200 Goran Lowkrantz
> <glz@hidden-powers.com>
> wrote:
> 
> >
> > I have been testing VIMAGE a lot lately to see how it works an all
> > my
> > test cases works as expected except when I use NFSv4 from an NFS
> > client
> > with a kerrel with VIMAGE enabled.
> >
> > All other permutations work and this error is very specific. All
> > crashes
> > occurs when trying to read or write to an NFS v4 volume. I have seen
> > it
> > on both i386 and amd64.
> >
> ># 12 0xc0a73c15 in rt_tables_get_rnh (table=0, fam=2)
> >     at /usr/src/sys/net/route.c:153
> >
> >
> > static __inline struct radix_node_head **
> > rt_tables_get_rnh_ptr(int table, int fam)
> > {
> >         struct radix_node_head **rnh;
> >
> >         KASSERT(table >= 0 && table < rt_numfibs, ("%s: table out of
> > bounds.",
> >             __func__));
> >         KASSERT(fam >= 0 && fam < (AF_MAX+1), ("%s: fam out of
> >         bounds.",
> >             __func__));
> >
> >         /* rnh is [fib=0][af=0]. */
> > ---> rnh = (struct radix_node_head **)V_rt_tables;
> >         /* Get the offset to the requested table and fam. */
> >         rnh += table * (AF_MAX+1) + fam;
> >
> >         return (rnh);
> > }
> >
> > Any ideas?
> >
> > Cores and dumps are available plus a vmware player setup to test and
> > debug.
> >
I know diddly about VIMAGE, but you could try the attached patch which
imitates what is done other places.

If the patch isn't attached, you can find it at:
  http://people.freebsd.org/~rmacklem/vnet.patch

rick

[-- Attachment #2 --]
--- fs/nfsclient/nfs_clport.c.sav	2011-05-04 19:12:10.000000000 -0400
+++ fs/nfsclient/nfs_clport.c	2011-05-27 18:52:11.000000000 -0400
@@ -943,7 +943,9 @@ nfscl_getmyip(struct nfsmount *nmp, int 
 		sad.sin_family = AF_INET;
 		sad.sin_len = sizeof (struct sockaddr_in);
 		sad.sin_addr.s_addr = sin->sin_addr.s_addr;
+		CURVNET_SET(TD_TO_VNET(curthread));
 		rt = rtalloc1((struct sockaddr *)&sad, 0, 0UL);
+		CURVNET_RESTORE();
 		if (rt != NULL) {
 			if (rt->rt_ifp != NULL &&
 			    rt->rt_ifa != NULL &&
@@ -966,7 +968,9 @@ nfscl_getmyip(struct nfsmount *nmp, int 
 		sad6.sin6_family = AF_INET6;
 		sad6.sin6_len = sizeof (struct sockaddr_in6);
 		sad6.sin6_addr = sin6->sin6_addr;
+		CURVNET_SET(TD_TO_VNET(curthread));
 		rt = rtalloc1((struct sockaddr *)&sad6, 0, 0UL);
+		CURVNET_RESTORE();
 		if (rt != NULL) {
 			if (rt->rt_ifp != NULL &&
 			    rt->rt_ifa != NULL &&

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1297732809.928917.1306537388344.JavaMail.root>