From patchwork Sun Sep 11 19:11:50 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Trond Myklebust X-Patchwork-Id: 9325559 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id C641F6048B for ; Sun, 11 Sep 2016 19:12:22 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id BC1D628B02 for ; Sun, 11 Sep 2016 19:12:22 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id B0A5B28B06; Sun, 11 Sep 2016 19:12:22 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI, RCVD_IN_SORBS_SPAM, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1C4FA28B02 for ; Sun, 11 Sep 2016 19:12:22 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932465AbcIKTMU (ORCPT ); Sun, 11 Sep 2016 15:12:20 -0400 Received: from mail-oi0-f67.google.com ([209.85.218.67]:35614 "EHLO mail-oi0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932160AbcIKTMT (ORCPT ); Sun, 11 Sep 2016 15:12:19 -0400 Received: by mail-oi0-f67.google.com with SMTP id 2so18854172oif.2 for ; Sun, 11 Sep 2016 12:12:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:subject:date:message-id; bh=xsJeJhIFP+phLw/xokFxrlxu1r9K5l7m6gYqJnCpax0=; b=0x/9TVfj3QWCHfmBkHVyj/d3dZjEO6Xn+bKUjnabOvBYPzYglPCX7E7Yk+5mFX/qj6 vLmOeZFl46IfAudOO9oQ5m06ZHrRGovGWMV+/jghpJA/3RDFTHZQ15GmuxCUBdA3Sa+y maSX96P6gZfEQ7lx791HfueFZa96pnjXqj6Ih1r8fD5ybamHj+vikHYcX8QY9dgqQIIO C9saEi+Q9nvqn0Y8jXYefq4KThpcMTYSwWV5cmCRnd1igL84zZmElYtjeeIGab3uhfyA q3vR89SkUjSHE4w7bpK3hsD4TxzxPSgBxUhDfqGT7CrqgBVRWNtytBv4/hOxe2Sc068q kUsQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:from:to:subject:date:message-id; bh=xsJeJhIFP+phLw/xokFxrlxu1r9K5l7m6gYqJnCpax0=; b=NBeYRHeMfJimLjPXn5kYVfwC3hHGipMHWDZYfgmmAbYP1BPIq52vVHEAEKIFGr0zte AWTP3XfElRreAtLKy7JHToM7WuwQ3m2vGnMij9WcTlVTUdhuIZruUyZgBdX57ySb7YYs sJ1TawBb5Wwcx4ARdLWalXHddG68g1K4k42CowsVIIYhL8bzLiubuxoAtlrCSJ8YODuQ 1p2o3W+/32rVuiL8rXs4438X+MfDPV6bUmKABd/7GrOgBC97XC8uaC0A7Kkgq+Z0S0GR J6faU6FgKNXV455wD2n4FVrstOeIC/Mve3mUsw8fTp3v5D9JneHJNSPMB46gwJ2zfcr/ KERg== X-Gm-Message-State: AE9vXwM/TWCtOs5lV2kR+wQ6Jmywvclb2xIovgdivXSxZiLIbdzg1YixzX3UpRSholj/BQ== X-Received: by 10.202.183.4 with SMTP id h4mr20051241oif.39.1473621138936; Sun, 11 Sep 2016 12:12:18 -0700 (PDT) Received: from leira.trondhjem.org.localdomain (c-68-49-162-121.hsd1.mi.comcast.net. [68.49.162.121]) by smtp.gmail.com with ESMTPSA id 63sm8239250itz.7.2016.09.11.12.12.18 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 11 Sep 2016 12:12:18 -0700 (PDT) From: Trond Myklebust To: linux-nfs@vger.kernel.org Subject: [PATCH] NFSv4.1: Fix the CREATE_SESSION slot number accounting Date: Sun, 11 Sep 2016 15:11:50 -0400 Message-Id: <1473621110-51372-1-git-send-email-trond.myklebust@primarydata.com> X-Mailer: git-send-email 2.7.4 Sender: linux-nfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Ensure that we conform to the algorithm described in RFC5661, section 18.36.4 for when to bump the sequence id. In essence we do it for all cases except when the RPC call timed out, or in case of the server returning NFS4ERR_DELAY or NFS4ERR_STALE_CLIENTID. Signed-off-by: Trond Myklebust Cc: stable@vger.kernel.org --- fs/nfs/nfs4proc.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index c380d2ee4137..a9dec32ba9ba 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c @@ -7570,12 +7570,20 @@ static int _nfs4_proc_create_session(struct nfs_client *clp, status = rpc_call_sync(session->clp->cl_rpcclient, &msg, RPC_TASK_TIMEOUT); trace_nfs4_create_session(clp, status); + switch (status) { + case -NFS4ERR_STALE_CLIENTID: + case -NFS4ERR_DELAY: + case -ETIMEDOUT: + case -EACCES: + case -EAGAIN: + goto out; + }; + + clp->cl_seqid++; if (!status) { /* Verify the session's negotiated channel_attrs values */ status = nfs4_verify_channel_attrs(&args, &res); /* Increment the clientid slot sequence id */ - if (clp->cl_seqid == res.seqid) - clp->cl_seqid++; if (status) goto out; nfs4_update_session(session, &res);