]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
kclient: check d_inode before clearing its COMPLETE flag.
authorSage Weil <sage@newdream.net>
Tue, 3 Mar 2009 20:27:31 +0000 (12:27 -0800)
committerSage Weil <sage@newdream.net>
Tue, 3 Mar 2009 20:27:31 +0000 (12:27 -0800)
src/kernel/dir.c

index a8adf784f9b23a9061c61ee74d3a9e997f2efc7d..768ba8d93bb4e1b9697a2aa95860faba8e5a6a86 100644 (file)
@@ -665,15 +665,17 @@ static int ceph_dentry_revalidate(struct dentry *dentry, struct nameidata *nd)
 static void ceph_dentry_release(struct dentry *dentry)
 {
        struct ceph_dentry_info *di = ceph_dentry(dentry);
-       
+       struct inode *parent_inode = dentry->d_parent->d_inode;
+
        if (di) {
                ceph_put_mds_session(di->lease_session);
                kfree(di);
                dentry->d_fsdata = NULL;
        }
-
-       dout(10, " clearing %p complete (d_release)\n", dentry->d_parent);
-       ceph_i_clear(dentry->d_parent->d_inode, CEPH_I_COMPLETE|CEPH_I_READDIR);
+       if (parent_inode) {
+               dout(10, " clearing %p complete (d_release)\n", parent_inode);
+               ceph_i_clear(parent_inode, CEPH_I_COMPLETE|CEPH_I_READDIR);
+       }
 }
 
 static int ceph_snapdir_dentry_revalidate(struct dentry *dentry,