Re: [PATCH 0/8] nfsd4: keep the client from expiring while in use by nfs41 compounds

J. Bruce Fields
2010-05-09T16:55:53Z

On Sun, May 09, 2010 at 09:30:31AM +0300, Benny Halevy wrote:
> Correct. The intentions are:
> 1. Make the laundromat process ignore clients that are in
> use by a 4.1 session.
> 2. Renew the client when the compound ends, rather than when it begins.
> 3. Unhash the client when it's expired explicitly but don't destroy it
> until there's no reference to it.

OK. My one slight worry there is to make sure that code getting a
pointer to a client through a sessionid won't inadvertently assume it's
still hashed.

By the way, the current stateid may present a similar problem to the
session, since it also lasts across compound ops and references a
client (and other state).

Looking through the code.... We don't implement the current stateid at
all yet. Ouch.

I'll add that to the wiki.

> >> [PATCH 8/8] nfsd41: cstate->session can NULL in nfsd4_destroy_session
> >> I think this was introduced in: 26c0c75 nfsd4: fix unlikely race in session replay case
> >> though I'm not sure how it ever worked correctly...
> >
> > Me neither. I've got a similar patch in my tree.
>
> Heh, I see.
> 5d4cec2 nfsd4: fix bare destroy_session null dereference

Apologies, I'd applied it privately but not pushed it out yet.... I
should have gotten that out faster.

--b.