Received: by 2002:ad5:4acb:0:0:0:0:0 with SMTP id n11csp1188153imw; Wed, 13 Jul 2022 15:28:00 -0700 (PDT) X-Google-Smtp-Source: AGRyM1vy5tHVQskI9gihRqrUMgntO+CdhKIQG63WRX/UVRQuvlFCZPRJA6qgeDTetb3rDoXlIcjw X-Received: by 2002:a17:90b:38c5:b0:1ef:a7ad:ebb9 with SMTP id nn5-20020a17090b38c500b001efa7adebb9mr12896365pjb.110.1657751280741; Wed, 13 Jul 2022 15:28:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1657751280; cv=none; d=google.com; s=arc-20160816; b=Fpd25tHUOegNLfjhOmRUFRJh7Bo79qgPPQvgkIMJowwd2xHNewTGYZRk3LMhh8wMkx r512lGwT6/BZXekn//ZLQgOPnqv3b8HTtfjWxgvjV1FRKrn3S7uClgdiN3TWLdOD62w1 pvvmXAhAfXYoylgjht4VI6jLEc3Xi6kY6yfStKHAebzdVgjFtueWfCa7K6kD8kPVqfUz Oit/332D8j/HQpDtqY+G5sr/iDBu+oFIH1MqE8+sYjT3xVZM7lUSL51VifTpXZZpSazo gb7CmiL29Oqal3+y83z/GWt5jlBdc1Zl9tARSZX98L6rLRskJueSUBEvzJ2GPxGG9Lmy Hvuw== 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=vL3C8J3y5jz1NBtIMa5qVXXfLiADPkr1E8nt8K7U8Y0=; b=dLPXO5Ek8MMmsbo3jWe/Pk4EwW4OC/PjFZ1slRS9b5wDRVNJY2pkf50ps2JZjt8JYd 0Zn7SQac7jub0P3IaRk0ING9uWjn31CRx/VBajCP2tTcXmrzJTGBoOQYE2LFGbbp5p1+ lkvRR6KJGwopnr7XSC7awRYWAoF5Pq2l3FWxYIZPYu51uj4mMVrIDAFQvOds4JtLv2Ae U8cDW5uXlhlcQ09xnPrKE/oH8BKsCQqshJ5EISiWxAmgxQH+LDxc2AXq+DIp05G5Xnoy lVBgh4iv1yR2XvzRrpV+b4mjXtvCUPlzvLX0pjvBZpx9IqiSBhOkY+0FE+C5KyTBYmR+ Y7Pg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=mPX96Mfz; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id y18-20020a63fa12000000b0040c799657f4si19066269pgh.577.2022.07.13.15.26.45; Wed, 13 Jul 2022 15:28:00 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=mPX96Mfz; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S230026AbiGMWNj (ORCPT + 99 others); Wed, 13 Jul 2022 18:13:39 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51342 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229601AbiGMWNi (ORCPT ); Wed, 13 Jul 2022 18:13:38 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5ADB413C for ; Wed, 13 Jul 2022 15:13:37 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 03EE660C96 for ; Wed, 13 Jul 2022 22:13:37 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2F381C34114 for ; Wed, 13 Jul 2022 22:13:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1657750416; bh=SvgT7qDjm6HAl5vBx8gVNZhnOY1BOFDokIlw83yI1zM=; h=From:To:Subject:Date:From; b=mPX96Mfz1k2CtdHI9fU5yLpBqDUcq8s8Cw1LWOGCOx4ZOwHWaZIA0vOYqYYNRkgCF Nl498c5GBOBlxz3+Akmtk8AbMdhgy+BpgR6uiqKGIT7lQHOkxOOSISgyVzGlFWgX+Y azUYSS9QQnFc6Cybj4/Qqis8nfs2uk3S9HIdxajJg+fDRfflvljJSSZmtY85oDy6ZW gxQqA3tmIED0ZHgq0GgF4JgDXrRiO3NyB2MBN1iOV+/aldPFKnNJNCcuceK3FTVJv8 adLGkQm7bWJxA2kdDpQty1qak0y/JXLkA9v+IB/Jg/eSOdF6gons003AdA2NW9iLaK 0QWlEinFxtu1w== From: trondmy@kernel.org To: linux-nfs@vger.kernel.org Subject: [PATCH] NFS: Fix case insensitive renames Date: Wed, 13 Jul 2022 18:06:49 -0400 Message-Id: <20220713220649.1038411-1-trondmy@kernel.org> X-Mailer: git-send-email 2.36.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-7.7 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham 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 From: Trond Myklebust For filesystems that are case insensitive and case preserving, we need to be able to rename from one case folded variant of the filename to another. Currently, if we have looked up the target filename before the call to rename, then we may have a hashed dentry with that target name in the dcache, causing the vfs to optimise away the rename. To avoid that, let's drop the target dentry, and leave it to the server to optimise away the rename if that is the correct thing to do. Signed-off-by: Trond Myklebust --- fs/nfs/dir.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c index 0c4e8dd6aa96..d9d277d7fa84 100644 --- a/fs/nfs/dir.c +++ b/fs/nfs/dir.c @@ -1739,6 +1739,10 @@ nfs_do_lookup_revalidate(struct inode *dir, struct dentry *dentry, goto out_bad; } + if ((flags & LOOKUP_RENAME_TARGET) && d_count(dentry) < 2 && + nfs_server_capable(dir, NFS_CAP_CASE_INSENSITIVE)) + goto out_bad; + if (nfs_verifier_is_delegated(dentry)) return nfs_lookup_revalidate_delegated(dir, dentry, inode); -- 2.36.1