From: Sage Weil Date: Thu, 18 Jul 2019 16:09:47 +0000 (-0500) Subject: osd/PG: fix cleanup of pgmeta-like objects on PG deletion X-Git-Tag: v13.2.7~216^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=9904a09dd2b93bc883ba91a03d1362850656c0ff;p=ceph.git osd/PG: fix cleanup of pgmeta-like objects on PG deletion If an object has an empty 'name' field, it "looks" like a pgmeta object, and the PG cleanup code was skipping it. However, we were letting these objects get created. Fix by only skipping *our* pgmeta object. If there are other pgmeta-like objects in the PG collection, clean them up. Fixes: https://tracker.ceph.com/issues/38724 Signed-off-by: Sage Weil (cherry picked from commit a0f48db5cbfc48761eeac0daa259fecbaa573969) # Conflicts: # src/osd/PG.cc - location of this code is do_delete_work in master, _delete_some in n --- diff --git a/src/osd/PG.cc b/src/osd/PG.cc index 29955551aa2a..f1d8bc088a71 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -6590,9 +6590,13 @@ void PG::_delete_some(ObjectStore::Transaction *t) OSDriver::OSTransaction _t(osdriver.get_transaction(t)); int64_t num = 0; for (auto& oid : olist) { - if (oid.is_pgmeta()) { + if (oid == pgmeta_oid) { continue; } + if (oid.is_pgmeta()) { + osd->clog->warn() << info.pgid << " found stray pgmeta-like " << oid + << " during PG removal"; + } int r = snap_mapper.remove_oid(oid.hobj, &_t); if (r != 0 && r != -ENOENT) { ceph_abort();