]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
Merge commit 'ed94f87c2b123241ae5644cf82327e2da653adb6'
authorIlya Dryomov <idryomov@gmail.com>
Tue, 4 May 2021 14:07:43 +0000 (16:07 +0200)
committerIlya Dryomov <idryomov@gmail.com>
Tue, 4 May 2021 14:07:43 +0000 (16:07 +0200)
Conflicts:
fs/ceph/dir.c

1  2 
fs/ceph/caps.c
fs/ceph/dir.c
fs/ceph/export.c
fs/ceph/inode.c
fs/cifs/inode.c
fs/nfs/inode.c
include/linux/fs.h

diff --cc fs/ceph/caps.c
Simple merge
diff --cc fs/ceph/dir.c
index 5624fae7a603dad12f84e3de7f11a11fdada5ad2,f7a790ed62c48226380953ea5809f3886cbbc269..570662dec3fe1dc5454b59db6b863134437f6019
@@@ -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);
 -                      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;
 +
+               if (IS_ERR(inode))
++                      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;
  }
  
  /*
Simple merge
diff --cc fs/ceph/inode.c
Simple merge
diff --cc fs/cifs/inode.c
Simple merge
diff --cc fs/nfs/inode.c
Simple merge
Simple merge