From a693dd5cc70630ec0691f0b429c877ab28ff3607 Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh-Weinraub Date: Wed, 19 Mar 2008 23:31:27 +0200 Subject: [PATCH] client: instantiate inode for new link --- src/kernel/dir.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/kernel/dir.c b/src/kernel/dir.c index a2445ef89f433..5223e4c970ef9 100644 --- a/src/kernel/dir.c +++ b/src/kernel/dir.c @@ -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; } -- 2.39.5