From 4bab554b904a72fb985ed304cc553faaea3f820c Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 3 Mar 2009 14:26:28 -0800 Subject: [PATCH] kclient: fix fmode ref count buf We weren't taking an fmode reference on the root dir. This would cause a WARN if our root caps were allowed to expire and we had to ropen them. Duplicated wonky r_fmode conditional from later fill_inode() call in fill_trace(). --- src/kernel/inode.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/kernel/inode.c b/src/kernel/inode.c index 3c225559b67ed..a8ad3ce59355c 100644 --- a/src/kernel/inode.c +++ b/src/kernel/inode.c @@ -862,7 +862,10 @@ int ceph_fill_trace(struct super_block *sb, struct ceph_mds_request *req, err = fill_inode(in, &rinfo->trace_in[0], rinfo->trace_numd ? rinfo->trace_dir[0] : NULL, - session, req->r_request_started, -1); + session, req->r_request_started, + (rinfo->trace_numd == 0 && + le32_to_cpu(rinfo->head->result) == 0) ? + req->r_fmode : -1); if (err < 0) return err; if (unlikely(sb->s_root == NULL)) -- 2.39.5