Received: by 2002:a6b:500f:0:0:0:0:0 with SMTP id e15csp224433iob; Mon, 2 May 2022 17:44:34 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzrcpMcYg13FFJdj4rTtVrMf/am1HMwksnN4s/K4f9CiEjf5oM7lRCamxmtWXO5FeDEW9jg X-Received: by 2002:a17:90b:4b03:b0:1dc:6554:1bf9 with SMTP id lx3-20020a17090b4b0300b001dc65541bf9mr1978183pjb.246.1651538673877; Mon, 02 May 2022 17:44:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1651538673; cv=none; d=google.com; s=arc-20160816; b=I/jhjuichi4f/JDYz6K+HbYfbvxg3tONXbEhmvMBkkncAJ5991wozdih+9gR4qBFSF EF69++vOD1vRlZxheRT+njcBRBiqkLgP5zOgpZ12hUnKAZFMVWm25PiyY+qUB5UteWAb QLe5aN1sEIldp9pQ1g1JylZwxJHScQ6o1hYTCzk3f7Fr0mPxqEKaU7b31Kj/nkWTP+lf BlpywBZmwl9csYMGdIkqOaJGqxhyLgcnu3wKx1OaQb9oGBXbvnK6SW4NbDfveD57CSi8 ULSt3EpWsquN86UBr8LXDMT0JxPqqw+Rvxb1SpPwqpCJKM5rScSvmfclQ/IeFUyin1Br ACJg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:user-agent:in-reply-to:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :dkim-signature:dkim-filter; bh=fefRNgwP2JK/PA4RbrIuAA8K3Kcmfe5fM3W6FiebHeI=; b=Hrb1NTXb2VunzntGHPxgi+vaohbYF2ETotvXESPs4ppxedQtaqHc0OVN7QcQK1fDrL vDZte7+cDH71bqoUg+9KAXMPqDU5hJCsP7ljCkRCy84lLzrB31HJq0YyUYsXBRF4db7h b1efNWOIUN7vcAnGZj/wY6i/2zgNUmCS5sU1EURHXu48mbYqtvfsauTVjmlMIswEorII 6kaJwfbti6/3rFGY96ke1EWshQxOtREkizu40ItLAiHSHcKux7AHsWJyUBVcUHsJvtQr IwwtiK7EZvJHZCNPTPzTKy5iaTbN3H5r6sKT8CC0EfPOEWfvPekBecexwhMhULtBiPaY KcJA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@fieldses.org header.s=default header.b=lBZAtnmo; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id f3-20020a170902e98300b0015d50bab223si14622430plb.74.2022.05.02.17.44.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 May 2022 17:44:33 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@fieldses.org header.s=default header.b=lBZAtnmo; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 48DF642A3B; Mon, 2 May 2022 17:34:09 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240542AbiEBQKF (ORCPT + 99 others); Mon, 2 May 2022 12:10:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50838 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240675AbiEBQKB (ORCPT ); Mon, 2 May 2022 12:10:01 -0400 Received: from fieldses.org (fieldses.org [IPv6:2600:3c00:e000:2f7::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3E598B17; Mon, 2 May 2022 09:06:32 -0700 (PDT) Received: by fieldses.org (Postfix, from userid 2815) id CD3516CCD; Mon, 2 May 2022 12:06:31 -0400 (EDT) DKIM-Filter: OpenDKIM Filter v2.11.0 fieldses.org CD3516CCD DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fieldses.org; s=default; t=1651507591; bh=fefRNgwP2JK/PA4RbrIuAA8K3Kcmfe5fM3W6FiebHeI=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=lBZAtnmo05ndGRgQcO+dcRJhSIe96fCWi2qH/MaXev/7rhnnTuL7DFFzEwoJ124ti i85cgOHtNHLE4H2OPgf5BlSAOb4GeJvAafrkQMuWfpJHvZXW0Tn6c/u/amgSMGOgIG P6cdkIvrJTRFvPFeXs1SXhGu9Ug++87sdWJziXMY= Date: Mon, 2 May 2022 12:06:31 -0400 From: "J. Bruce Fields" To: Dai Ngo Cc: chuck.lever@oracle.com, jlayton@redhat.com, viro@zeniv.linux.org.uk, linux-nfs@vger.kernel.org, linux-fsdevel@vger.kernel.org Subject: Re: [PATCH RFC v24 7/7] NFSD: Show state of courtesy client in client info Message-ID: <20220502160631.GG30550@fieldses.org> References: <1651426696-15509-1-git-send-email-dai.ngo@oracle.com> <1651426696-15509-8-git-send-email-dai.ngo@oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1651426696-15509-8-git-send-email-dai.ngo@oracle.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org On Sun, May 01, 2022 at 10:38:16AM -0700, Dai Ngo wrote: > Update client_info_show to show state of courtesy client > and time since last renew. At this point I may be borderline woodshedding, but: for simplicity's sake, let's just keep that time as a number of seconds. I'm thinking that'll make it marginally easier for people processing the output and doing comparisons and such. --b. > > Signed-off-by: Dai Ngo > --- > fs/nfsd/nfs4state.c | 14 ++++++++++++-- > 1 file changed, 12 insertions(+), 2 deletions(-) > > diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c > index 4ab7dda44f38..9cff06fc3600 100644 > --- a/fs/nfsd/nfs4state.c > +++ b/fs/nfsd/nfs4state.c > @@ -2473,7 +2473,8 @@ static int client_info_show(struct seq_file *m, void *v) > { > struct inode *inode = m->private; > struct nfs4_client *clp; > - u64 clid; > + u64 clid, hrs; > + u32 mins, secs; > > clp = get_nfsdfs_clp(inode); > if (!clp) > @@ -2481,10 +2482,19 @@ static int client_info_show(struct seq_file *m, void *v) > memcpy(&clid, &clp->cl_clientid, sizeof(clid)); > seq_printf(m, "clientid: 0x%llx\n", clid); > seq_printf(m, "address: \"%pISpc\"\n", (struct sockaddr *)&clp->cl_addr); > - if (test_bit(NFSD4_CLIENT_CONFIRMED, &clp->cl_flags)) > + > + if (clp->cl_state == NFSD4_COURTESY) > + seq_puts(m, "status: courtesy\n"); > + else if (clp->cl_state == NFSD4_EXPIRABLE) > + seq_puts(m, "status: expirable\n"); > + else if (test_bit(NFSD4_CLIENT_CONFIRMED, &clp->cl_flags)) > seq_puts(m, "status: confirmed\n"); > else > seq_puts(m, "status: unconfirmed\n"); > + hrs = div_u64_rem(ktime_get_boottime_seconds() - clp->cl_time, > + 3600, &secs); > + mins = div_u64_rem((u64)secs, 60, &secs); > + seq_printf(m, "time since last renew: %llu:%02u:%02u\n", hrs, mins, secs); > seq_printf(m, "name: "); > seq_quote_mem(m, clp->cl_name.data, clp->cl_name.len); > seq_printf(m, "\nminor version: %d\n", clp->cl_minorversion); > -- > 2.9.5