Received: by 2002:a05:6358:45e:b0:b5:b6eb:e1f9 with SMTP id 30csp927309rwe; Fri, 26 Aug 2022 18:35:09 -0700 (PDT) X-Google-Smtp-Source: AA6agR7OmvEyr2lfSzeyyCwQ9ewmSt/cCZNmcSV9iLjCAaoBnxMbGr1AlHv5fkbrBU7R1NZWZU/f X-Received: by 2002:a63:4621:0:b0:429:f162:555e with SMTP id t33-20020a634621000000b00429f162555emr5280649pga.63.1661564109726; Fri, 26 Aug 2022 18:35:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661564109; cv=none; d=google.com; s=arc-20160816; b=RiN2fUryZWlTvcUubosqjj70oeWXf/TBGn9Q920qnx0LmJ5iuW1A2MU93ZvO4+vEeV lbxNDSad5aMwwT1QRyVyBF8iHRCF9pTRc0iXHoKPu0JDIYRz6UnKyRRZZD1VtUL/gxhl OOnu2We/gTu+Com5R/H/ijp6MbnyPwsztZYQ+Vde0OlnCM1M8yJYxZ4vjTy0qTUxstGi 4KHIbzRJse56WuDaSuHmQPYSK/+DXpMq5fxVRElkAxj8vxG7WfcqqNGwYe0YdMb5liW3 tLjkIQ6IyjeQgN+cPphYYiFzak1QFovQU9rNsu1EB4xGhtwJcXRb+aRsROkJOLu0fjEq Ic3g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:in-reply-to:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :dkim-signature; bh=ZASlgiaYVcXmZuWHYLlAifB7Jl2t5z03ci8JKpJlphc=; b=Yv5dwH7rQLYVdQgovnV8urrCvqmO13aiMoLYZ9hH4O94fifWGXBFGc+Rp7fX7We3V7 IhqyJppIntgs2a6/ycIIul5sJYl2FlkSRoE/s3C4k2NVPGbVS3hqeTusEL9ZB+67/6ZB UT9jVvr6A3sWoXtB4Mz5B06ZuegXbWthE4WO7J7wi1nhpHEiDDc4ozYToboW/6yEu0ZJ 6WZeOI/Zt1kK96YULZT+jr0g3j26uljOBDOTlDtoTXyNpEx54AssXPAmXfspuTdcn/YK eY8xtEg5GcqRA2S5DsBKsw1UmL4MY0eUAuaFJOrHAD6ayiUo243zjZlRUrCZAnCYuQjx Kmww== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linux.org.uk header.s=zeniv-20220401 header.b="iubq/OY2"; 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=zeniv.linux.org.uk Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id s5-20020a63d045000000b0042814932da7si2942650pgi.403.2022.08.26.18.34.44; Fri, 26 Aug 2022 18:35:08 -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=@linux.org.uk header.s=zeniv-20220401 header.b="iubq/OY2"; 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=zeniv.linux.org.uk Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243146AbiH0BVZ (ORCPT + 99 others); Fri, 26 Aug 2022 21:21:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59950 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230416AbiH0BVY (ORCPT ); Fri, 26 Aug 2022 21:21:24 -0400 Received: from zeniv.linux.org.uk (zeniv.linux.org.uk [IPv6:2a03:a000:7:0:5054:ff:fe1c:15ff]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 81931E42F0; Fri, 26 Aug 2022 18:21:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=linux.org.uk; s=zeniv-20220401; h=Sender:In-Reply-To:Content-Type: MIME-Version:References:Message-ID:Subject:Cc:To:From:Date:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=ZASlgiaYVcXmZuWHYLlAifB7Jl2t5z03ci8JKpJlphc=; b=iubq/OY2mnqYT6clYoEo3Vmj/Y /W5hvBJ+gKvXiWyxElb86XOVk+SIEex7KG819Esq8FP+J545g3z1AnDxkc8jiNIECW8lMcD70M6LA TLZxv/WDbu/xClT1GK/9zmGj+AN5XcsfuuJ1gPF8jwOcni1U+JQ8siMXu9uT+bji4pVyCrzOQFvTf QXC7N0lMPbx9tH/htXd6evA1THuJJ2mJgYtEJw1yWe0c4TLNdZv39zZHicJhiycLW7G5OT1WHeaMd 8nIqfC3ovsfWmvWr+/52hNl3iyvl8zN4FeI5cRDC5xvEn86NVvv+yOgB60oGSk1ElAaKwqa2OZqj3 7mxUtPQw==; Received: from viro by zeniv.linux.org.uk with local (Exim 4.95 #2 (Red Hat Linux)) id 1oRkVc-008q0K-SU; Sat, 27 Aug 2022 01:21:12 +0000 Date: Sat, 27 Aug 2022 02:21:12 +0100 From: Al Viro To: NeilBrown Cc: Linus Torvalds , Daire Byrne , Trond Myklebust , Chuck Lever , Linux NFS Mailing List , linux-fsdevel@vger.kernel.org, LKML Subject: Re: [PATCH 09/10] VFS: add LOOKUP_SILLY_RENAME Message-ID: References: <166147828344.25420.13834885828450967910.stgit@noble.brown> <166147984377.25420.5747334898411663007.stgit@noble.brown> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <166147984377.25420.5747334898411663007.stgit@noble.brown> Sender: Al Viro X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,SPF_HELO_NONE,SPF_NONE,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 On Fri, Aug 26, 2022 at 12:10:43PM +1000, NeilBrown wrote: > When performing a "silly rename" to avoid removing a file that is still > open, we need to perform a lookup in a directory that is already locked. > > In order to allow common functions to be used for this lookup, introduce > LOOKUP_SILLY_RENAME which affirms that the directory is already locked > and that the vfsmnt is already writable. > > When LOOKUP_SILLY_RENAME is set, path->mnt can be NULL. As > i_op->rename() doesn't make the vfsmnt available, this is unavoidable. > So we ensure that a NULL ->mnt isn't fatal. This one is really disgusting. Flag-dependent locking is a pretty much guaranteed source of PITA and "magical" struct path is, again, asking for trouble. You seem to be trying for simpler call graph and you end up paying with control flow that is much harder to reason about.