From 7555480fe20b5f542d0d7082aa685f9f7738b238 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 7 Mar 2008 14:44:40 -0800 Subject: [PATCH] client: fixed lookup on missing dentry --- src/kernel/dir.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/kernel/dir.c b/src/kernel/dir.c index 581207926434d..cc5e84cc8c280 100644 --- a/src/kernel/dir.c +++ b/src/kernel/dir.c @@ -269,6 +269,7 @@ int ceph_request_lookup(struct super_block *sb, struct dentry *dentry) kfree(path); if (IS_ERR(req)) return PTR_ERR(req); + dget(dentry); req->r_last_dentry = dentry; /* use this dentry in fill_trace */ err = ceph_mdsc_do_request(mdsc, req); ceph_mdsc_put_request(req); @@ -298,11 +299,9 @@ static struct dentry *ceph_dir_lookup(struct inode *dir, struct dentry *dentry, */ err = ceph_request_lookup(dir->i_sb, dentry); - if (err == -ENOENT) { - dout(10, "ENOENT, adding a null dentry\n"); - ceph_touch_dentry(dentry); + if (err == -ENOENT) d_add(dentry, NULL); - } else if (err < 0) + else if (err < 0) return ERR_PTR(err); return NULL; -- 2.39.5