[PATCH 27/53] smb/client: use d_splice_alias() in atomic_open
NeilBrown <[email protected]> Fri, 13 Mar 2026 08:12:14 +1100
| Newsgroups | org.kernel.vger.ecryptfs,dev.linux.lists.gfs2,org.infradead.lists.linux-um,org.kernel.vger.ceph-devel,org.kernel.vger.linux-cifs,org.kernel.vger.linux-efi,org.kernel.vger.linux-ext4,org.kernel.vger.linux-fsdevel,org.kernel.vger.linux-kernel,org.kernel.vger.linux-nfs,org.kernel.vger.linux-trace-kernel,org.kernel.vger.linux-unionfs,org.kernel.vger.linux-xfs,org.kvack.linux-mm |
|---|---|
| Message-ID | <[email protected]> |
From: NeilBrown <[email protected]> atomic_open can be called with a hashed-negative dentry or an in-lookup dentry. Rather than d_drop() and d_add() we can use d_splice_alias() which keeps the dentry hashed - important for proposed locking changes. Signed-off-by: NeilBrown <[email protected]> --- fs/smb/client/dir.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/fs/smb/client/dir.c b/fs/smb/client/dir.c index cecbc0cce5c5..361a20987927 100644 --- a/fs/smb/client/dir.c +++ b/fs/smb/client/dir.c @@ -439,8 +439,7 @@ static int cifs_do_create(struct inode *inode, struct dentry *direntry, unsigned goto out_err; } - d_drop(direntry); - d_add(direntry, newinode); + d_splice_alias(newinode, direntry); out: free_dentry_path(page); -- 2.50.0.107.gf914562f5916.dirty