]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
kclient: ignore ICONTENT on root inode
authorSage Weil <sage@newdream.net>
Fri, 20 Jun 2008 00:07:43 +0000 (17:07 -0700)
committerSage Weil <sage@newdream.net>
Fri, 20 Jun 2008 05:55:37 +0000 (22:55 -0700)
src/kernel/dir.c
src/kernel/inode.c

index cd9c518b4d94bc18e34ba0a121c28b9986c080df..b5a158672112d540f5a2a0cf7c521ca7e9d7a108 100644 (file)
@@ -646,10 +646,11 @@ static int ceph_dentry_revalidate(struct dentry *dentry, struct nameidata *nd)
        dout(10, "d_revalidate %p '%.*s' inode %p\n", dentry,
             dentry->d_name.len, dentry->d_name.name, dentry->d_inode);
 
-       if (ceph_inode(dir)->i_version == dentry->d_time &&
+       if (ceph_ino(dir) != 1 &&  /* ICONTENT useless on root inode */
+           ceph_inode(dir)->i_version == dentry->d_time &&
            ceph_inode_lease_valid(dir, CEPH_LOCK_ICONTENT)) {
-               dout(20, "dentry_revalidate %p have ICONTENT on dir inode %p\n",
-                    dentry, dir);
+               dout(20, "dentry_revalidate %p %lu ICONTENT on dir %p %llu\n",
+                    dentry, dentry->d_time, dir, ceph_inode(dir)->i_version);
                return 1;
        }
        if (ceph_dentry_lease_valid(dentry)) {
index f824b024b795fe22c54fd8704d69b23c73fdd164..0ce3bbb09a1eb48d6a3e41c68854007462ce2908 100644 (file)
@@ -540,6 +540,7 @@ void ceph_update_dentry_lease(struct dentry *dentry,
                 */
                struct inode *dir = dentry->d_parent->d_inode;
                dentry->d_time = ceph_inode(dir)->i_version;
+               dout(20, " no lease, setting d_time to %lu\n", dentry->d_time);
                return;
        }