From d74a7c10fe08ae884a1f552e321b8cb26969bce4 Mon Sep 17 00:00:00 2001 From: "Yan, Zheng" Date: Wed, 20 Jan 2016 22:22:01 +0800 Subject: [PATCH] client: properly trim unlinked inode Client should trim inode from its cache when receiving a cap message with nlink == 0. But the corresponding code has a bug, it does nothing when inode's nlink is already 0. Fixes: #13903 Signed-off-by: Yan, Zheng --- src/client/Client.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/client/Client.cc b/src/client/Client.cc index 5412e0c0190f..13c3233faf5c 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -4658,7 +4658,7 @@ void Client::handle_cap_grant(MetaSession *session, Inode *in, Cap *cap, MClient in->gid = m->head.gid; } bool deleted_inode = false; - if ((issued & CEPH_CAP_LINK_EXCL) == 0 && in->nlink != (int32_t)m->head.nlink) { + if ((issued & CEPH_CAP_LINK_EXCL) == 0) { in->nlink = m->head.nlink; if (in->nlink == 0 && (new_caps & (CEPH_CAP_LINK_SHARED | CEPH_CAP_LINK_EXCL))) -- 2.47.3