From: Ilya Dryomov Date: Tue, 4 May 2021 14:07:43 +0000 (+0200) Subject: Merge commit 'ed94f87c2b123241ae5644cf82327e2da653adb6' X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=0e1c1526416f1d4e181ad517f555ec2e87fd3496;p=users%2Fjedix%2Flinux-maple.git Merge commit 'ed94f87c2b123241ae5644cf82327e2da653adb6' Conflicts: fs/ceph/dir.c --- 0e1c1526416f1d4e181ad517f555ec2e87fd3496 diff --cc fs/ceph/dir.c index 5624fae7a603d,f7a790ed62c48..570662dec3fe1 --- a/fs/ceph/dir.c +++ b/fs/ceph/dir.c @@@ -676,17 -674,18 +676,19 @@@ struct dentry *ceph_handle_snapdir(stru /* .snap dir? */ if (err == -ENOENT && ceph_snap(parent) == CEPH_NOSNAP && - strcmp(dentry->d_name.name, - fsc->mount_options->snapdir_name) == 0) { + strcmp(dentry->d_name.name, fsc->mount_options->snapdir_name) == 0) { + struct dentry *res; struct inode *inode = ceph_get_snapdir(parent); + + if (IS_ERR(inode)) - return PTR_ERR(inode); - dout("ENOENT on snapdir %p '%pd', linking to snapdir %p\n", - dentry, dentry, inode); - BUG_ON(!d_unhashed(dentry)); - d_add(dentry, inode); - err = 0; ++ return ERR_CAST(inode); + res = d_splice_alias(inode, dentry); + dout("ENOENT on snapdir %p '%pd', linking to snapdir %p. Spliced dentry %p\n", + dentry, dentry, inode, res); + if (res) + dentry = res; } - return err; + return dentry; } /*