[pnfs] [PATCH 1/2] nfs41: Add missing call to destroy session in nfs4_get_sb.
Ricardo Labiaga
ricardo.labiaga at netapp.com
Mon Feb 4 14:02:16 EST 2008
Sounds like a good plan to me.
- ricardo
On Mon, 2008-02-04 at 19:38 +0200, Benny Halevy wrote:
> Applied onto the nfs41 branch
>
> Note that this is modified in the pnfs branch as nfs4_proc_destroy_session's
> params were changed there to accommodate for destroying DS sessions.
> I split the params change part out of Andy's respective patch and updated
> it to cover this call site. In any case, I think it might be a good idea
> to make the change in the nfs41 branch although it is not strictly necessary
> there as a preparation for pnfs. If anyone objects to that, please speak
> up soon :)
>
> Benny
>
> On Jan. 31, 2008, 13:58 +0200, Ricardo Labiaga <ricardo.labiaga at netapp.com> wrote:
> > nfs4_get_sb will create a new session indirectly when creating a new
> > server structure. It may later decide not to use it. Make sure it
> > destroys the session in such case.
> >
> > Need to investigate if we should move the session destroying into
> > nfs4_free_server. I don't do it at this time since it is called from
> > many other places that do not currently create a session. They should,
> > and the fix will be submited in a separate patch.
> >
> > Signed-off-by: Ricardo Labiaga <ricardo.labiaga at netapp.com>
> > ---
> > fs/nfs/super.c | 17 ++++++++++++++++-
> > 1 files changed, 16 insertions(+), 1 deletions(-)
> >
> > diff --git a/fs/nfs/super.c b/fs/nfs/super.c
> > index c3a5552..e3379fb 100644
> > --- a/fs/nfs/super.c
> > +++ b/fs/nfs/super.c
> > @@ -35,6 +35,7 @@
> > #include <linux/sunrpc/metrics.h>
> > #include <linux/sunrpc/xprtsock.h>
> > #include <linux/sunrpc/xprtrdma.h>
> > +#include <linux/sunrpc/bc_xprt.h>
> > #include <linux/nfs_fs.h>
> > #include <linux/nfs_mount.h>
> > #include <linux/nfs4_mount.h>
> > @@ -1727,6 +1728,20 @@ static int nfs4_get_sb(struct file_system_type *fs_type,
> > }
> >
> > if (s->s_fs_info != server) {
> > +#if defined(CONFIG_NFS_V4_1)
> > + switch (server->nfs_client->cl_minorversion) {
> > + case 1:
> > + if (server->session) {
> > + dprintk("%s Destroy session %p/%p\n",
> > + __FUNCTION__, server->session, server);
> > + nfs4_proc_destroy_session(server);
> > + }
> > + break;
> > + default:
> > + /* Fall-through */
> > + break;
> > + }
> > +#endif /* CONFIG_NFS_V4_1 */
> > nfs_free_server(server);
> > server = s->s_fs_info;
> > }
> > @@ -1775,7 +1790,7 @@ static void nfs4_kill_super(struct super_block *sb)
> > switch (server->nfs_client->cl_minorversion) {
> > case 1:
> > if (server->session) {
> > - dprintk("%s Destroy session %p for nfs_server %p\n",
> > + dprintk("%s Destroy session %p/%p\n",
> > __FUNCTION__, server->session, server);
> > nfs4_proc_destroy_session(server);
> > }
>
More information about the pNFS
mailing list