From: Matt Benjamin Date: Tue, 28 Feb 2017 20:49:06 +0000 (-0500) Subject: rgw_file: use fh_hook::is_linked() to check residence X-Git-Tag: v10.2.7~7^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F14169%2Fhead;p=ceph.git rgw_file: use fh_hook::is_linked() to check residence Previously we assumed that !deleted handles were resident--there is an observed case where a !deleted handle is !linked. Since we currently use safe_link mode, an is_linked() check is available, and exhaustive. Fixes: http://tracker.ceph.com/issues/19111 Signed-off-by: Matt Benjamin (cherry picked from commit c0aa515f8d8c57ec5ee09e3b60df3cac60453c40) --- diff --git a/src/rgw/rgw_file.cc b/src/rgw/rgw_file.cc index 036ebb67c8b2..64afa6a4ec6d 100644 --- a/src/rgw/rgw_file.cc +++ b/src/rgw/rgw_file.cc @@ -782,8 +782,8 @@ namespace rgw { lsubdout(fs->get_context(), rgw, 17) << __func__ << " " << *this << dendl; - /* if !deleted, then object still in fh_cache */ - if (! deleted()) { + /* remove if still in fh_cache */ + if (fh_hook.is_linked()) { fs->fh_cache.remove(fh.fh_hk.object, this, FHCache::FLAG_LOCK); } return true;