Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 21 Mar 2010 13:50:04 GMT
From:      Mikolaj Golub <to.my.trociny@gmail.com>
To:        freebsd-fs@FreeBSD.org
Subject:   Re: kern/144330: [nfs] mbuf leakage in nfsd with zfs
Message-ID:  <201003211350.o2LDo4tI079370@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/144330; it has been noted by GNATS.

From: Mikolaj Golub <to.my.trociny@gmail.com>
To: Rick Macklem <rmacklem@uoguelph.ca>
Cc: Jeremy Chadwick <freebsd@jdc.parodius.com>,  freebsd-fs@FreeBSD.org,
	  Kai Kockro <kkockro@web.de>, bug-followup@FreeBSD.org,
          gerrit@pmp.uni-hannover.de
Subject: Re: kern/144330: [nfs] mbuf leakage in nfsd with zfs
Date: Sun, 21 Mar 2010 15:43:21 +0200

 --=-=-=
 
 Having debian in VirtualBOX I had some problems reproducing this until I ran
 a script that dropped for shot periods of time traffic from the nfs server to
 the client (using pf):
 
 block out on $if from any to <nfs>
 
 while sleep 3; do 
     sudo pfctl -t nfs -vT add 10.0.0.217;
     sleep 2; 
     sudo pfctl -t nfs -vT show;
     sudo pfctl -t nfs -vT delete 10.0.0.217;
 done
 
 The idea was to drop NFS server responses to make the client resend requests
 and make RPC reply comes from the cache. And mbufs usage growth started to
 observe:
 
 09:30: 2806/1589/4395 mbufs in use (current/cache/total)
 10:00: 5397/1068/6465 mbufs in use (current/cache/total)
 10:30: 7945/1760/9705 mbufs in use (current/cache/total)
 11:00: 9560/1435/10995 mbufs in use (current/cache/total)
 11:30: 10337/2113/12450 mbufs in use (current/cache/total)
 
 Athough it might be another issue then reported in this pr :-).
 
 Reviewing rpc/svc.c:svc_getreq() it looks for me that for RS_DONE case args
 are nevere freed. Shouldn't it be like in the attached patch?
 
 Running the above test on the patched kernel the growth has not been observed
 so far:
 
 13:00: 1501/2219/3720 mbufs in use (current/cache/total)
 13:30: 1514/2971/4485 mbufs in use (current/cache/total)
 14:00: 1096/3389/4485 mbufs in use (current/cache/total)
 14:30: 1107/3378/4485 mbufs in use (current/cache/total)
 15:00: 1105/3380/4485 mbufs in use (current/cache/total)
 15:30: 1105/3380/4485 mbufs in use (current/cache/total)
 
 -- 
 Mikolaj Golub
 
 
 --=-=-=
 Content-Type: text/x-diff
 Content-Disposition: inline; filename=svc.c.svc_getreq.patch
 
 --- sys/rpc/svc.c.orig	2010-03-21 10:17:20.000000000 +0200
 +++ sys/rpc/svc.c	2010-03-21 10:20:05.000000000 +0200
 @@ -819,6 +819,7 @@ svc_getreq(SVCXPRT *xprt, struct svc_req
  					free(r->rq_addr, M_SONAME);
  					r->rq_addr = NULL;
  				}
 +				m_freem(args);
  				goto call_done;
  
  			default:
 
 --=-=-=--



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