]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw_file: use fh_hook::is_linked() to check residence 14169/head
authorMatt Benjamin <mbenjamin@redhat.com>
Tue, 28 Feb 2017 20:49:06 +0000 (15:49 -0500)
committerMatt Benjamin <mbenjamin@redhat.com>
Wed, 29 Mar 2017 20:19:44 +0000 (16:19 -0400)
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 <mbenjamin@redhat.com>
(cherry picked from commit c0aa515f8d8c57ec5ee09e3b60df3cac60453c40)

src/rgw/rgw_file.cc

index 036ebb67c8b22ab1cccedf2a1964f18f5da48e21..64afa6a4ec6d308767995403ec6391eddaf98cbc 100644 (file)
@@ -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;