Re: NFS client over udp



--- On Fri, 2/18/11, Kirill Yelizarov
On Fri, Feb 18, 2011 at 05:27:00AM
-0800, Kirill Yelizarov wrote:
I have a reproducible memory leak when using nfs
client with an old
nfs server

and mbufs used
8193/1722/9915 mbufs in use (current/cache/total)
8192/1264/9456/25600 mbuf clusters in use (current/cache/total/max)
8192/605 mbuf+clusters out of packet secondary zone in use
(current/cache)
0/768/768/12800 4k (page size) jumbo clusters in use
(current/cache/total/max)
0/0/0/6400 9k jumbo clusters in use (current/cache/total/max)
0/0/0/3200 16k jumbo clusters in use (current/cache/total/max)
18432K/6030K/24462K bytes allocated to network (current/cache/total)
0/0/0 requests for mbufs denied (mbufs/clusters/mbuf+clusters)
0/0/0 requests for jumbo clusters denied (4k/9k/16k)
0/0/0 sfbufs in use (current/peak/max)
0 requests for sfbufs denied
0 requests for sfbufs delayed
0 requests for I/O initiated by sendfile
0 calls to protocol drain routines

Kirill

You could try the attached patch. It fixes the only places in the
client side krpc over udp that seems mights cause a leak. I have no
idea if it will help, since these cases should rarely, if ever,
happen in practice.

Please let us know if you have the chance to try the patch and
whether or not it helped.

rick
--- rpc/clnt_dg.c.sav 2011-02-19 19:52:41.000000000 -0500
+++ rpc/clnt_dg.c 2011-02-20 10:43:11.000000000 -0500
@@ -704,9 +704,9 @@ got_reply:
(reply_msg.acpted_rply.ar_stat == SUCCESS))
errp->re_status = stat = RPC_SUCCESS;
else
- stat = _seterr_reply(&reply_msg, &(cu->cu_error));
+ stat = _seterr_reply(&reply_msg, errp);

- if (errp->re_status == RPC_SUCCESS) {
+ if (stat == RPC_SUCCESS) {
results = xdrmbuf_getall(&xdrs);
if (! AUTH_VALIDATE(auth, xid,
&reply_msg.acpted_rply.ar_verf,
@@ -1089,11 +1089,14 @@ clnt_dg_soupcall(struct socket *so, void
/*
* The XID is in the first uint32_t of the reply.
*/
- if (m->m_len < sizeof(xid) && m_length(m, NULL) < sizeof(xid))
+ if (m->m_len < sizeof(xid) && m_length(m, NULL) < sizeof(xid)) {
/*
* Should never happen.
*/
+ printf("clnt_dg_soupcall: received garbage\n");
+ m_freem(m);
continue;
+ }

m_copydata(m, 0, sizeof(xid), (char *)&xid);
xid = ntohl(xid);
_______________________________________________
freebsd-stable@xxxxxxxxxxx mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "freebsd-stable-unsubscribe@xxxxxxxxxxx"

Relevant Pages

  • COM Interop + Threading + Scalability
    ... The Client completely denies ... The Rules Processor is implemented in VB 6 and the ASP.NET ... multiple concurrent requests for the Rules Processor. ... creates and initializes an apartment when calling a COM ...
    (microsoft.public.dotnet.framework.interop)
  • Re: [CFT][PATCH] new scheduler policy
    ... "The X server uses selectto detect clients with pending input. ... executing requests from the client with the smallest file descriptor. ... Each client has a buffer which is used to read some data from the ...
    (Linux-Kernel)
  • RE: Citrix/ISA
    ... Microsoft CSS Online Newsgroup Support ... |> server" will not affect your Web proxy functionality. ... |> requests from firewall client and SecureNAT client will not be able to ... |> HTTP redirector filter is used to grab the HTTP/HTTPS/FTP requests from ...
    (microsoft.public.windows.server.sbs)
  • RE: Citrix/ISA
    ... changing HTTP redirector filter to "Send to requested Web ... requests from firewall client and SecureNAT client will not be able to ... HTTP redirector filter is used to grab the HTTP/HTTPS/FTP requests from ... Redirect requests from Firewall and SecureNAT clients to the Web Proxy ...
    (microsoft.public.windows.server.sbs)
  • parallel vs. serial disk access
    ... Background is still that I'm creating a solution for network file transfers. ... When accessing a system with a single client, ... the explanation for this heavy performance loss is the i/o ... requests in the one queue and a small request in the small-request-queue, ...
    (comp.os.linux.development.system)