Subject: Re: NetBSD/xen network problems (need help)
To: Andreas Wrede <andreas@planix.com>
From: Manuel Bouyer <bouyer@antioche.eu.org>
List: port-xen
Date: 03/13/2006 23:50:45
On Mon, Mar 13, 2006 at 05:01:00PM -0500, Andreas Wrede wrote:
> 
> On 13-Mar-06, at 3:45 PM, Manuel Bouyer wrote:
> >>
> >>panic: m_makewritable: length changed
> >
> >Not that I know. But AFAIK it's not an issue with m_makewritable() or
> >m_copyback0(), not in Xen itself (it just happens that Xen can  
> >triggers
> >it). Can you add some debug checks in m_copyback0() and  
> >m_makewritable()
> >to see what's really happening here ?
> 
> I'll try but that's somewhat over my head, some guidance would be  
> appreciated. The panic occurs regularly during a nightly backup-run  
> but so far, I cannot produce it at will yet.

The first thing I would do is print the new mbuf chain in m_makewritable.
We have:
        for (n = *mp; n; n = n->m_next)
		reslen += n->m_len;   
	if (origlen != reslen)
		panic("m_makewritable: length changed");

I would change it to:
        for (n = *mp; n; n = n->m_next)
		reslen += n->m_len;   
	if (origlen != reslen) {
		for (n = *mp; n; n = n->m_next)
			printf("mbuf len %d type %d flags %d\n",
			    n->m_next, n->m_type, n->m_flags);
		printf("m_makewritable origlen %d newlen %d\n",
		    origlen, reslen);
		panic("m_makewritable: length changed");
	}

-- 
Manuel Bouyer <bouyer@antioche.eu.org>
     NetBSD: 26 ans d'experience feront toujours la difference
--