Received: by 2002:a05:6a10:17d3:0:0:0:0 with SMTP id hz19csp291795pxb; Fri, 16 Apr 2021 05:58:13 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwdKL8TjaLtKQrQ12lvEcNxJmLU1fQBbs553+tkWEcvWS4k88NRzAmoLaTk97VZgkg6YzR5 X-Received: by 2002:a05:6402:212:: with SMTP id t18mr9797137edv.165.1618577893098; Fri, 16 Apr 2021 05:58:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1618577893; cv=none; d=google.com; s=arc-20160816; b=lOA/tj5dwfTQeQcQz/JCJVCUbANO7QJQo63Y+DrGUVrpaEz8G7dFq9pfcBtB/4hlVl FGpegFS49XopW9yBI9aNufJFAgty/FZaos/Pl6ff2cTTzd/1quLmzdIN8l04PT3eSpIl p36QuLMaBDws5a6qcx0JQ9zHoiMvlkGiAa50aJbc2pceGS64jMy4HyVSywWJ7Q13sBNG qUFKTvR0joF5IU6/wjm8HNWuuv/yMzWFzcXSe67TiF63OwdCFRZ5t3veCVKBgCCngdKB 3PZBfm5lkFqp3vITkAZjm7VhCIU/bSDwdHRbXIogXVWWhavMaeTtcspxeXP4qx6Rg1xP phYw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:to:from:dkim-signature; bh=96TYDlQdybM0m+DEQEqTHwPBImoJWyOIeRh+ehRk6W0=; b=yQnoLVLSmHyLRRkfjOFhny8B/U7DnRvoa8d9I0PqFxsEQxxjuewm7SyBXIBSq+YW7V B3B2nWTiMlh0d6tR4zQtKX1xzMIgoUurph0Q9UX7Xt+pwe/ZFE7IpADxXMqLC+6SrL43 oF/C9TUWaMCrTM3E536FgqszTL3SOK+WN8unS1sBiRbHipgDXCsXCIAItrHLlmp04KhR XyUKmdfs34o/tVCm08ITaO1kQzKREOHy++gSNXJhkyx2p2+cRxxTz4XYdoha7Mv6LdIv i2vfqOqxvTno1MgTZwBj+DXCJyofSE4AegeJ61rGh4jU5zOzbz2S1zHaTgfO3+uYtLoA S2dw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=q3uZ4Ibf; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id q17si4552504ejj.672.2021.04.16.05.57.43; Fri, 16 Apr 2021 05:58:13 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=q3uZ4Ibf; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235196AbhDPMvr (ORCPT + 99 others); Fri, 16 Apr 2021 08:51:47 -0400 Received: from mail.kernel.org ([198.145.29.99]:35714 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234914AbhDPMvr (ORCPT ); Fri, 16 Apr 2021 08:51:47 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 40ED361107 for ; Fri, 16 Apr 2021 12:51:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1618577482; bh=XwhwI5O70I53p3eCI1cotWC82Z5xWdWRLUHkXEBNUUg=; h=From:To:Subject:Date:From; b=q3uZ4Ibfl1XpnuPzzsNYybk02s4OOyvKdzc+u0DafHjBxbccr6FO/C8LsIu+QhhDC 138e1z/PqYTc17UrUm4aH30X184em+V7KphVZAK/dxiO99xhCTU+7S37pIJkpUF3lj RCmiEjiOAt/0ThR5+MIWrza0EEP5EQzogudVjk/4PvUjTTimaXfZJyUlq3pL+38LpF x6uf64dqwew+2hzbwwAd9SCzWwGVJxeLMg15sxThvUeICmks23v0wojP/hkQJpzQqS zHe6vAoWt+f2J5BrCG2sgwf9HR6C9bRg+EYxkw0XQA1CIhbvlOTCIpUuBAoveqAUQ9 u9t3poqpZFq6g== From: trondmy@kernel.org To: linux-nfs@vger.kernel.org Subject: [PATCH 1/3] NFSv4.x: Don't return NFS4ERR_NOMATCHING_LAYOUT if we're unmounting Date: Fri, 16 Apr 2021 08:51:19 -0400 Message-Id: <20210416125121.5753-1-trondmy@kernel.org> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org From: Trond Myklebust If the NFS super block is being unmounted, then we currently may end up telling the server that we've forgotten the layout while it is actually still in use by the client. In that case, just assume that the client will soon return the layout anyway, and so return NFS4ERR_DELAY in response to the layout recall. Fixes: 58ac3e59235f ("NFSv4/pnfs: Clean up nfs_layout_find_inode()") Signed-off-by: Trond Myklebust --- fs/nfs/callback_proc.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/fs/nfs/callback_proc.c b/fs/nfs/callback_proc.c index f7786e00a6a7..ed9d580826f5 100644 --- a/fs/nfs/callback_proc.c +++ b/fs/nfs/callback_proc.c @@ -137,12 +137,12 @@ static struct inode *nfs_layout_find_inode_by_stateid(struct nfs_client *clp, list_for_each_entry_rcu(lo, &server->layouts, plh_layouts) { if (!pnfs_layout_is_valid(lo)) continue; - if (stateid != NULL && - !nfs4_stateid_match_other(stateid, &lo->plh_stateid)) + if (!nfs4_stateid_match_other(stateid, &lo->plh_stateid)) continue; - if (!nfs_sb_active(server->super)) - continue; - inode = igrab(lo->plh_inode); + if (nfs_sb_active(server->super)) + inode = igrab(lo->plh_inode); + else + inode = ERR_PTR(-EAGAIN); rcu_read_unlock(); if (inode) return inode; @@ -176,9 +176,10 @@ static struct inode *nfs_layout_find_inode_by_fh(struct nfs_client *clp, continue; if (nfsi->layout != lo) continue; - if (!nfs_sb_active(server->super)) - continue; - inode = igrab(lo->plh_inode); + if (nfs_sb_active(server->super)) + inode = igrab(lo->plh_inode); + else + inode = ERR_PTR(-EAGAIN); rcu_read_unlock(); if (inode) return inode; -- 2.30.2