From 20cb76a59793cc587a4a008a70301df1f015ce09 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Wed, 5 Mar 2008 16:45:36 -0800 Subject: [PATCH] client: take references in fill_trace and drop them later (normally in put_request) --- src/kernel/client.c | 1 + src/kernel/inode.c | 4 +++- src/kernel/mds_client.c | 4 ++++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/kernel/client.c b/src/kernel/client.c index 368a09b4d877e..8c76029d3f3d7 100644 --- a/src/kernel/client.c +++ b/src/kernel/client.c @@ -121,6 +121,7 @@ static int open_root_inode(struct ceph_client *client, struct ceph_mount_args *a dout(30, "open_root_inode success, root dentry is %p.\n", client->sb->s_root); ceph_mdsc_put_request(req); + iput(mnt_inode); return 0; out2: diff --git a/src/kernel/inode.c b/src/kernel/inode.c index f4f6572c83e78..0fd1a7f62b7c9 100644 --- a/src/kernel/inode.c +++ b/src/kernel/inode.c @@ -244,8 +244,10 @@ int ceph_fill_trace(struct super_block *sb, struct ceph_mds_reply_info *prinfo, else dput(dn); - if (lastinode) + if (lastinode) { *lastinode = in; + igrab(in); + } return err; } diff --git a/src/kernel/mds_client.c b/src/kernel/mds_client.c index 87aeee2ff93a6..fe9943974c61b 100644 --- a/src/kernel/mds_client.c +++ b/src/kernel/mds_client.c @@ -329,6 +329,10 @@ void ceph_mdsc_put_request(struct ceph_mds_request *req) } if (req->r_session) put_session(req->r_session); + if (req->r_last_inode) + iput(req->r_last_inode); + if (req->r_last_dentry) + dput(req->r_last_dentry); drop_request_session_attempt_refs(req); kfree(req); } -- 2.39.5