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 6DE4D3385B5; Tue, 4 Nov 2025 17:38:14 +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=1762277894; cv=none; b=Zl+kTSFI7qM20+N+zNX4mugulcBGRpWOsdZh3Owr/N52x6bjeYJpUEhAwu2CMUW2lmMqVvpjkJzKAP0L0pE+T+ldDyf1TD3k2pbvolj2gxi/onUpI4fV9l4hQdFXK4McoHJRMAB5LRHzlkaHZ+wu/I/oFXCdrBIt0f+idbgsR2M= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762277894; c=relaxed/simple; bh=2YkhSmbyR/ykbq3wvF4/ragaZLbIWVFj3cwVxNUZdOg=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=Wznt+7awMAPpVSSsgyQvO4eeS7QYUveMakPLbvcz0MgMTMmTDtOlIuRHwHVYN5S4C/tJBgdfGfNsYyMluf54ikrIbIEPgSjur/4fZvNZGE3Vz7kS1JooMxAJLCnl6pKJ8GYG6noSy8P39mYEjSa0lHgHdBUt2Nv/lixqtffbniw= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=jD3Bcrqt; 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="jD3Bcrqt" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4F483C4CEF7; Tue, 4 Nov 2025 17:38:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1762277893; bh=2YkhSmbyR/ykbq3wvF4/ragaZLbIWVFj3cwVxNUZdOg=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=jD3BcrqtkZePKnxYHwmwZYrukhL924KK+XvIkgGVxtLZF3G8EhI0HztRHNkLk/RrZ xZ3icwfEYP+6rywLt1s/PR6mPSxnyDflICEeZSxJBxj5TYePRraT3XHf0MFJQuRqkh JxMr0DKypTdkQDdKbx83cWecgDQt8BKyVL11TM/532eR31nMoxm0uZgdx+t/WXyJK3 0hVRs8djr+qJgAUGI7SgH8Ni7jAFnlCY3oW2W0QPu15rvN90eQU1+Urrluh2iy5DA2 GnkHhgnocol6ztqH+u39zUu0PykXgUXPI7PIcjYad+ztfV9y8rO/x206FGCMBbLPrP bjd9t8CVd1NFg== Date: Tue, 4 Nov 2025 17:38:04 +0000 From: Simon Horman To: Jeff Layton Cc: Miklos Szeredi , Alexander Viro , Christian Brauner , Jan Kara , Chuck Lever , Alexander Aring , Trond Myklebust , Anna Schumaker , Steve French , Paulo Alcantara , Ronnie Sahlberg , Shyam Prasad N , Tom Talpey , Bharath SM , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , David Howells , Tyler Hicks , NeilBrown , Olga Kornievskaia , Dai Ngo , Amir Goldstein , Namjae Jeon , Steve French , Sergey Senozhatsky , Carlos Maiolino , Kuniyuki Iwashima , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-nfs@vger.kernel.org, linux-cifs@vger.kernel.org, samba-technical@lists.samba.org, netfs@lists.linux.dev, ecryptfs@vger.kernel.org, linux-unionfs@vger.kernel.org, linux-xfs@vger.kernel.org, netdev@vger.kernel.org Subject: Re: [PATCH v4 10/17] vfs: make vfs_create break delegations on parent directory Message-ID: References: <20251103-dir-deleg-ro-v4-0-961b67adee89@kernel.org> <20251103-dir-deleg-ro-v4-10-961b67adee89@kernel.org> Precedence: bulk X-Mailing-List: linux-unionfs@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20251103-dir-deleg-ro-v4-10-961b67adee89@kernel.org> On Mon, Nov 03, 2025 at 07:52:38AM -0500, Jeff Layton wrote: > In order to add directory delegation support, we need to break > delegations on the parent whenever there is going to be a change in the > directory. > > Add a delegated_inode parameter to struct createdata. Most callers just > leave that as a NULL pointer, but do_mknodat() is changed to wait for a > delegation break if there is one. > > Signed-off-by: Jeff Layton > --- > fs/namei.c | 26 +++++++++++++++++--------- > include/linux/fs.h | 2 +- > 2 files changed, 18 insertions(+), 10 deletions(-) > > diff --git a/fs/namei.c b/fs/namei.c ... > @@ -4359,6 +4362,8 @@ static int may_mknod(umode_t mode) > static int do_mknodat(int dfd, struct filename *name, umode_t mode, > unsigned int dev) > { > + struct delegated_inode delegated_inode = { }; > + struct createdata cargs = { }; > struct mnt_idmap *idmap; > struct dentry *dentry; > struct path path; > @@ -4383,18 +4388,16 @@ static int do_mknodat(int dfd, struct filename *name, umode_t mode, > switch (mode & S_IFMT) { > case 0: > case S_IFREG: > - { > - struct createdata args = { .idmap = idmap, > - .dir = path.dentry->d_inode, > - .dentry = dentry, > - .mode = mode, > - .excl = true }; > - > - error = vfs_create(&args); > + cargs.idmap = idmap, > + cargs.dir = path.dentry->d_inode, > + cargs.dentry = dentry, > + cargs.delegated_inode = &delegated_inode; > + cargs.mode = mode, > + cargs.excl = true, Hi Jeff, I don't think it makes any difference to the generated code. But I think it would be more intuitive to use ';' rather than ',' at the end of the lines immediately above. > + error = vfs_create(&cargs); > if (!error) > security_path_post_mknod(idmap, dentry); > break; > - } > case S_IFCHR: case S_IFBLK: > error = vfs_mknod(idmap, path.dentry->d_inode, > dentry, mode, new_decode_dev(dev)); ...