Return-Path: linux-nfs-owner@vger.kernel.org Received: from mail-we0-f173.google.com ([74.125.82.173]:38974 "EHLO mail-we0-f173.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751291AbaBKMIz (ORCPT ); Tue, 11 Feb 2014 07:08:55 -0500 Received: by mail-we0-f173.google.com with SMTP id x55so5387364wes.4 for ; Tue, 11 Feb 2014 04:08:54 -0800 (PST) MIME-Version: 1.0 In-Reply-To: <20140127230850.GC8534@fieldses.org> References: <20140106184926.GC31764@fieldses.org> <24D159B0-C13D-43A6-B307-2B967E154353@primarydata.com> <20140106225346.GB3342@fieldses.org> <52CB8B79.6040907@gmail.com> <52CE7A76.3080101@gmail.com> <52CE7AE6.4010603@gmail.com> <20140109162633.GB14308@fieldses.org> <52CF5DD4.3080409@gmail.com> <20140127230850.GC8534@fieldses.org> Date: Tue, 11 Feb 2014 20:08:53 +0800 Message-ID: Subject: Re: [PATCH 4/5] NFSD/SUNRPC: Check rpc_xprt out of xs_setup_bc_tcp From: Kinglong Mee To: Dr Fields James Bruce Cc: Trond Myklebust , Linux NFS Mailing List Content-Type: text/plain; charset=ISO-8859-1 Sender: linux-nfs-owner@vger.kernel.org List-ID: Dear Bruce, I am sorry for replying so late. I will resend those patchs again. thanks, Kinglong Mee On Tue, Jan 28, 2014 at 7:08 AM, Dr Fields James Bruce wrote: > Apologies, I completely dropped this and now I've lost the thread of the > discussion. > > What is your most recent patchset? > > --b. > > On Fri, Jan 10, 2014 at 10:41:24AM +0800, Kinglong Mee wrote: >> On 01/10/2014 01:27 AM, Trond Myklebust wrote: >> > >> > On Jan 9, 2014, at 11:26, Dr Fields James Bruce 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 >>