Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 04 Nov 2005 19:30:13 +0100
From:      Andre Oppermann <andre@freebsd.org>
To:        thierry@herbelot.com
Cc:        freebsd-current@freebsd.org
Subject:   Re: panic: mb_dtor_pack: ref_cnt != 1
Message-ID:  <436BA8B5.9070104@freebsd.org>
In-Reply-To: <200511041833.30955.thierry@herbelot.com>
References:  <20051104092724.GA33945@xor.obsecurity.org>	<436B885B.6010609@freebsd.org> <20051104163526.GC82727@flame.pc> <200511041833.30955.thierry@herbelot.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Thierry Herbelot wrote:
> Le Friday 4 November 2005 17:35, Giorgos Keramidas a écrit :
> 
>>On 2005-11-04 17:12, Andre Oppermann <andre@freebsd.org> wrote:
>>
>>>Ok, thanks to Danny Braniss and Peter Holm the KASSERT is working now.
>>
>>Very fast fix.  Thanks.  I barely had the time to build a kernel and
>>read Peter's warning about a broken build, before the fix was ready :)
>>
> 
> Hello,
> 
> I have applied your second patch, to solve an mbuf exhaustion which I see with 
> NFS traffic.
> I still have the same symptoms : 
> after launching over an ssh session a recusrive 'ls' over an NFS disk, the 
> -current NFS client is blocked (and complains with 'nfs server truc:/files: 
> not responding') - I first saw this when cvs-ing the sources from the same 
> shared disk.
> 
> I have enclosed the trace showing the mbuf stats :
> 
> multi-cur% while (1)
> while? sleep 10
> while? netstat -m | head -2
> while? end
> 65/460/525 mbufs in use (current/cache/total)
> 64/210/274/3776 mbuf clusters in use (current/cache/total/max)
> 66/2124/2190 mbufs in use (current/cache/total)
> 64/2016/2080/3776 mbuf clusters in use (current/cache/total/max)
> 68/3652/3720 mbufs in use (current/cache/total)
> 65/3439/3504/3776 mbuf clusters in use (current/cache/total/max)
> 67/3908/3975 mbufs in use (current/cache/total)
> 64/3712/3776/3776 mbuf clusters in use (current/cache/total/max)
> 67/3908/3975 mbufs in use (current/cache/total)
> 64/3712/3776/3776 mbuf clusters in use (current/cache/total/max)
> 
> This isssue is seen on 3 different PCs running recent -current, clients for a 
> FreeBSD-6 NFS server (same problem when the NFS server is NetBSD). All 3 
> clients have a small RAM, which may be a cause for faster apparition of the 
> issue.

Please try the attached patch to see whether it makes a difference.

-- 
Andre


Index: kern/uipc_mbuf.c
===================================================================
RCS file: /home/ncvs/src/sys/kern/uipc_mbuf.c,v
retrieving revision 1.157
diff -u -p -r1.157 uipc_mbuf.c
--- kern/uipc_mbuf.c    4 Nov 2005 17:20:53 -0000       1.157
+++ kern/uipc_mbuf.c    4 Nov 2005 18:28:02 -0000
@@ -218,10 +218,11 @@ mb_free_ext(struct mbuf *m)
             atomic_fetchadd_int(m->m_ext.ref_cnt, -1) == 0) {
                 switch (m->m_ext.ext_type) {
                 case EXT_CLUSTER:       /* The packet zone is special. */
-                       if (*(m->m_ext.ref_cnt) == 0)
-                               *(m->m_ext.ref_cnt) = 1;
-                       uma_zfree(zone_pack, m);
-                       return;         /* Job done. */
+                       /* if (*(m->m_ext.ref_cnt) == 0) */
+                       /*      *(m->m_ext.ref_cnt) = 1; */
+                       /* uma_zfree(zone_pack, m); */
+                       /* return; */           /* Job done. */
+                       uma_zfree(zone_clust, m->m_ext.ext_buf);
                         break;
                 case EXT_JUMBO9:
                         uma_zfree(zone_jumbo9, m->m_ext.ext_buf);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?436BA8B5.9070104>