]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - fs/ceph/inode.c
Merge branches 'work.namei', 'work.dcache' and 'work.iov_iter' into for-linus
[linux.git] / fs / ceph / inode.c
index ef4d046473256009843b6b4c82e1b5b1e451b02d..284f0d807151e4d28655e0087fa727164b701e64 100644 (file)
@@ -1023,16 +1023,17 @@ static void update_dentry_lease(struct dentry *dentry,
        long unsigned half_ttl = from_time + (duration * HZ / 2) / 1000;
        struct inode *dir;
 
-       /* only track leases on regular dentries */
-       if (dentry->d_op != &ceph_dentry_ops)
-               return;
-
        spin_lock(&dentry->d_lock);
        dout("update_dentry_lease %p duration %lu ms ttl %lu\n",
             dentry, duration, ttl);
 
        /* make lease_rdcache_gen match directory */
        dir = d_inode(dentry->d_parent);
+
+       /* only track leases on regular dentries */
+       if (ceph_snap(dir) != CEPH_NOSNAP)
+               goto out_unlock;
+
        di->lease_shared_gen = ceph_inode(dir)->i_shared_gen;
 
        if (duration == 0)
@@ -1202,12 +1203,7 @@ int ceph_fill_trace(struct super_block *sb, struct ceph_mds_request *req,
                                        err = -ENOMEM;
                                        goto done;
                                }
-                               err = ceph_init_dentry(dn);
-                               if (err < 0) {
-                                       dput(dn);
-                                       dput(parent);
-                                       goto done;
-                               }
+                               err = 0;
                        } else if (d_really_is_positive(dn) &&
                                   (ceph_ino(d_inode(dn)) != vino.ino ||
                                    ceph_snap(d_inode(dn)) != vino.snap)) {
@@ -1561,12 +1557,6 @@ int ceph_readdir_prepopulate(struct ceph_mds_request *req,
                                err = -ENOMEM;
                                goto out;
                        }
-                       ret = ceph_init_dentry(dn);
-                       if (ret < 0) {
-                               dput(dn);
-                               err = ret;
-                               goto out;
-                       }
                } else if (d_really_is_positive(dn) &&
                           (ceph_ino(d_inode(dn)) != vino.ino ||
                            ceph_snap(d_inode(dn)) != vino.snap)) {