[pnfs] FW: CVS: nfsv4
Iyer, Rahul
Rahul.Iyer at netapp.com
Wed Jan 31 05:55:40 EST 2007
Or, we could take the simpler approach... Call
nfs4_proc_destroy_session() *after* kill_anon_sb() is called :p
> -----Original Message-----
> From: Iyer, Rahul
> Sent: Wednesday, January 31, 2007 1:26 AM
> To: pnfs at linux-nfs.org
> Subject: [pnfs] FW: CVS: nfsv4
>
> Forgot to reply all
> Regards
> Rahul
>
>
> > -----Original Message-----
> > From: Iyer, Rahul
> > Sent: Wednesday, January 31, 2007 1:11 AM
> > To: 'William A. (Andy) Adamson'
> > Subject: RE: [pnfs] CVS: nfsv4
> >
> > Hi Andy,
> > I figured out the bug. It was rather stupid on my part.
> What happens
> > is that in nfs4_kill_super() I call
> > nfs4_proc_destroy_session() which destroys the session and
> frees the
> > session struct. Then, nfs4_kill_super() calls kill_anon_sb(), which
> > eventually calls clear_inode().
> > Thisresults in a call to pnfs_return_layout() in order to
> return the
> > layout. When this tries to setup a sequence op, the session
> pointer it
> > needs has been freed.
> >
> > So, we need something like nfs4_return_all_layouts(). This
> would walk
> > the superblock inode list and return any layouts that it
> might have.
> > I'll fix this. In time, this function will traverse the
> layout cache
> > instead.
> > Regards
> > Rahul
> >
> >
> > > -----Original Message-----
> > > From: William A. (Andy) Adamson [mailto:andros at citi.umich.edu]
> > > Sent: Monday, January 29, 2007 1:22 PM
> > > To: Iyer, Rahul
> > > Subject: Re: [pnfs] CVS: nfsv4
> > >
> > > yes.
> > >
> > >
> > > On 1/29/07, Iyer, Rahul <Rahul.Iyer at netapp.com> wrote:
> > >
> > > Was it on the unmount the last time as well?
> > > Regards
> > > Rahul
> > >
> > >
> > > > -----Original Message-----
> > > > From: William A. (Andy) Adamson
> > > [mailto:andros at citi.umich.edu]
> > > > Sent: Monday, January 29, 2007 12:50 PM
> > > > To: Iyer, Rahul
> > > > Cc: pnfs at linux-nfs.org
> > > > Subject: Re: [pnfs] CVS: nfsv4
> > > >
> > > > whoops! spoke too soon.
> > > >
> > > > I mount, traverse into the mount point, vi a file, and then
> > > > umount and BANG:
> > > >
> > > > nfs4_sequence_done() gets called with a NULL data pointer.
> > > >
> > > > -->Andy
> > > >
> > > >
> > > > On 1/29/07, Iyer, Rahul <Rahul.Iyer at netapp.com> wrote:
> > > >
> > > > Cool! I hope we catch this Heisenbug though...
> > > > REGARDS
> > > > Rahul
> > > >
> > > >
> > > > > -----Original Message-----
> > > > > From: William A. (Andy) Adamson
> > > > [mailto:andros at citi.umich.edu ]
> > > > > Sent: Monday, January 29, 2007 10:09 AM
> > > > > To: Iyer, Rahul
> > > > > Cc: pnfs at linux-nfs.org
> > > > > Subject: Re: [pnfs] CVS: nfsv4
> > > > >
> > > > > hi rahul
> > > > >
> > > > > i re-ran a kernel without the "null pointer
> > > fix" and i can't
> > > > > reproduce the problem.
> > > > >
> > > > > so, i can remove the check for the null session in
> > > > > nfs41_proc_sequence_done() and the null clp in
> > > > nfs4_sequence_done()
> > > > >
> > > > > -->Andy
> > > > >
> > > > >
> > > > > On 1/29/07, Iyer, Rahul <
> > > Rahul.Iyer at netapp.com> wrote:
> > > > >
> > > > > So, the reason I used
> > > nfs4_get_renew_cred() was that I
> > > > > didn't want to
> > > > > send sequence always. If there are no
> > > open files, then
> > > > > that's fine... We
> > > > > do not send a sequence and let the
> > > clientid (and the
> > > > > associated session)
> > > > > expire. We can set the session up as
> > > and when needed
> > > > > again. AFAICS this
> > > > > approach sure beats littering the network with
> > > > needless traffic.
> > > > >
> > > > > About the null pointer, what was NULL?
> > > > > Nfs41_proc_sequence() takes 3
> > > > > arguments - a session pointer, a
> > > nfs41_sequence_res
> > > > > pointer and a status
> > > > > int. Which was NULL again and what was
> > > the test case?
> > > > > Regards
> > > > > Rahul
> > > > > P.S: I have some uncommitted code... We
> > > have all pNFS
> > > > > ops except for
> > > > > LAYOUTCOMMIT and LAYOUTRETURN
> > > working... We should be
> > > > > able to finish
> > > > > that off on Monday and I'll commit it in one go.
> > > > >
> > > > >
> > > > > > -----Original Message-----
> > > > > > From: William Andros Adamson [mailto:
> > > > > andros at citi.umich.edu <mailto:andros at citi.umich.edu> ]
> > > > > > Sent: Saturday, January 27, 2007 2:48 PM
> > > > > > To: pnfs at linux-nfs.org
> > > > > > Subject: [pnfs] CVS: nfsv4
> > > > > >
> > > > > > CVSROOT: /cvs
> > > > > > Module name: nfsv4
> > > > > > Changes by: andros at citi.umich.edu
> > > > 2007/01/27 17:48:03
> > > > > >
> > > > > > Modified files:
> > > > > > cvs/pnfs/fs/nfs: nfs4proc.c nfs4renewd.c
> > > > > >
> > > > > > Log message:
> > > > > > nfs4_get_renew_cred() searches the list of
> > > > stateowners for a
> > > > > > given nfs4_client and returns the first
> > > > credential it finds.
> > > > > > this works for OP_RENEW which is only needed
> > > > when state has
> > > > > > been established.
> > > > > >
> > > > > > sessions changes the renew strategy:
> > > > OP_SEQUENCE is sent with
> > > > > > every RPC, and a OP_RENEW call must be sent
> > > > caveat lease_time
> > > > > > even when no OPEN state has been established.
> > > > > >
> > > > > > if nfs4_get_renew_cred() fails to
> > > find a credential,
> > > > > create on with
> > > > > > rpcauth_lookupcred() for the renew call under
> > > > sessions.
> > > > > >
> > > > > > nfs41_proc_sequence_done() can have a NULL
> > > > data - at least i
> > > > > > hit it in my debugging....
> > > > > >
> > > > > >
> > > _______________________________________________
> > > > > > pNFS mailing list
> > > > > > pNFS at linux-nfs.org
> > > > > >
> > > http://linux-nfs.org/cgi-bin/mailman/listinfo/pnfs
> > > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > >
> > >
> > >
> > >
> > >
> _______________________________________________
> pNFS mailing list
> pNFS at linux-nfs.org
> http://linux-nfs.org/cgi-bin/mailman/listinfo/pnfs
>
More information about the pNFS
mailing list