From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 577EF402447 for ; Wed, 10 Jun 2026 13:55:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781099737; cv=none; b=lGiryCL6wdWZLSJzPwq/6OflypbiwgBSnxnnCDNAS0Y7t2ph75IqszPDFWykGJ16OyVirxGvBP1Z+i3FBnKNe5zmnU8PcLSOWYl7BjL0GPPlNFsPVIzbNkYa2QcE2tFhOFuueYe/az0cbMtbtsngBO2lfS8/6g9fo6lxd/LhUGo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781099737; c=relaxed/simple; bh=sgVCmEXJ05yqMvmvKs4K15bBV1ue0Tix/Vri7Qtc2Gg=; h=MIME-Version:Date:From:To:Cc:Message-Id:In-Reply-To:References: Subject:Content-Type; b=EzxoGzZQqFiuMI0SMuqKCj68EPFScNorN6ktGvr3Njt2syrTvR2VY85iunpUSOLYbl6KGGNsAUOASP5n79O+z+dAgUpJD8vjVm1WU9kYkGTyTehDmlgMGZh1w2UN+npAGALW3qSS+tpvQMgiD7sg79AQEzbRzJ0G/32vSLhM62w= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=fpPtx8HR; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="fpPtx8HR" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A29A61F0089D; Wed, 10 Jun 2026 13:55:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1781099736; bh=EIptf/kZR7ZgZomdxqsw/QNW2ZGT5E521CikG/0aXYc=; h=Date:From:To:Cc:In-Reply-To:References:Subject; b=fpPtx8HRIc6J8ZD7Xf6Oa3CAcSCF0fKVx4Mk3ilZB35MdVCj0W1xmW9YFmDYINwSa 6izgC0FGSSWssNwsreVZnO5x3gnEw0+kxDCzezfds6k3iMVCTJM4gln+YoeQbkHFfx 6nlcdOmYQcDXEhLFJfx4C4nC9YTvfFtOxvUd/2w2A6GnF3iA3rNkhaKH4bxkrC1/hF egWfVx9GxFVebJw1RTpt1viNoJFzLvhSlMIOF1zzWL1M4BS0GDDm9vOLtgPbP3VFe2 DFy1u9w4jRKlKjr4vWZMXu1KHvg43Gqs9f7HgJ7dNMgOGlEu2c83//IGYa8ABbEq6U IvzHQy1m1Z+eA== Received: from phl-compute-10.internal (phl-compute-10.internal [10.202.2.50]) by mailfauth.phl.internal (Postfix) with ESMTP id CEE81F4007A; Wed, 10 Jun 2026 09:55:34 -0400 (EDT) Received: from phl-imap-15 ([10.202.2.104]) by phl-compute-10.internal (MEProxy); Wed, 10 Jun 2026 09:55:34 -0400 X-ME-Sender: X-ME-Proxy-Cause: dmFkZTGIkxF1Ha5m1RRadaxFl3ZQpD0qbpPfE6qIRzD29tBEXVylIvHGFe9yCz/+Fdx5kt jkNvjrM3wSTkgWWqOWFEbJf0juO/IPtWe7tY71MzGbC1ONlCunxHyz3cm7UCcUiNtUU7/W BHZcRHyiyuHUIjjze+JTBWwZsJgvItMWWqxW/GQuWnTWQbrhjJesKIlEjBiekt3cAIA6W6 +7B4GCyzF7pbzvm6TZPRupHSnGuuVyWtyrml0WTSlZM3Othe4S2bfbAmMnTdsXc2iwuvAW Mf5ICCFFHoL7fo8QNmKyrQqQ7np4xRb+TM48fXPpPWFRcozbN5CLBTM6ruEKVAkg1OgdA6 aKv0do7+9MRDkhNzkpeUTTyMfFFWN5N9JimtU6tXUnl47Z78cupN+IK988u9xlWngvfttH DQ2Q9U1YAUg1qbpOdknOgNTT2v4TtvaIbnMXvkra+6FrAjmcG0+aRdJzTGNBb5gtc/CYwz uzShJGpm/VKSocP3Mz/bxEQgVVtP4a9nwHXpxCKVw502N/seBCPGNJtArjYLQogTK4K+Ff VRTm3BGZVTIFDPRdjNbKYZx3pfmD5dqUo1CpmJX9AqqdSZuqBJM1IXvZbNny7DS2lcjSAr kSOmLrSBW90RtPN1aNp0c171kQrR6wsrwAmoC2zgU2p1B1LuFtFrYDoh6PTg X-ME-Proxy: Feedback-ID: ifa6e4810:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id A6E88780070; Wed, 10 Jun 2026 09:55:34 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ThreadId: AK594_Pyz8Yk Date: Wed, 10 Jun 2026 09:55:14 -0400 From: "Chuck Lever" To: "Jeff Layton" , "Chuck Lever" , NeilBrown , "Olga Kornievskaia" , "Dai Ngo" , "Tom Talpey" , "Trond Myklebust" , "Anna Schumaker" , "Jonathan Corbet" , "Shuah Khan" Cc: "Steven Rostedt" , "Alexander Aring" , "Amir Goldstein" , "Jan Kara" , "Alexander Viro" , "Christian Brauner" , "Calum Mackay" , linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, linux-nfs@vger.kernel.org Message-Id: <6f0dab5e-dd60-4a82-b04f-4e3b168ce137@app.fastmail.com> In-Reply-To: References: <20260522-dir-deleg-v5-0-542cddfad576@kernel.org> <20260522-dir-deleg-v5-5-542cddfad576@kernel.org> Subject: Re: [PATCH v5 05/21] nfsd: update the fsnotify mark when setting or removing a dir delegation Content-Type: text/plain Content-Transfer-Encoding: 7bit On Wed, Jun 10, 2026, at 9:49 AM, Jeff Layton wrote: > On Mon, 2026-06-08 at 12:38 -0400, Chuck Lever wrote: >> > diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c >> > index 2a34ba457b74..efbc99f0a965 100644 >> > --- a/fs/nfsd/nfs4state.c >> > +++ b/fs/nfsd/nfs4state.c >> > @@ -1246,6 +1246,38 @@ static void >> > nfsd4_finalize_deleg_timestamps(struct nfs4_delegation *dp, struct f >> > nfsd_update_cmtime_attr(f, ATTR_ATIME); >> > } >> > >> > +static void nfsd_fsnotify_recalc_mask(struct nfsd_file *nf) >> >> Since nfsd_fsnotify_recalc_mask() takes a single struct nfsd_file >> as an argument, should this function reside in fs/nfsd/filecache.c >> instead? The question might reflect my misunderstanding of the >> new function's purpose. >> > > The only caller is in this file, so by keeping it here we can make it > static. I can change that if you'd prefer it be in filecache.c. My thought was that the new function is accessing and modifying the internals of an nfsd_file -- it contains local knowledge about how the filecache manages fs notifications. >> > +{ >> > + struct inode *inode = file_inode(nf->nf_file); >> > + u32 lease_mask, set = 0, clear = 0; >> > + struct fsnotify_mark *mark; >> > + >> > + /* This is only needed when adding or removing dir delegs */ >> > + if (!S_ISDIR(inode->i_mode) || !nf->nf_mark) >> > + return; >> > + >> > + /* Set up notifications for any ignored delegation events */ >> > + lease_mask = inode_lease_ignore_mask(inode); >> > + mark = &nf->nf_mark->nfm_mark; >> > + >> > + if (lease_mask & FL_IGN_DIR_CREATE) >> > + set |= FS_CREATE | FS_MOVED_TO; >> > + else >> > + clear |= FS_CREATE | FS_MOVED_TO; >> > + >> > + if (lease_mask & FL_IGN_DIR_DELETE) >> > + set |= FS_DELETE | FS_MOVED_FROM; >> > + else >> > + clear |= FS_DELETE | FS_MOVED_FROM; >> > + >> > + if (lease_mask & FL_IGN_DIR_RENAME) >> > + set |= FS_RENAME; >> > + else >> > + clear |= FS_RENAME; >> > + >> > + fsnotify_modify_mark_mask(mark, set, clear); >> > +} >> > + >> > static void nfs4_unlock_deleg_lease(struct nfs4_delegation *dp) >> > { >> > struct nfs4_file *fp = dp->dl_stid.sc_file; -- Chuck Lever