Received: by 2002:a05:6a10:17d3:0:0:0:0 with SMTP id hz19csp2593174pxb; Mon, 19 Apr 2021 09:08:05 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzfw4iHwLwspviv0hCSz3N6yHpsmZUHnwFEMD7NApItR4POAmw1k8wt9sjRRYgWmnZZ5IZt X-Received: by 2002:a05:6402:4245:: with SMTP id g5mr26676063edb.306.1618848484977; Mon, 19 Apr 2021 09:08:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1618848484; cv=none; d=google.com; s=arc-20160816; b=Q7D3wDGc5epjwzT+6ZDVzJLl97RBr363i2MXjFCLZ1HGeIO+v/Y30ttOh2g9349i4n LXLIeQ37c9KoxJ/5DSDeS04mo96yJvGhCSaieLDQv5600Zf+d5DaIe06b37ArhPLhjlC pg/psfbxvuedJXHwJOhk6s8X9qWujtWVYMSLG+fCVfp5DsJJS5pWm7DH4UV6a6yUm/xT cqQgzr6holp/9Eb+HVaba+gQHkJbwcik18hhAQGLOYMy1MvskG1lhyJd339WIZSYVWWb ve6wiJ+z3IfqBqQvncK+e9nJp2h6cv2OONd1o3aab7utnXEnPfz7SyEcwRNFt/DCnyGE bbjg== 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=Z09n80WdcRvS3FdLJ5NQUwgdv5k9mu1jxrycXXs/73s=; b=PZk2cFvAhBWTfMoXpCVfTn9yKVH/FRbqAgQiJNiiEC5k6EoW9wXdqAyDtCLjAymkpu dOHf98a5UeIA6TWdAMk6BfLG1d8gJ4aU12v1mtT0lq4QXJ2+vcckWpNKCHkgiI57if7o ZcLlCXm8uOHbtTp50zpz+mkBEPD0FchjSrUtLTKBv+PYB4tBi3eDMhvlQ5r4BGJHYRkY MW4vjSzBmH4uy7mGgj36wbxIlP6PZ5lEcdYc3m8OfQ3A2DI+Qgj1dirtkoAH31Q7WqyI y285QmzGcTOiwUdiGQ+ccVkTfB3Q+gYLq1keyq8Nl5zml4aQWqkBx+wBALNJ0XAjd0ht 15sw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=YVq6BlkB; 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 n11si12395385edi.273.2021.04.19.09.07.32; Mon, 19 Apr 2021 09:08:04 -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=YVq6BlkB; 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 S240270AbhDSOsa (ORCPT + 99 others); Mon, 19 Apr 2021 10:48:30 -0400 Received: from mail.kernel.org ([198.145.29.99]:37830 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240158AbhDSOsa (ORCPT ); Mon, 19 Apr 2021 10:48:30 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 72C2360FEF for ; Mon, 19 Apr 2021 14:48:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1618843680; bh=T97p+6570ccrtjZwCyLc7/y2oqyNhjOf8D40hUaSDX8=; h=From:To:Subject:Date:From; b=YVq6BlkBJHdDMdrOPIV/cNnFqhbCd/nNzsyvI0VGMpz4GfPsWa3o3OKa2ft37ax0U py02zP3OkA3BhrpcsMzWTUj+C5DnckpYtUqdUleNylN15q7OMuoz2SaMBHrgBbubdA wHUI+fO6ov6HbrB34kwhAVnHxoprmjF1dsFEDvm+uP2z0oLW3Nobvsmq99H03uGYyV LFnDkDVftbkHPxVOgt82G3BQlI/E36mghz+xofB9ZUwuOtDbFbX4HLPt6lhaNP06AF gD8jV5XMW1UuUx63e3AKo+kOfeCq9n7HqJRbG/Vx6E0MzXxN6MMc2AH1lzAl+jcqKy gr+/wML42s5hg== From: trondmy@kernel.org To: linux-nfs@vger.kernel.org Subject: [PATCH v2 1/4] NFSv4.x: Don't return NFS4ERR_NOMATCHING_LAYOUT if we're unmounting Date: Mon, 19 Apr 2021 10:47:56 -0400 Message-Id: <20210419144759.41900-1-trondmy@kernel.org> X-Mailer: git-send-email 2.31.1 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.31.1