mbuf leakage with nfs/zfs?

Rick Macklem rmacklem at uoguelph.ca
Wed Mar 3 00:40:34 UTC 2010



On Tue, 2 Mar 2010, Daniel Braniss wrote:

> runing with the experimental nfs server all is ok!
> (at least I can't see any mbuf leakage :-)
>
> so now that we can  assume that the problem is in NFS/UDP writes via
> classic nfsserver, where to look?
>

It might also be the krpc reply cache, since the experimental server
isn't using it (nfsv4 requires a rather twisted reply cache and it was
easier to just use that one for nfsv2,3 for the experimental server,
as well).

>> If it doesn't go away, the problem is more likely in the krpc or the
>> generic udp code. (When I looked at svc_dg.c, I could only spot one
>> possible leak and you've already determined that patch doesn't help.
>> The other big difference when using udp on the FreeBSD8 krpc is the
>> reply cache code. I seem to recall it's an lru cache with a fixed upper
>> bound, but it might be broken and leaking.
>>
>> If you change the server to set sp_rcache = NULL in the initialization
>> function in sys/nfsserver/nfs_srvkrpc.c, I think that disables the replay
>> cache. You wouldn't want to run this way in production, but it would
>> determine if the leak is in it.
>>
>> Change the 3 lines in nfsrv_init() to:
>> nfsrv_pool->sp_rcache = NULL;
>> nfsrv_pool->sp_assign = NULL;
>> nfsrv_pool->sp_done = NULL;
>>
>> and I think the krpc replay cache will be disabled.
>>

If someone gets a chance to try the above (not in production mode:-),
it will determine if the problem is in the reply cache or the nfs server's
write code.
>> Good luck with it and please report back if you get to try the above.
>>

Thanks for trying the experimental server. It is getting narrowed down,
due to everyone's work on it.

rick



More information about the freebsd-stable mailing list