From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 B320A3FE657; Wed, 29 Apr 2026 13:41:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777470095; cv=none; b=Ot3OBr5E4Duy7pDZLKgQYUAv6Pj34qNSbR3C+wi0aJ17LYaAlAzabmD8yschlrZdhqE/dtl7TbYOe1LC7wXuEM07jpljZqWyH9IkjF8KZ1kqMViEAjJph3KdHJ3tU/LmZnWMUJu+5kg2c4RwqzM+0oBiEhbDSS0IRADRPj+fLcA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777470095; c=relaxed/simple; bh=AbmPDiLMo35LZVw+xaDp8x+ViqIl5t2Bms1xbcVtE5U=; h=MIME-Version:Date:From:To:Cc:Message-Id:In-Reply-To:References: Subject:Content-Type; b=CXvzoI2CWoF0PqdHpSJ1g8BhPzmOAlMZYbd4UraLZ6oEfpSs1vfmmtuEv/dG1POUN+XzAAdc5VKo/miNCR/IGf6NP6f5BFlkYSrUotw2OlgpZGweP8gt0TBILZWBnf4wX309A1XfqKCQ7B5ovg7hkvNeQ9vJHKsa4pAZp2MBpjs= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=YZquV9jf; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="YZquV9jf" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 59ABAC4AF09; Wed, 29 Apr 2026 13:41:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1777470095; bh=AbmPDiLMo35LZVw+xaDp8x+ViqIl5t2Bms1xbcVtE5U=; h=Date:From:To:Cc:In-Reply-To:References:Subject:From; b=YZquV9jfYH5w/wC+soXVf/JNKI1K/XIJ7I5XCZeIS8sbSDkkcAS5x2bjz/5lBH2wx CttusplS+qBnECTLYYroEskGaCL0cn9jlR8axH5hyNqLqaAHfZ7J/IA3rhde03+lrd odfq7O2lJzSJYgCKohpnkQHgDjyt7IQy9gyjFWrt8F3c8QICs83ZAGM1uA8wBLOZhN JE0SWAWeZcHsV0W/mkgOCU2tHtwT+9b0YkPTguPMOIzHBj9Rwhbb+rTIuUKlcH3prB 70KsjJEuKx16+kvJzKXvy3irgRCsD3xJct0cGHe7SdGu8nHDSektshBNW2VZvFD33c uUwrWimLZP1Dg== Received: from phl-compute-10.internal (phl-compute-10.internal [10.202.2.50]) by mailfauth.phl.internal (Postfix) with ESMTP id 460EDF40068; Wed, 29 Apr 2026 09:41:33 -0400 (EDT) Received: from phl-imap-15 ([10.202.2.104]) by phl-compute-10.internal (MEProxy); Wed, 29 Apr 2026 09:41:33 -0400 X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdekgeehkecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug hrpefoggffhffvvefkjghfufgtgfesthejredtredttdenucfhrhhomhepfdevhhhutghk ucfnvghvvghrfdcuoegtvghlsehkvghrnhgvlhdrohhrgheqnecuggftrfgrthhtvghrnh epjeevhfduheeltedvjefhjeevgffhleegjeevvdfgudeuffefgedtjeeuhfeiudeknecu ffhomhgrihhnpehkvghrnhgvlhdrohhrghenucevlhhushhtvghrufhiiigvpedtnecurf grrhgrmhepmhgrihhlfhhrohhmpegthhhutghklhgvvhgvrhdomhgvshhmthhprghuthhh phgvrhhsohhnrghlihhthidqudeifeegleelleehledqfedvleekgeegvdefqdgtvghlpe epkhgvrhhnvghlrdhorhhgsehfrghsthhmrghilhdrtghomhdpnhgspghrtghpthhtohep vdegpdhmohguvgepshhmthhpohhuthdprhgtphhtthhopehnvghilhessghrohifnhdrnh grmhgvpdhrtghpthhtohepmhgrthhhihgvuhdruggvshhnohihvghrshesvghffhhitghi ohhsrdgtohhmpdhrtghpthhtoheprghlvgigrdgrrhhinhhgsehgmhgrihhlrdgtohhmpd hrtghpthhtoheprghmihhrjeefihhlsehgmhgrihhlrdgtohhmpdhrtghpthhtoheprhho shhtvgguthesghhoohgumhhishdrohhrghdprhgtphhtthhopegrnhhnrgeskhgvrhhnvg hlrdhorhhgpdhrtghpthhtohepsghrrghunhgvrheskhgvrhhnvghlrdhorhhgpdhrtghp thhtohepjhhlrgihthhonheskhgvrhhnvghlrdhorhhgpdhrtghpthhtohepmhhhihhrrg hmrghtsehkvghrnhgvlhdrohhrgh X-ME-Proxy: Feedback-ID: ifa6e4810:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id 198F0780070; Wed, 29 Apr 2026 09:41:33 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface Precedence: bulk X-Mailing-List: linux-doc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ThreadId: AJifn_5JDXrR Date: Wed, 29 Apr 2026 09:41:12 -0400 From: "Chuck Lever" To: "Jeff Layton" , "Alexander Viro" , "Christian Brauner" , "Jan Kara" , "Chuck Lever" , "Alexander Aring" , "Steven Rostedt" , "Masami Hiramatsu" , "Mathieu Desnoyers" , "Jonathan Corbet" , "Shuah Khan" , NeilBrown , "Olga Kornievskaia" , "Dai Ngo" , "Tom Talpey" , "Trond Myklebust" , "Anna Schumaker" , "Amir Goldstein" Cc: "Calum Mackay" , linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-doc@vger.kernel.org, linux-nfs@vger.kernel.org Message-Id: In-Reply-To: <20260428-dir-deleg-v3-0-5a0780ba9def@kernel.org> References: <20260428-dir-deleg-v3-0-5a0780ba9def@kernel.org> Subject: Re: [PATCH v3 00/28] vfs/nfsd: add support for CB_NOTIFY callbacks in directory delegations Content-Type: text/plain Content-Transfer-Encoding: 7bit On Tue, Apr 28, 2026, at 3:09 AM, Jeff Layton wrote: > Re-posting the set per Christian's request. The only difference in this > version is a small error handling fix in alloc_init_dir_deleg(). The old > version could crash since release_pages() can't handle an array with > NULL pointers in it. > > ---------------------------------8<------------------------------------ > > This patchset builds on the directory delegation work we did a few > months ago, to add support for CB_NOTIFY callbacks for some events. In > particular, creates, unlinks and renames. The server also sends updated > directory attributes in the notifications. With this support, the client > can register interest in a directory and get notifications about changes > within it without losing its lease. > > The series starts with patches to allow the vfs to ignore certain types > of events on directories. nfsd can then request these sorts of > delegations on directories, and then set up inotify watches on the > directory to trigger sending CB_NOTIFY events. > > This has mainly been tested with pynfs, with some new testcases that > I'll be posting soon. They seem to work fine with those tests, but I > don't think we'll want to merge these until we have a complete > client-side implementation to test against. > > Signed-off-by: Jeff Layton > --- > Changes in v3: > - Fix error handling in alloc_init_dir_deleg() > - Link to v2: > https://lore.kernel.org/r/20260416-dir-deleg-v2-0-851426a550f6@kernel.org > > Changes in v2: > - Fix __break_lease handling with different lease types on flc_lease > list > - Add FSNOTIFY_EVENT_RENAME data type to properly handle > cross-directory rename events > - Display fsnotify mask symbolically in tracepoints > - New tracepoint in fsnotify() > - Recalc fsnotify mask after unlocking lease instead of before > - Don't notify client that is making the changes > - After sending CB_NOTIFY, requeue if new events came in while running > - Document removal of NFS4_VERIFIER_SIZE/NFS4_FHSIZE from UAPI headers > - Properly release nfsd_dir_fsnotify_group on server shutdown > - Link to v1: > https://lore.kernel.org/r/20260407-dir-deleg-v1-0-aaf68c478abd@kernel.org > > --- > Jeff Layton (28): > filelock: pass current blocking lease to > trace_break_lease_block() rather than "new_fl" > filelock: add support for ignoring deleg breaks for dir change > events > filelock: add a tracepoint to start of break_lease() > filelock: add an inode_lease_ignore_mask helper > fsnotify: new tracepoint in fsnotify() > fsnotify: add fsnotify_modify_mark_mask() > fsnotify: add FSNOTIFY_EVENT_RENAME data type > nfsd: check fl_lmops in nfsd_breaker_owns_lease() > nfsd: add protocol support for CB_NOTIFY > nfs_common: add new NOTIFY4_* flags proposed in RFC8881bis > nfsd: allow nfsd to get a dir lease with an ignore mask > nfsd: update the fsnotify mark when setting or removing a dir > delegation > nfsd: make nfsd4_callback_ops->prepare operation bool return > nfsd: add callback encoding and decoding linkages for CB_NOTIFY > nfsd: use RCU to protect fi_deleg_file > nfsd: add data structures for handling CB_NOTIFY > nfsd: add notification handlers for dir events > nfsd: add tracepoint to dir_event handler > nfsd: apply the notify mask to the delegation when requested > nfsd: add helper to marshal a fattr4 from completed args > nfsd: allow nfsd4_encode_fattr4_change() to work with no export > nfsd: send basic file attributes in CB_NOTIFY > nfsd: allow encoding a filehandle into fattr4 without a svc_fh > nfsd: add a fi_connectable flag to struct nfs4_file > nfsd: add the filehandle to returned attributes in CB_NOTIFY > nfsd: properly track requested child attributes > nfsd: track requested dir attributes > nfsd: add support to CB_NOTIFY for dir attribute changes > > Documentation/sunrpc/xdr/nfs4_1.x | 264 ++++++++++++++- > fs/attr.c | 2 +- > fs/locks.c | 118 +++++-- > fs/namei.c | 31 +- > fs/nfsd/filecache.c | 70 +++- > fs/nfsd/nfs4callback.c | 60 +++- > fs/nfsd/nfs4layouts.c | 5 +- > fs/nfsd/nfs4proc.c | 17 + > fs/nfsd/nfs4state.c | 551 ++++++++++++++++++++++++++++---- > fs/nfsd/nfs4xdr.c | 323 +++++++++++++++++-- > fs/nfsd/nfs4xdr_gen.c | 601 ++++++++++++++++++++++++++++++++++- > fs/nfsd/nfs4xdr_gen.h | 20 +- > fs/nfsd/state.h | 72 ++++- > fs/nfsd/trace.h | 23 ++ > fs/nfsd/xdr4.h | 5 + > fs/nfsd/xdr4cb.h | 12 + > fs/notify/fsnotify.c | 5 + > fs/notify/mark.c | 29 ++ > fs/posix_acl.c | 4 +- > fs/xattr.c | 4 +- > include/linux/filelock.h | 54 +++- > include/linux/fsnotify.h | 8 +- > include/linux/fsnotify_backend.h | 21 ++ > include/linux/nfs4.h | 127 -------- > include/linux/sunrpc/xdrgen/nfs4_1.h | 291 ++++++++++++++++- > include/trace/events/filelock.h | 38 ++- > include/trace/events/fsnotify.h | 51 +++ > include/trace/misc/fsnotify.h | 35 ++ > include/uapi/linux/nfs4.h | 2 - > 29 files changed, 2519 insertions(+), 324 deletions(-) > --- > base-commit: f4d71dd7fd9cec357c32431fa55c107b96008312 > change-id: 20260325-dir-deleg-339066dd1017 > > Best regards, > -- > Jeff Layton For the series: Acked-by: Chuck Lever -- Chuck Lever