]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
client: instantiate inode for new link
authorYehuda Sadeh-Weinraub <yehuda@yehuda.infit.com>
Wed, 19 Mar 2008 21:31:27 +0000 (23:31 +0200)
committerYehuda Sadeh-Weinraub <yehuda@yehuda.infit.com>
Fri, 21 Mar 2008 19:28:19 +0000 (21:28 +0200)
src/kernel/dir.c

index a2445ef89f433c0ec41d9f781b5f98ae1f340811..5223e4c970ef90d15de0ad79450fed7199b8e46f 100644 (file)
@@ -439,16 +439,18 @@ static int ceph_dir_link(struct dentry *old_dentry, struct inode *dir,
                                       path,
                                       ceph_ino(dir->i_sb->s_root->d_inode),
                                       oldpath);
-       kfree(oldpath);
-       kfree(path);
-       if (IS_ERR(req)) {
-               d_drop(dentry);
-               return PTR_ERR(req);
-       }
+       
        err = ceph_mdsc_do_request(mdsc, req);
+
        ceph_mdsc_put_request(req);
-       if (err < 0)
+
+       if (!err) {
+               igrab(old_dentry->d_inode);
+               inc_nlink(old_dentry->d_inode);
+               d_instantiate(dentry, old_dentry->d_inode);
+       } else
                d_drop(dentry);
+       
        return err;
 }