All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kinglong Mee <kinglongmee@gmail.com>
To: Trond Myklebust <trond.myklebust@primarydata.com>,
	Dr Fields James Bruce <bfields@fieldses.org>
Cc: Linux NFS Mailing List <linux-nfs@vger.kernel.org>
Subject: Re: [PATCH 4/5] NFSD/SUNRPC: Check rpc_xprt out of  xs_setup_bc_tcp
Date: Fri, 10 Jan 2014 10:41:24 +0800	[thread overview]
Message-ID: <52CF5DD4.3080409@gmail.com> (raw)
In-Reply-To: <C9F998C3-4A55-4714-926A-29440DF6F914@primarydata.com>

On 01/10/2014 01:27 AM, Trond Myklebust wrote:
> 
> On Jan 9, 2014, at 11:26, Dr Fields James Bruce <bfields@fieldses.org> wrote:
> 
>> On Thu, Jan 09, 2014 at 06:33:10PM +0800, Kinglong Mee wrote:
>>> Besides checking rpc_xprt out of xs_setup_bc_tcp,
>>> increase it's reference (it's important).
>>
>> This sounds wrong to me: the presence of a backchannel can't prevent the
>> client's connection from going away.  Instead, when the connection dies,
>> any associated backchannels should be immediately destroyed.
> 
> Hi Bruce,
> 
> The right way to deal with this is to have knfsd shut down the rpc_client
> when it detects the TCP disconnection event. 

Yes, that's right.
Knfsd has do it as you said.

When getting xprt's status of XPT_CLOSE in svc_recv/svc_handle_xprt, 
knfsd will delete the xprt by svc_delete_xprt.

In svc_delete_xprt, knfsd calls call_xpt_users to notify those users of the xprt.
So, nfsd4_conn_lost will be called to free the connection.
After freeing connection, nfsd4_probe_callback will update the callback for the client.
And, the clp->cl_cb_client will be shutdown in nfsd4_process_cb_update.

At last, all using of the xprt will be released.
I have test it, that's OK. 

> The xprt->count shouldn’t be an issue here: 
> it has nothing to do with the socket connection state.

The xprt of backchannel, there are two references, 
1. rpc_clnt
2. svc_xprt

For rpc_clnt, initialize the xprt->count in xs_setup_bc_tcp,
or increase it in create_backchannel_client, and, decrease in rpc_free_client.

For svc_xprt, increase it in xs_setup_bc_tcp, and decrease in svc_xprt_free.

thanks,
Kinglong Mee


  reply	other threads:[~2014-01-10  2:41 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-06  9:33 [PATCH] SUNRPC: fix a memory leak for tcp NFSv4.1 backchannel Kinglong Mee
2014-01-06 18:49 ` J. Bruce Fields
2014-01-06 22:40   ` Trond Myklebust
2014-01-06 22:53     ` Dr Fields James Bruce
2014-01-06 23:28       ` Trond Myklebust
2014-01-07  5:07         ` Kinglong Mee
2014-01-09 10:31           ` [PATCH 0/5] NFSD/SUNRPC: Fix some bugs which cause memory leak for the backchannel Kinglong Mee
2014-01-09 10:31             ` [PATCH 1/5] NFSD: Using free_conn free connection Kinglong Mee
2014-01-09 10:32             ` [PATCH 2/5] NFSD: Free backchannel xprt in bc_destroy Kinglong Mee
2014-01-09 10:32             ` [PATCH 3/5] SUNRPC: New helper for creating client with rpc_xprt Kinglong Mee
2014-01-09 10:33             ` [PATCH 4/5] NFSD/SUNRPC: Check rpc_xprt out of xs_setup_bc_tcp Kinglong Mee
2014-01-09 16:26               ` Dr Fields James Bruce
2014-01-09 17:27                 ` Trond Myklebust
2014-01-10  2:41                   ` Kinglong Mee [this message]
2014-01-27 23:08                     ` Dr Fields James Bruce
2014-02-11 12:08                       ` Kinglong Mee
2014-01-09 10:33             ` [PATCH 5/5] SUNRPC: Clear xpt_bc_xprt if xs_setup_bc_tcp failed Kinglong Mee
2014-01-09 15:57         ` [PATCH] SUNRPC: fix a memory leak for tcp NFSv4.1 backchannel Dr Fields James Bruce

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=52CF5DD4.3080409@gmail.com \
    --to=kinglongmee@gmail.com \
    --cc=bfields@fieldses.org \
    --cc=linux-nfs@vger.kernel.org \
    --cc=trond.myklebust@primarydata.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.