Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp29679pxv; Wed, 7 Jul 2021 19:26:29 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzaUNYNuAKy6dijF3/5Arvv30C+0FsDejA0blhGddHmpySBNk5cvgxHbzPi3oneuiZyCH46 X-Received: by 2002:a17:906:c41a:: with SMTP id u26mr27917305ejz.270.1625711189121; Wed, 07 Jul 2021 19:26:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1625711189; cv=none; d=google.com; s=arc-20160816; b=oiC4eOTErgiZJMNqsd8eJ5xYlt9JaFu0FgC3IhjcO52aX82U0GchtuNq81+SMXxuwJ aKJrrTL9ecGuG9z4IJikQsQu/LkkIB5NMa/zqr1zOH2m5sCTYTj258IlJxU7UM2rEFLs JzxdX0gtSSHHbJx3vIzQyR84ydA+Iewdxuhc3xb2ZAQcbUt7AiitNP/8rzjqUuTW2n3x bo9AI5NJYayPitrkEIR4x+xw2qRSDI3cJAusXCNFHXpMLocvSbM4NjUcF6Zb/xB7urEg Gxu0WfLWvDvo/MPfaLNp8B1tSXE93OjWatzOcG1KkR3imCDV/sUoBwVCg0Y87JmItWQI KQqg== 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=oC2oNnodMzH5Dor1aA07wTE767v/l1ehGrWtAauosx8=; b=U9QajhxgfqIVIS2xtgQIDTKdA6AB+Bk/vR0vG7eYs0ZkA1dRqoC8kdkz9Ip4HG+Yuk ftiu0dVlxk8Dcmq2xD19OaHJku5iZnNA0U/ltE97T3U2QD40a61HYg+SL6ZApN7dTo/u cP4GA/GSIybryvjFVjdaHAGwpGX1DX2QS0toziHK6Iph0Cs21yNUppiNTruJOuif0zk/ Y9P8xTsnB6+ZzMKy8QZ8QgWcGkg3Xh0jGEU+RtHThxCHuW9WhuBhZlEDvcYwgU94spwE q3k9JzNAtwt3IF1k16cwFTTtD8BuNBf1KAhehuiseRYY0mczBl0FRYep1m/+lOjAyREl 9nQg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="KesqN5/n"; 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 6si802556eje.471.2021.07.07.19.26.06; Wed, 07 Jul 2021 19:26:29 -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="KesqN5/n"; 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 S230372AbhGHC0A (ORCPT + 99 others); Wed, 7 Jul 2021 22:26:00 -0400 Received: from mail.kernel.org ([198.145.29.99]:37050 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230404AbhGHC0A (ORCPT ); Wed, 7 Jul 2021 22:26:00 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 451F861CCC for ; Thu, 8 Jul 2021 02:23:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1625710999; bh=gTAHYSESYb1Xfe24W5vDIWRBvnLepJKioyVwSu9XLAc=; h=From:To:Subject:Date:From; b=KesqN5/nyM+CgglAFyPHEUKOd50dm1y91o0VUm78bSYG1HcpEdP1ugdsrJJ56v/Le KrC0yF3nX++095PNnyzYnEgh3JqAC8Y9ErP+rWWW++nWwWqvDvKpGfwsGvyIEpJkjo xe6rRnzL3cQI7kuKy8xgLucHcFKYlDApR3h8Fpa3RFfE6okvCQjsBE5t9ff0mpZJi+ oZv25N5HFxvJVK2mNidk4x3x5pkKNqm7jjXllT6BNCPMUYdQdSK3U5XXn6ScfhOR2q mVjZkP8ZKkjZ6KUbFVmX+LV6EmGbQ8PflJZ2qHHSnfh6qcIUUOFVYFr57XoDKmieZF FjZ6j0vrLRzxw== From: trondmy@kernel.org To: linux-nfs@vger.kernel.org Subject: [PATCH 1/2] NFS: Label the dentry with a verifier in nfs_link(), nfs_symlink() Date: Wed, 7 Jul 2021 22:23:17 -0400 Message-Id: <20210708022318.71364-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 After the success of an operation such as link(), or symlink(), we expect to add the dentry back to the dcache as an ordinary positive dentry. However in NFS, unless it is labelled with the appropriate verifier for the parent directory state, then nfs_lookup_revalidate will end up discarding that dentry and forcing a new lookup. The fix is to ensure that we relabel the dentry appropriately on success. Signed-off-by: Trond Myklebust --- fs/nfs/dir.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c index 1a6d2867fba4..baca036f3890 100644 --- a/fs/nfs/dir.c +++ b/fs/nfs/dir.c @@ -2352,6 +2352,8 @@ int nfs_symlink(struct user_namespace *mnt_userns, struct inode *dir, return error; } + nfs_set_verifier(dentry, nfs_save_change_attribute(dir)); + /* * No big deal if we can't add this page to the page cache here. * READLINK will get the missing page from the server if needed. @@ -2385,6 +2387,7 @@ nfs_link(struct dentry *old_dentry, struct inode *dir, struct dentry *dentry) d_drop(dentry); error = NFS_PROTO(dir)->link(inode, dir, &dentry->d_name); if (error == 0) { + nfs_set_verifier(dentry, nfs_save_change_attribute(dir)); ihold(inode); d_add(dentry, inode); } -- 2.31.1